Bonjour, j'ai absolument besoin de votre aide, il me faut faire un prg en python qui calcule la moyenne des nombres contenus dans un fichier "nombre.txt". Pour ce faire j'ai fait le prg suivant :
monfichier=open("votrechemind'accèsaufichier/nombre.txt", mode='w', encoding='utf8')
monfichier.writelines("5,10,17,8.5,16,12.5")
monfichier.close()

monfichier=open('votrechemind'accèsaufichier/nombre.txt', mode='r')
L=monfichier.readline()
def Moyenne(liste):
somme = 0
moyenne=0
nbr_elements=len(liste)
for i in liste:
somme = somme + i
moyenne=somme/nbr_elements
print(moyenne)
return
Moyenne(L)
monfichier.close()


Pouvez vous m'aider svp car mon prg ne marche pas et je n'arrive pas à résoudre mon erreur. Merci par avance


Sagot :

Du coup, j'ai apporté les corrections.

  • Tu peux ne pas préciser l'encodage, c'est bien de le faire, mais pour des nombres, l'encodage par défaut fonctionne bien (qui est de l'UTF-8 d'ailleurs).
  • Le mode, c'est bien de choisir le plus adapté comme t'as fait mais pour éviter de refaire une nouvelle variable qui va prendre de la mémoire, tu peux directement mettre le mode w+ qui autorise l'écriture et la lecture.
  • T'as fait une ligne où ça fait len(liste), sauf que ça ne fonctionne pas vraiment car quand tu lis la ligne du fichier, ça renvoie une chaîne de caractère classique. Faut donc la convertir en tableau, et il y a la fonction split() pour ça (voir le fichier joint).
  • Et là où se situe le problème que tu as rencontré, le principal, c'est que y'a une erreur de type "unsupported operand type" ce qui signifie que t'as essayé d'additionner une chaîne de caractère avec des nombres, ça il aime pas, du coup, comme est sûr qu'on a que des nombres dans le fichier, on peut le convertir avec une fonction float(), et bien en float car on peut avoir des nombres à virgule. Et puis, ce qu'il manquait pour corriger cette erreur c'était comme j'ai dit plus haut, de boucler sur un tableau avec les éléments et non la chaîne de caractère directement.

Voilà globalement, j'ai pas fait grand chose, ce que t'as fait est plutôt pas mal, c'est juste que tu t'es emmêlé dans les types (j'ai fait en Python 3.9 mais normalement pour ce programme, ça devrait pas poser de problème). Si t'as une question, n'hésite pas à me contacter.

PS : j'ai dû mettre le fichier Python au format txt pour que je puisse l'uploader mais c'est évidemment un .py.

View image CRYPTOGRAMMERSA