1
votes

Le programme Python continue de renvoyer une liste vide

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)


1 commentaires

Votre return vraiment en retrait comme ça?


3 Réponses :


0
votes

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)


0 commentaires

0
votes
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.

0 commentaires

2
votes

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!


0 commentaires