Выход из бесконечного цикла и обработка ошибок - PullRequest
0 голосов
/ 22 января 2012

Я новичок в Python. Здесь я написал программу на Python, которая извлекает значения из карты. На данный момент работает нормально.

Когда пользователь вводит «M», он запрашивает основной номер и снова запрашивает пользовательский ввод, а в зависимости от пользовательского ввода он получает значения из словаря и т. Д.

Теперь моя проблема

  1. Как выйти из цикла.
  2. Что если я дам неверный ввод, когда он запрашивает M / N?
  3. Что если я дам неправильный ввод, когда он запрашивает Main или Name?

Может кто-нибудь помочь мне с этим ?? Я хочу знать, как реализовать выше 3 условия. Я реализовал эти условия в Java, и я не знаю, как это сделать в Python.

streetno={"1":"Sachin Tendulkar","2":"Sehwag","3":"Dravid","4":"Dhoni","5":"Kohli"}
streetname = dict((y,x) for x,y in streetno.items())
while True:
    inp= raw_input('Enter a M/N:')
    if inp=="M" or inp=="m":
        key=raw_input( "Enter the main number :")
        result=streetno[key]

    else:
        key = raw_input("Enter the street name: ")
        result = streetname[key]


    print result

Ответы [ 2 ]

0 голосов
/ 22 января 2012

Обычно вы ловите исключения с помощью блока Try / Except.Смотрите этот урок, ссылка .Если вы введете неправильное имя или имя, будет сгенерировано KeyError, так как у dicts нет соответствующего ключа.Ваши блоки исключений поймают это, и вы можете перезапустить запрос, нажав «продолжить».Наконец, чтобы выйти из цикла, вам нужен триггер, например, ввести «Q» для выхода в качестве опции elif.Чтобы выйти из цикла, вы должны позвонить break .

0 голосов
/ 22 января 2012

1: Вы можете выйти из цикла for или while с помощью break.

2/3: учтите эти исключения.Мы не можем сказать вам, как обращаться с исключениями, поскольку это зависит от того, что вы хотите, но вот один из способов, чтобы вы начали ..

while True:
    inp = raw_input('Enter a M/N or Q to quit:')

    if inp.lower() == 'q':
        break

    if inp.lower() == "m":
        key = raw_input("Enter the main number :")
        try:
            print(streetno[key])
        except KeyError:
            print("You picked an invalid street number")

    elif inp.lower() == 'n':
        key = raw_input("Enter the street name: ")
        try:
            print(streetname[key])
        except KeyError:
            print("You picked an invalid street name")

    else:
        print("{0} is an invalid choice.".format(inp))
...