Pour ce programme, j'essaie d'obtenir une nouvelle liste qui affiche les élèves qui ont obtenu une note de 95 ou plus. Peu importe ce que j'essaye, j'obtiens toujours une liste vide. Qu'est-ce que je fais mal?
Voici mon code:
students = ["Robin","Emily","Mary","Joe","Dean","Claire","Anne","Yingzhu","James", "Monica","Tess","Anaya","Cheng","Tammy","Fatima"] scores = [87, 72, 98, 93, 96, 65, 78, 83, 85, 97, 89, 65, 96, 82, 98] def wise_guys(students): wise_guys = [] for i in range(len(students)): if score in scores >= 95: wise_guys.append(students[i]) return wise_guys
wise_guys (étudiants)
3 Réponses :
Vous pouvez utiliser zip
pour parcourir les deux listes comme ceci:
students = ["Robin","Emily","Mary","Joe","Dean","Claire","Anne","Yingzhu","James", "Monica","Tess","Anaya","Cheng","Tammy","Fatima"] scores = [87, 72, 98, 93, 96, 65, 78, 83, 85, 97, 89, 65, 96, 82, 98] wise_guys = [] for student, score in zip(students, scores): if score > 95: wise_guys.append(student)
students = ["Robin","Emily","Mary","Joe","Dean","Claire","Anne","Yingzhu","James", "Monica","Tess","Anaya","Cheng","Tammy","Fatima"] scores = [87, 72, 98, 93, 96, 65, 78, 83, 85, 97, 89, 65, 96, 82, 98] def wise_guys(): smarties = [] for (i, score) in enumerate(scores): if score >= 95: smarties.append(students[i]) print(smarties) wise_guys() You don't have to pass students or scores to the function, they are in scope. You do however, have to call your function. Also, returning an array will not print it to standard out, but print will.
Premièrement, wise_guys.append(students[i])
doit être mis en retrait une fois de plus, car il ne doit être exécuté que si l'instruction if
renvoie true. Il en va de même pour return wise_guys
, car il fait partie de def
. Deuxièmement, la syntaxe des instructions if
comparant des éléments dans une liste d'entiers est if list[index] comparison_operator integer
.
Ce script semble fonctionner correctement:
students = ["Robin","Emily","Mary","Joe","Dean","Claire","Anne","Yingzhu","James", "Monica","Tess","Anaya","Cheng","Tammy","Fatima"] scores = [87, 72, 98, 93, 96, 65, 78, 83, 85, 97, 89, 65, 96, 82, 98] def wise_guys(): wise_guys = [] for i in range(len(students)): if scores[i] >= 95: wise_guys.append(students[i]) return wise_guys print(wise_guys())
Bonne chance!
Votre
return
vraiment en retrait comme ça?