J'essaie d'écrire une fonction appelée, moyenne grades, qui prend dans un dictionnaire avec les clés représentant les étudiants et valeurs représentant leurs notes. La fonction devrait renvoyer un nouveau dictionnaire avec les clés représentant les étudiants et des valeurs représentant une moyenne de leurs notes. La moyenne devrait être une INT et doit être tronquée
J'ai réussi à écrire un peu de code, qui me donne une valeur moyenne, mais cela ne fait pas partie de la liste ... P>
def averageGrades(diction):
avgDict = {}
for k, v in diction.items():
# v is the list of grades for student k
avgDict[k] = sum(v)/ float(len(v))
return avgDict
3 Réponses :
Ceci devrait faire:
def averageGrades(diction):
avgDict = {}
for k, v in diction.items():
# v is the list of grades for student k
avgDict[k] = sum(v)/ float(len(v))
return avgDict
^^^^^
Votre position de déclaration de retour est égarée. Dans votre cas, la déclaration de retour est à l'intérieur de la boucle pour la boucle, la déclaration de retour renvoie donc dict avec le premier élément, plutôt que la dicte entière. Essayez le code suivant
def averageGrades(diction):
avgDict = {}
for k, v in diction.items():
# v is the list of grades for student k
avgDict[k] = sum(v)/ float(len(v))
return avgDict
Vous devez retourner votre moyenne en dehors de votre boucle. Si c'est à l'intérieur de la boucle de la boucle, la déclaration de retour reviendra après la première itération que vous ne voulez pas. Essayez comme suit.
def averageGrades(diction):
avgDict = {}
for k, v in diction.items():
# v is the list of grades for student k
avgDict[k] = sum(v)/ float(len(v))
return avgDict
print(averageGrades({"Shana": [100, 90, 80], "Jody": [100, 70, 80, 90, 100], "Mike": [100, 100, 20]}))
NE PAS
RETENIR AVGDICT code> à l'intérieur de la boucle; Il n'inclut que ce qu'il a traité à ce point (c'est-à-dire le premier élément).Pourriez-vous imprimer
diction code> clés et valeurs?@karl Vous ne devriez pas changer le contenu d'aucune question. Si vous voulez vraiment supprimer, puis soulevez un drapeau / supprimez la question.