Я делаю словарь с разными днями рождения людей (которые пользователь заполняет с помощью ввода). Теперь я также хочу, чтобы пользователь мог писать в одном из имен, которые он только что добавил, а затем вернуть ему этот день рождения. Проблема в том, что он всегда возвращает последнюю дату, добавленную в список, независимо от того, какое имя пользователь написал. Говорят, пользователь добавил эти элементы в: {anna: 1.october, paul: 3.january}. Если я тогда хочу, чтобы программа печатала день рождения Анны, она вместо этого печатает "день рождения анны в 3.january". Вот как выглядит мой код (Btw, он примерно переведен на английский язык, так что не против потенциальных языковых ошибок):
birthdays={}
name= ""
date= ""
while True:
name= input("Who birthday would you like to add?:")
if name.strip() == "done":
break
date= input("When is the person birthday?:")
find= input("\n Type in a name that you've added!:")
for name in birthdays:
if find == name in birthdays or date in birthdays:
print(" %s birthday is at %s" % (name, date))
Я чувствую, что может быть что-то не так в последних 4 строках. Вся помощь ценится! :)
Во-первых, в добавленном коде я не вижу той части, которую вы добавляете в словарь. После этого вы можете выполнить поиск по этому адресу:
if find in birthdays:
date = birthdays.get(find)
print(" %s birthday is at %s" % (find, date))
Это вы хотите? Но я думаю, что это не полный
birthdays={}
name= ""
date= ""
while True:
name = input("Who birthday would you like to add?:")
if name.strip() == "done":
break
date = input("When is the person birthday?:")
birthdays[name] = date
find = input("\n Type in a name that you've added!:")
if find in birthdays:
print(" {} birthday is at {}" .format(find, birthdays.get(find)))