按值打印字典键和值 python

Printing dictionary keys and values by value python

对于 python class 我要创建一个简单的菜单来做一些事情,其中​​之一是根据评分打印出所有球员的球衣号码和评分。当用户从菜单中选择 'r' 时,用户应该能够输入评分,然后程序将打印出所有等于或大于用户输入评分的球衣号码和评分。我以为我已经弄明白了,但我似乎无法让它发挥作用。关于我在这里出错的任何想法?

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

用户输入的值,我们打印出高于该值的评分。在您的代码中,此值称为 above.

因此,如果您的代码应该是

if value >= above: 而不是 if above >= value:

此外,请注意缩进,在我看来,您希望 if 块位于 while 循环内。

你的问题并没有真正详细说明你面临的困难是什么,或者程序是如何崩溃的,如果它崩溃的话。但我注意到的一件事是,您打印的评级小于或等于提供的评级...不高于或等于评级。

所以这个

if above >= value:

应替换为

if above <= value:

如果问题与此不同,请回复并详细解释您所面临的问题,我很乐意提供帮助

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)

这修正了代码。谢谢@Doodle Dee