1
votes

Impression des clés et des valeurs du dictionnaire par valeur python

Pour une classe de python que je suis, je dois créer un menu simple qui fait plusieurs choses, l'une d'elles étant d'imprimer tous les numéros de maillot et les notes des joueurs en fonction de leur note. Lorsque l'utilisateur sélectionne «r» dans le menu, l'utilisateur est censé être en mesure de saisir une note, puis le programme imprimera tous les numéros de maillot et notes qui sont égaux ou supérieurs à la note entrée par l'utilisateur. Je pensais l'avoir compris mais je n'arrive pas à le faire fonctionner. Des idées sur où je me suis trompé ici?

roster = {}

for i in range(5):
    x = int(input("Enter player number (0-99): "))
    y = int(input("Enter player rating: "))
    roster[x] = y

for i in sorted(roster):
    print('Jersey number:', i, 'Player rating:', roster[i])

sel = 'z'

while sel != 'q':

    sel = input("MENU: \na - Add Player\nd - Remove Player\nu - Update 
    Player Rating\n"
            "r - Output Players Above A Rating\no - Output Roster\nq - 
    Quit\n")

    if sel == 'a':
        x = int(input("Enter player number (0-99): "))
        y = int(input("Enter player rating: "))
        roster[x] = y
    elif sel == 'o':
        for i in sorted(roster):
            print('Jersey number:', i, 'Player rating:', roster[i])
    elif sel == 'd':
        delete = int(input("Enter jersey number to be deleted: "))
        del roster[delete]
    elif sel == 'u':
        update = int(input("Enter jersey number to be updated: "))
        change = int(input("Enter new player rating: "))
        roster[update] = change
    elif sel == 'r':
        above = int(input("Enter a rating: "))
        for key, value in roster.items():
            if above >= value:
                print(key)
    elif sel == 'q':
        print("Thanks for using the program")
    else:
        continue


0 commentaires

3 Réponses :


1
votes

L'utilisateur entre la valeur dont nous imprimons les notes supérieures à cela. Dans votre code, cette valeur est connue sous le nom de ci-dessus .

Par conséquent, si votre code, il devrait être

if value> = above: plutôt que if above> = value:

De plus, notez l'indentatin, il me semble que vous voulez que les blocs if soient à l'intérieur de la boucle while.


2 commentaires

les blocs if sont à l'intérieur de la boucle while, le formatage vient d'être foiré, copiez-le et collez-le ici


Je vois, j'ai corrigé l'indentation, vous devriez le voir une fois la modification approuvée.



1
votes

votre question ne précise pas vraiment les difficultés que vous rencontrez ou comment le programme plante, s'il plante du tout. Mais une chose que j'ai remarquée, c'est que vous imprimez des notes inférieures ou égales à la note fournie ... ni supérieure ni égale à la note.

donc ceci

if above <= value:

doit être remplacé par

if above >= value:

Si le problème est différent de celui-ci, veuillez commenter avec plus d'explications sur ce à quoi vous êtes confronté et je serais heureux de vous aider p >


0 commentaires

0
votes
elif sel == 'r':
    above = int(input("Enter a rating: "))
    for key, value in roster.items():
        if above <= value:
            print('Jersey number: ', key, 'Player rating: ', value)
This fixed the code. Thanks @Doodle Dee

0 commentaires