проект python 3 - пользовательское меню для обновления словаря - PullRequest
0 голосов
/ 25 ноября 2018

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()

введите описание изображения здесь

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