Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème variables et fonctions Python

    10 novembre 2022 à 21:45:08

    Bonjour à tous, 

    Je dois réaliser l'exercice suivant en python : 

    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.

    • Partager sur Facebook
    • Partager sur Twitter
      11 novembre 2022 à 4:27:03

      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
      • Partager sur Facebook
      • Partager sur Twitter

      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.
      • Editeur
      • Markdown