#python #python-3.x #dictionary #key-value
#python #python-3.x #словарь #ключ-значение
Вопрос:
Я пытаюсь создать простую телефонную книгу, в которой, если вы вводите тип 1: вы добавляете контакт в словарь, если 2 вы просматриваете словарь на основе введенного имени (ключа), если 3 вы просматриваете словарь на основе введенного номера (значения)
Когда я запускаю поиск ключа на основе значения (ввод 3), он возвращает функцию else ‘this is invalid’ независимо от того, верно это или нет.
Может ли кто-нибудь расшифровать это?
#Input contact name
if button == 1:
name = input('Please enter the contact name:')
if name in contacts:
print("The name you entered already exists in the address book --> %s:%s"
%(name,contacts[name]))
flag = input("Whether to modify user information (YES/NO):")
if flag== 'YES':
tel = input('Please enter the users contact phone number:')
contacts.update({name:tel}) #Update dictionary
print("Contacts have been updated!")
else:
continue
else:
contacts[name] = input('Please enter the contact phone number:')
print("Contact has been saved!")
#Search by contact name
if button == 2:
name = input('Please enter the contact name:')
if name in contacts:
print("%s : %s "%(name,contacts[name]))
else:
print('The name you entered is no longer in the address book! ')
#Search by contact number
if button == 3:
numba = input('Please enter the contact number:')
lookup = []
for key,value in contacts.items():
if(value == numba):
lookup.append(key)
print('Name(s) matching number is',lookup)
else:
print('This is invalid')
Комментарии:
1. Как отлаживать небольшие программы.
if value == numba: ... else:
Правильное ли место для печати «This is invalid»?numba
является строкой. Этоvalue
тоже строка?2. Предложение if имеет значение true один раз, когда найдено правильное значение. Но это значение равно false для всех других шагов итерации в цикле.
Ответ №1:
Попробуйте это:
if button == 3:
numba = input('Please enter the contact number:')
lookup = []
for key,value in contacts.items():
if(value == numba):
lookup.append(key)
if lookup: # True if len(lookup) != 0
print('Name(s) matching number is', lookup)
else:
print('This is invalid')
Ответ №2:
Возможно, это немного натянуто, но я заставил его работать так:
numba = input('Please enter the contact number: ')
lookup = []
for key,value in contacts.items():
if(numba == key):
lookup.append(value)
print('Name(s) matching number is', lookup)
if(int(numba) > len(contacts.items())):
print('This is invalid')