Телефонная книга-словарь с пользовательским вводом, но с изюминкой

#python

#python

Вопрос:

Я работал над этим слишком долго. Это должно быть просто, и я пробовал много разных комбинаций, однако я продолжаю ошибаться в коде и понятия не имею, почему. Он отлично работает, когда у меня ручной ввод, но при отправке появляется ошибка.

подсказка с вопросом: Напишите программу, которая хранит словарь имен и соответствующие им телефонные номера.

Неоднократно запрашивайте у пользователя имя. Затем выполните одно из следующих трех действий, в зависимости от того, что они вводят:

Если они ничего не вводят, выйдите из программы. Если они вводят имя, которое существует в качестве ключа в вашем словаре, просто выведите соответствующий номер телефона. Если они вводят имя, которого НЕТ в вашем словаре в качестве ключа, попросите пользователя ввести номер телефона, а затем поместите имя и номер телефона в ваш словарь. Распечатайте окончательный словарь.

мой код:

 phoneBook = {}
name = input("Please enter a name(or press enter to end input): ")
while name != '':
    if not name in phoneBook:
        number = input("Please enter number: ")
    print "Phone number: "   number
    phoneBook[name] = number
    name = input("Please enter a name(or press enter to end input): ")
    if name in phoneBook:
        print phoneBook[name]
    if name == '':
        break
print phoneBook
  

Ожидаемый результат:

     Phone number: 1234
    Phone number: 5678
    {'Tracy': '5678', 'Karel': '1234', 'Steve': '9999'}
  

Мой результат:

 Phone number: 1234
Phone number: 5678
Phone number: 9999
1234
Phone number: 9999
5678
Phone number: 9999
{'Tracy': '9999', 'Karel': '9999', 'Steve': '9999'}
  

Ответ №1:

вы также должны получить доступ к ключам словаря для проверки существования имени:

 if not name in phoneBook.keys():
  

Ответ №2:

 phoneBook = {}
name = input("Please enter a name(or press enter to end input): ")
while name != '':
    if not name in phoneBook.keys():
        number = input("Please enter number: ")
        phoneBook[name] = number
        print "Phone number: "   number
        name = input("Please enter a name(or press enter to end input): ")
    else:
        print phoneBook[name]

print phoneBook
  

Попробуйте приведенный выше код.
Если имени нет в телефонной книге, то присвоите имени номер, который phoneBook[name] = number должен быть в if not name in phoneBook.keys(): блоке. А затем введите другое имя в том же блоке if.