Python raw_input для извлечения из словаря - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь реализовать решение, в котором я вызываю displayPerson (), который принимает пользовательский ввод для идентификатора и печатает информацию для пользователя.Должен отметить, что я загружаю из Интернета файл csv, который содержит данные в этом формате:

идентификатор, имя, день рождения
1, Джек Воробей, 09/20/2000

Моя цель - получить от пользователя номер, который будет искать и отображать идентификатор.Я хочу, чтобы приглашение продолжало появляться и запрашивать у пользователя номер, пока он не введет отрицательное число или 0 для выхода.

    loop= True
    while loop== True:
        prompt = int(raw_input(" Enter ID of person you would like to search for: "))
        break

    if prompt >0:

        displayPerson(prompt,persons)


    else:
        print("Terminated.")

В нынешнем виде я могу получить правильный вывод, еслипользователь вводит положительную цифру в диапазоне от 1 до 100, но программа останавливается, когда я хочу, чтобы он попросил у пользователя другой номер, и я не могу понять, как это сделать, чтобы дать пользователю сообщение для ввода другого номера меньшечем 101 (вместо того, чтобы дать мне KeyError), отобразите данные, а затем запросите другой номер.Если пользователь вводит ноль, он выдает сообщение «Прекращено», а затем останавливается, но мне трудно делать что-либо еще.

Вот функция displayPerson () для справки:

def displayPerson(id, personDataDictionary):
    """

    :param id:
    :param personDataDictionary: Look at displayPerson in __name__ function. But I thought bday was pieces[2].
    :return:
    """
    print("id = {}, name = {}, birthday = {}".format(id, personDataDictionary[id][0],
                                                     personDataDictionary[id][1].strftime("%Y-%m-%d")))

1 Ответ

0 голосов
/ 26 сентября 2018

Решение

while True:
    prompt = int(raw_input(" Enter ID of person you would like to search for: "))

    if prompt > 100:
        print("Please try again")
        continue 
    elif prompt < 1: 
        displayPerson(prompt,persons)
    else:
        break

print("Terminated.")

Пояснение

Вы входите в цикл и получаете идентификатор пользователя.

Если prompt > 0: отобразить человека
В противном случае вырвитесь из цикла и напечатайте «Прервано».

...