Bonjour, pour mes cours de python je dois faire une moyenne de notes contenu dans un fichier .txt, pour cela j'ai donc récupérer les notes en str dans une liste, j'ai enlever les \n puis j'ai transformer chacun des nombres en float, j'ai ensuite essayer d'additionner tout ces nombres pour ensuite faire la moyenne? Malheureusement, je vois un message d'erreur "float object is not iterable "
Merci beaucoup a tout ceux qui m'aiderait ! Bonne journée et au revoir.
- Edité par GerardDupond 19 novembre 2021 à 16:38:37
Merci de colorer votre code à l'aide du bouton Code
Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: python;">Votre code ici</pre>.
Merci de modifier votre message d'origine en fonction.
Manque de Politesse
Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?
Bonjour. str.strip ne modifie pas la chaîne, mais en renvoie une version modifiée. Par conséquent ta ligne 10 n'a aucun impact mais le float peut très bien se débrouiller avec un '\n' en fin de chaîne.
D'après la ligne 11, number est un float. Or, en utilisant help(sum) dans un interpréteur on se rend compte que sum prends comme argument une liste (ou n'importe quel objet qui se comporte comme une liste).
somme = 0
with open('notes.txt','r') as f:
for line in f:
somme += float(line[:-1])
print(somme)
Merci pour cette solution mais mon exercice est de stocké les notes dans une liste et non de les additionner directement, auriez-vous une solution pour cela? Merci d'avance
Voici une solution que je trouve plus de niveau débutant à mon sens,
def mean_values_from_file(path):
my_sum = 0.0
number_of_values = 0
with open(path, 'r') as f:
for ind, line in enumerate(f, start=1):
if line:
value = float(line.rstrip())
my_sum += value
number_of_values = ind
if number_of_values:
return my_sum / number_of_values
return None
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Sauf qu'il vaut 100 fois mieux juste incrémenter number_of_values au lieu d'utiliser ind puisque une seule ligne vide dans ton fichier rends le résultat incorrect.
def get_mean(file_path: str) -> float or None:
with open(...) as f:
nums = [float(l) for l in f if l]
try:
return sum(nums)/len(nums)
except ZeroDivisionError:
return None
Sauf qu'il vaut 100 fois mieux juste incrémenter number_of_values au lieu d'utiliser ind puisque une seule ligne vide dans ton fichier rends le résultat incorrect.
def get_mean(file_path: str) -> float or None:
with open(...) as f:
nums = [float(l) for l in f if l]
try:
return sum(nums)/len(nums)
except ZeroDivisionError:
return None
Oui effectivement tu as raison
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Faire une moyenne de float dans une liste
× 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.
typage structurel ftw
typage structurel ftw
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
typage structurel ftw
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)