退出无限循环并处理错误情况

0 投票
2 回答
1552 浏览
提问于 2025-04-17 10:49

我刚开始学习Python。这里我写了一个Python程序,可以从地图中获取值。现在这个程序运行得很好。

当用户输入“M”时,它会要求输入一个主号码,然后再询问用户输入,接着根据用户的输入从字典中获取值,依此类推。

现在我有几个问题:

  1. 我该如何退出这个循环。
  2. 如果我在输入M/N时给了一个无效的输入,会怎样?
  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

一般来说,你会用一个叫做Try/Except的结构来处理错误。你可以看看这个教程,链接。如果你输入了一个错误的主键或者名字,就会出现一个叫做KeyError的错误,因为字典里没有对应的键。你的Except部分会捕捉到这个错误,然后你可以用'continue'来重新开始输入。最后,要想退出这个循环,你需要一个触发条件,比如输入'Q'来退出,这可以作为一个elif选项。要退出循环,你可以使用break

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

撰写回答