Python try/exception 帮助

2 投票
4 回答
8206 浏览
提问于 2025-04-16 17:26

我正在尝试实现一个功能,让用户输入一个文件名,然后再输入两个整数。如果出现错误,我希望能再次提示用户输入。

我的问题是,如果用户输入了一个有效的文件名,但输入了一个无效的整数,程序会要求重新输入文件名,而不是只要求重新输入整数。我该如何修改代码,让它只要求重新输入整数呢?

这是我现在的代码:

while True:
    try:
        f = raw_input("Enter name of file: ")
        inFile = open(f)
        # more code
    except IOError:
        print ("The file does not exist. Try Again.")        
    else:    
        try:
            integer = int(raw_input("Enter an integer: "))
            integer2 = int(raw_input("Enter an integer: "))
            # more code
        except (TypeError, ValueError):
            print ("Not an integer. Try Again.")

4 个回答

0
>>> def ask(question, func, exceptions):
...     while True:
...         try:
...             return func(raw_input(question))
...         except exceptions, error:
...             pass
... 
>>> x = ask("integer?", int, ValueError)
integer?o
integer?l
integer?42
>>> x
42

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

0
while True:
    try:
        a = int(raw_input('a: '))
        b = int(raw_input('b: '))
        break
    except ValueError:
        print "Numbers idiot"
#more code here

这段代码会在a或b出错时跳到异常处理的部分,如果数字没问题的话,它会继续执行后面的代码。

9

试着使用多个 while 循环:

while True:
    fileName = raw_input("Enter name of file: ")
    try:
        # more code here to detect or open the file
        break
    except Exception:  # can be IOError or something else
        print ("error msg")

while True:
    try:
        integer = int(raw_input("Enter an integer: "))
        integer2 = int(raw_input("Enter an integer: "))
        break
    except (TypeError, ValueError):
        print ("error msg")

# more code

撰写回答