EDIT REQUESTED: я создал два экземпляра меню, один в функции и один вне функции, потому что первоначальный тест предлагает пользователю ввести 5 номеров джерси и ранг игрока, затем ожидает, что будет напечатан список, а затем ожидаетпользовательское меню для подсказки изменений в реестре.«Обновление словаря» Я имел в виду, что список создается в dict {}, а затем параметры пользовательского меню позволяют редактировать исходный dict и затем печатать новый список с изменениями.
ПЕРВОНАЧАЛЬНАЯ ПОЧТА: явозникли проблемы с этим кодом (назначение класса, hw not test).Цель - это меню, которое позволяет пользователю добавлять и удалять игроков из реестра, обновлять их рейтинг игроков, получать список лучших рейтингов х или просто печатать реестр.Назначение требует, чтобы начальный пользовательский ввод состоял из 5 номеров джерси и их оценок, распечатал список, затем предложил меню пользователя.Я решил первые 4 задачи.ПРОБЛЕМА: при доступе к элементам меню для добавления, удаления, обновления и ранжирования первый список, следующий за начальными 5 записями, читается как ответ, а не список, который выводится на экран после внесения изменений.Я не могу понять, как его настроить, чтобы реестр после начальной настройки был необязательным.Я надеюсь, что вы увидите очевидную ошибку в коде, который мне не хватает.(Отступы выглядят немного странно для форматирования здесь. У меня нет ошибок отступов для каждой системы.)
def print_menu():
print ('\nMENU')
print ('a - Add player')
print ('d - Remove player')
print ('u - Update player rating')
print ('r - Output players above a rating')
print ('o - Output roster')
print ('q - Quit')
action_in = input('\nChoose an option:\n')
def output_roster():
listOFjerseys = list(player_stats.keys())
listOFratings = list(player_stats.values())
print ('ROSTER')
a_jersey = sorted (listOFjerseys)
for x in a_jersey:
print ("Jersey number: %d, Rating: %d" % (x,player_stats[x]))
player_stats = {}
entry_count = int(5)
for i in range(1,entry_count+1):
jersey_num = int(input("Enter player %d's jersey number:\n" % i))
p_rating = int(input("Enter player %d's rating:\n\n" % i))
player_stats [jersey_num] = (p_rating)
listOFjerseys = list(player_stats.keys())
listOFratings = list(player_stats.values())
print ('ROSTER')
a_jersey = sorted (listOFjerseys)
for x in a_jersey:
print ("Jersey number: %d, Rating: %d" % (x,player_stats[x]))
choice = "" #I think this line is unused/unnecessary
print ('\nMENU')
print ('a - Add player')
print ('d - Remove player')
print ('u - Update player rating')
print ('r - Output players above a rating')
print ('o - Output roster')
print ('q - Quit')
action_in = input('\nChoose an option:\n')
while action_in is True and action_in != 'q':
if action_in == 'a':
#Add player
jersey_num = int(input("\nEnter a new player's jerseynumber:\n"))
p_rating = int(input("Enter the player's rating:\n"))
player_stats [jersey_num] = (p_rating)
output_roster()
print_menu()
elif action_in == 'd':
#Delete player
player = int(input("\nEnter a jersey number:\n"))
del player_stats[player]
output_roster()
print_menu()
elif action_in == 'u':
#Update rating
jersey_num = int(input("\nEnter a jersey number:\n"))
n_rating = int(input("Enter a new rating for player:\n"))
player_stats [jersey_num] = (n_rating)
output_roster()
print_menu()
elif action_in == 'r':
#output > rating
rankVal = int(input("\nEnter a rating:\n"))
print ('ABOVE %d\n' % rankVal)
for m, n in player_stats.values():
if n > rankVal:
print ('Jersey number: %d, Rating: %d\n' % (m,n))
print_menu()
elif action_in == 'o':
#Output roster
output_roster()
print_menu()
if action_in == 'q':
#quit
raise SystemExit()
введите описание изображения здесь