Печать словарных ключей и значений по значению python - PullRequest
1 голос
/ 31 марта 2019

Для класса Python, который я беру, мне нужно создать простое меню, в котором есть несколько вещей, одна из которых - распечатать все номера и рейтинги игроков в зависимости от рейтинга. Когда пользователь выбирает «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

Ответы [ 3 ]

1 голос
/ 31 марта 2019

Ваш вопрос на самом деле не проясняет, с какими трудностями вы сталкиваетесь или как происходит сбой программы, если она вообще падает.Но я заметил одну вещь: вы печатаете рейтинги, которые меньше или равны предоставленному рейтингу ... не выше или равны рейтингу.

, так что это

if above >= value:

следует заменить на

if above <= value:

Если проблема отличается от этой, пожалуйста, прокомментируйте с подробным объяснением того, с чем вы столкнулись, и я был бы рад помочь

1 голос
/ 31 марта 2019

Пользователь вводит значение, из которого мы выводим рейтинги, которые выше этого. В вашем коде это значение известно как above.

Следовательно, если ваш код, он должен быть

if value >= above: вместо if above >= value:

Кроме того, обратите внимание на indentatin, мне кажется, что вы хотите, чтобы блоки if были внутри цикла while.

0 голосов
/ 31 марта 2019
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 Ди

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...