def get_menu_choice():
print()
print('Друзья и их дни рождения')
print('------------------------')
print('1. Найти день рождения')
print('2. Добавить новый день рождения')
print('3. Изменить день рождения')
print('4. Удалить день рождения')
print('5. Выйти из программы')
print()
choice = int(input('Введите выбранный пункт: '))
while choice < LOOK_UP or choice > QUIT:
choice = int(input('!!!Выберите выбранный пункт: '))
return choice
def look_up(birthdays):
name = input('ВВедите имя: ')
print(birthdays.get(name, 'Не найдено'))
def add(birthdays):
name = input('Ввдите имя: ')
bday = input('Введите день рождения: ')
if name not in birthdays:
birthdays[name] = bday
else:
print('Эта запись уже существует!')
def change(birthdays):
name = input('Введите имя: ')
if name in birthdays:
bday = input('Введите новый день рождения')
birthdays[name] = bday
else:
print('Это имя не найдено')
def delete(birthdays):
name = input('Введите имя: ')
if name in birthdays:
del birthdays[name]
else:
print('Это имя не найдено')
main()
ОШИБКА:
Traceback (most recent call last):
File "", line 1, in
File "C:\Program Files\JetBrains\PyCharm Edu 2021.1.1\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\Program Files\JetBrains\PyCharm Edu 2021.1.1\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/курсы/Новая папка/2316/main.py", line 72, in
main()
File "D:/курсы/Новая папка/2316/main.py", line 19, in main
add(birthdays)
File "D:/курсы/Новая папка/2316/main.py", line 52, in add
birthdays[name] = bday
TypeError: 'tuple' object does not support item assignment
В функции look_up есть строка birthdays.get(name, 'Не найдено'), из которой можно сделать вывод, что в переменной birthdays должен быть словарь. Однако, при вызове функции вы передаёте ей кортеж. У кортежей нет метода get, о чём в ошибке и написано.
Аналогично после вашего исправления вопроса, нельзя присвоить значение ключу, так как у кортежей ключей не бывает.