ОБНОВЛЕНИЕ НИЖЕ
Я в курсе введения в класс программирования на Zybooks.Я нахожусь на заключительном проекте для этой главы, и вывод продолжает терпеть неудачу из-за пробелов или проблем возврата.Я продолжаю корректировать это и пытаюсь изменить вещи, но это всегда заканчивается неудачей.Кто-нибудь захочет посмотреть на это и дать мне подсказку, где я терплю неудачу?Я бы очень признателен, спасибо!
Вот шаги для решения проблемы:
Предложите пользователю ввести пять пар чисел:номер майки (0 - 99) и рейтинг игрока (1 - 9).Храните номера Джерси и рейтинги в словаре.Выведите элементы словаря с номерами джерси в порядке возрастания (т. Е. Выведите список от наименьшего до наибольшего номера джерси).Подсказка: ключи словаря могут быть сохранены в отсортированном списке.(3 балла)
Реализация меню опций для пользователя, чтобы изменить список.Каждый вариант представлен одним символом.Программа первоначально выводит меню и выводит меню после того, как пользователь выбирает опцию.Программа заканчивается, когда пользователь выбирает опцию Выход.Для этого шага другие опции ничего не делают.(2 балла)
Реализация опции меню «Выходной список».(1 балл)
Реализация опции меню «Добавить игрока».Предложите пользователю номер и рейтинг джерси нового игрока.Добавьте значения к двум векторам.(1 балл)
Реализация опции меню «Удалить плеер».Предложите пользователю номер футболки игрока.Удалить игрока из реестра (удалить номер и рейтинг футболки).(1 балл)
Реализация опции меню «Обновить рейтинг игрока».Предложите пользователю номер футболки игрока.Снова запросите новый рейтинг игрока, а затем измените рейтинг этого игрока.(1 балл)
Реализация опции меню «Выводить игроков выше рейтинга».Подскажите пользователю рейтинг.Выведите номер майки и рейтинг для всех игроков с рейтингом выше введенного значения.(2 балла)
Мой код:
d={}
for i in range(5):
jersey=int(input("Enter player %s's jersey number:\n" % str(i+1)))
rating=int(input("Enter player %s's rating:\n" % str(i+1)))
if jersey not in d:
d[jersey]=rating
print()
print("ROSTER")
for k,v in sorted(d.items()):
print("Jersey number: %d, Rating: %d" % (k,v))
while True:
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\n')
choice=input('Choose an option:\n')
choice=choice.lower()
if choice=='o':
print("ROSTER")
for k,v in sorted(d.items()):
print("Jersey number:%d,Rating:%d" % (k,v))
elif choice=='a':
jersey=int(input("Enter a new player jersey number:\n"))
rating=int(input("Enter player's rating:\n"))
if jersey not in d:
d[jersey]=rating
else:
print("\nThe Player already in the list")
elif choice== 'd':
jersey=int(input("\nEnter a jersey number:\n"))
if jersey in d:
del d[jersey]
else:
print("\nThe Player is not in the list")
elif choice== 'u':
jersey=int(input("\nEnter a jersey number:\n"))
if jersey in d:
rating=int(input("\nEnter a new rating for the player:\n"))
d[jersey]=rating
else:
print("\nThe Player is not in the list")
elif choice== 'r':
rating=int(input("\nEnter a rating:\n"))
for k,v in sorted(d.items()):
if v > rating:
print("Jersey number:%d,Rating:%d" % (k,v))
elif choice=='q':
break
Это результат, который я получаю.
Это результат, который они хотят:
ОБНОВЛЕНИЕ:
В итоге я изменил всю нижнюю часть кода.Это решило проблему с возвратом, которая у меня была, но теперь я сталкиваюсь с чем-то другим.Две функции меню - добавлять и удалять записи в словаре.Я вернулся к уроку и думаю, что они написаны правильно, но они не работают.Кто-нибудь может указать мне, где я иду не так?Спасибо!
Вот код (только нижняя половина, верхняя половина такая же):
def print_menu():
menuOp = """MENU
a - Add player
d - Remove player
u - Update player rating
r - Output players above a rating
o - Output roster
q - Quit
Choose an option:"""
return menuOp
def main():
while(True):
c = input()
if(c=='a'):
jersey=int(input("Enter a new player jersey number:\n"))
rating=int(input("Enter player''s rating:\n"))
if jersey not in d:
d[jersey]=rating
else:
print("\nThe Player already in the list")
elif(c=='o'):
print("ROSTER")
for k,v in sorted(d.items()):
print("Jersey number:%d,Rating:%d" % (k,v))
elif(c=='d'):
jersey=int(input("\nEnter a jersey number:\n"))
if jersey in d:
del d[jersey]
else:
print("\nThe Player is not in the list")
elif(c=='u'):
jersey=int(input("\nEnter a jersey number:\n"))
if jersey in d:
rating=int(input("\nEnter a new rating for the player:\n"))
d[jersey]=rating
else:
print("\nThe Player is not in the list")
elif(c=='r'):
rating=int(input("\nEnter a rating:\n"))
for k,v in sorted(d.items()):
if v > rating:
print("Jersey number:%d,Rating:%d" % (k,v))
elif(c=='q'):
print()
break
print()
print(print_menu())
Это мой текущий вывод:
Это выход, который они хотят.Вы можете видеть, что должна быть дополнительная запись.
Извините, не знаю, почему форматирование вставки стало странным.