Другой вопрос: проблема со словарем телефона 'while-l oop' с помощью Error - PullRequest
0 голосов
/ 09 апреля 2020

Просто задайте вопрос телефонному словарю

Что я хочу сделать, это указать имя и номер человека и найти их в словаре!

Примеры того, что я хочу сделать

Enter command (a, f, d, or q).: a

Enter new name................: Perry

Enter new phone number........: 229-449-9683


Enter command (a, f, d, or q).: f

Enter name to look up...: 

Я хотел бы найти полное имя и номер при наборе

Код телефонного словаря, который я написал до сих пор:


phone_dict = {}
command = input('Enter command (a, f, d, or q).: ')
newname = input('Enter new name................: ')
newphone = input('Enter new phone number........: ')
while True:
    if command == 'a':
        newname
        newphone
        phone_dict[newname] = newphone
        print(phone_dict)
# In here, 'while-loop' does not work. 

Там, если я введу команду 'a', и введите имя

словарь должен быть {Perry: 229-449-9683}

Спасибо, вопрос может быть немного запутан, но если вы можете помочь, я очень счастливым!

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Чтобы найти результат из словаря, вы можете l oop просмотреть элементы и проверить, содержит ли ключ строку, которую вы хотите найти. Если вы хотите получить все значения, которые удовлетворяют вашему запросу, вы можете создать другой список или словарь и сохранить найденные элементы:

phone_dict = {
    "Han Perry": "1234",
    "Harry Gildong": "2345",
    "Hanny Test": "123",
}


find_str = "Han"

result = {}

for key, value in phone_dict.items():
    # Converting it to lower makes it case insensitive
    if find_str.lower().strip() in key.lower():
        result[key] = value

print(result)
# {'Han Perry': '1234', 'Hanny Test': '123'}

Обратите внимание, что это будет проходить по всем значениям словаря: O(n)

0 голосов
/ 09 апреля 2020

Чтобы найти номер, используя имя или фамилию человека, которого вы могли бы сделать:

a = 'Add a new phone number'
d = 'Delete a phone number'
f = 'Find a phone number'
q = 'Quit'
phone_dict = {}

while True:
    # Gets the user command every loop
    command = input('Enter command (a, f, d, or q).: ')

    # Add a new registry to the directory
    if command == 'a':
        newname = input('Enter new name................: ')
        newphone = input('Enter new phone number........: ')
        phone_dict[newname] = newphone
        print(phone_dict)

    # Find a registry on the directory
    elif command == "f"
        query = input("Enter name to look up...: ")
        match = None
        for key in phone_dict.keys():
            if query.strip() in key:
                match = phone_dict[key]
                break
        if match is None:
            print(f"The name {query} could not be found on the directory")
        else:
            print(f"The phone number of {query} is {match}")
    elif command == "d":
        # Delete registry
    elif command == "q":
        # Quits program
    else:
        print(f"The command {command} was not found, please try again!")

В этом случае я использую query.strip(), чтобы удалить любые дополнительные начальные / конечные пробелы, которые могут вызвать не найти человека.

Пожалуйста, дайте мне знать, если это помогло. Спасибо!

...