1. Demander à un utilisateur un nombre compris entre 0 et 10.
2. Ecrire une fonction qui écrit dans un fichier: chiffre + " " + nombre de fois que le chiffre a été entré par l'utilisateur.
3. Ecrire une fonction qui lit ce fichier et redemande à l'utilisateur un chiffre
4. Mettre à jour le fichier.
J'ai donc réalisé le programme suivant :
def ex2() :
donnees = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0}
nombre = int(input("\nEntrer un nombre compris entre 0 et 10 : "))
def ecriture() :
print(donnees[nombre], nombre) #vérif
donnees[nombre] = donnees[nombre] + 1
my_file = open("donnees.txt", "w")
for i in range(1,10) :
my_file.write(str(i) + " " + str(donnees[i]) + "\n")
my_file.close()
def lecture() :
my_file = open("donnees.txt", "r")
for line in my_file :
line = line.strip().split(" ")
donnees[line[0]] = line[1]
my_file.close()
global nombre
nombre = int(input("\nEntrer un nombre compris entre 0 et 10 (entrer 11 pour vous arrêtez) : "))
while nombre != 11 :
print(nombre) #vérif
ecriture()
lecture()
Or, le programme ne prend pas en compte le changement de la variable "nombre" dans la dernière fonction. Il garde le même nombre et donc le dictionnaire est faussé. De même, lorsque j'entre "11", le programme ne s'arrête pas et continue.
Tu as mal structuré ton programme. Tu devrais avoir les fonctions lecture et ecriture qui ne sont pas à l'intérieur d'une autre fonction. Tu dois passer en paramètre au minimum le dictionnaire à la fonction d'écriture qui le convertira avant de l'écrire. Et dans la fonction de lecture, tu devras convertir la ligne en dictionnaire et le retourner au programme appelant. Tu devrais également avoir une fonction saisie qui saisit les nombres et les place dans le dictionnaire et retourne ce dernier à l'appelant. Ton programme principal aura l'allure suivante: + génération d'un dictionnaire de base + saisie des nombrres avec le dictionnaire de base + écriture du fichier + lecture du fichier + saisie à nouveau avec un dictionnaire modifié + nouvelle écriture
Le Tout est souvent plus grand que la somme de ses parties.
Problème variables et fonctions Python
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.