#python #dictionary
#python #словарь
Вопрос:
Я хочу создать систему телефонной книги на Python, как показано на рисунке ниже, которая позволяет пользователям добавлять, удалять, обновлять и искать телефонные номера.
Пожалуйста, посмотрите мой код ниже. Параметры 1,2,3 и 5 работают нормально, однако вариант 4 не работает, и я не уверен, почему. Когда я добавляю новую запись, используя опцию 1, а затем сразу пытаюсь найти запись, используя опцию 4, она сообщает мне, что запись не существует, хотя она явно существует.. Я что-то упускаю? (рассматриваемый раздел кода начинается с «elif selection == 4:»)
def intro():
welcome = (" n"
"#####################################n"
"MYPY PHONE BOOKn"
"#####################################n"
"1 : Add New Entryn"
"2 : Delete Entryn"
"3 : Update Entryn"
"4 : Lookup Numbern"
"5 : QUITn"
"")
selection = input(welcome)
return int(selection)
phoneBook = {}
while True:
selection = intro()
if selection == 1:
number = input("Enter phone number: ")
name = input("Enter name: ")
if number in phoneBook:
print(" n"
"* Number already in phonebook *")
else:
phoneBook.update({number : name})
print(" n"
"* Name and number added to phone book *")
print(phoneBook)
elif selection == 2:
number2 = input("Enter phone number to be deleted: ")
if number2 in phoneBook:
phoneBook.pop(number2)
print(" n"
"* Number deleted from phone book *")
print(phoneBook)
else:
print(" n"
"* Number does not exist in phone book *")
elif selection == 3:
number3 = input("Enter current phone number: ")
numberNew = input("Enter updated phone number: ")
nameNew = input("Enter name: ")
if number3 in phoneBook:
phoneBook.pop(number3)
phoneBook.update({numberNew : nameNew})
print(" n"
"* Name and number updated in phone book *")
print(phoneBook)
else:
print(" n"
"* Number does not exist in phone book *")
elif selection == 4:
name4 = input("Enter name: ")
if name4 in phoneBook:
for key,value in phoneBook.items():
if value == name4:
print(key)
else:
choice = int(input(" n"
"Name does not exist in phone bookn"
"Enter 1 to add to phoneBookn"
"Enter 2 to return to the menu:n"
""))
if choice == 1:
number4 = input("Enter phone number: ")
name44 = input("Enter name: ")
if number in phoneBook:
print(" n"
"* Number already in phonebook *")
else:
phoneBook.update({number4 : name44})
print(" n"
"* Name and number added to phone book *")
print(phoneBook)
elif choice == 2:
print(" n"
"* Please make another selection *")
elif selection == 5:
break
Ответ №1:
Вы используете имена в качестве ключей или цифры в качестве ключей вашего словаря?
В выборе 4 вы это делаете if name4 in phoneBook:...
, однако в других частях кода вы, похоже, используете цифры в качестве ключей. С помощью словарей вы можете проверить, находится ли ключ в словаре с key in dictionary
. С другой стороны, если вы хотите проверить, есть ли значение в словаре, вы можете сделать:
for val in dictionary.values():
if val == value:
...
Проверьте это 😉
Комментарии:
1. Спасибо, я добавил «.values()» в конец, и теперь это работает 🙂