退出无限循环并处理错误条件

时间:2012-01-22 05:40:40

标签: python infinite-loop

我是Python的新手。在这里,我编写了一个Python程序,用于从地图中检索值。 截至目前,它工作正常。

当用户输入“M”时,它将检索它将询问主要否,并再次询问用户输入,并且根据用户输入,它从字典&中检索值。等等。

现在关注的是

  1. 如何退出循环。
  2. 如果我在询问M / N时输入无效怎么办?
  3. 如果我要求主要或姓名时给它输入无效怎么办?
  4. 任何人都可以帮我吗?我想知道如何实现上述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 :(得分:0)

1:您可以使用break突破for或while循环。

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))

答案 1 :(得分:0)

通常,您会使用Try / Except块捕获异常。请参阅本教程link。如果输入的主要名称或名称不正确,则会引发KeyError,因为dicts没有匹配的键。您的Except块将捕获此信息,您可以使用' continue'重新启动提示。最后,要退出循环,您需要一个触发器,例如输入一个Q' Q'退出作为elif选项。要退出循环,请拨打break