0

继之前的出色帮助之后,我现在遇到了异常处理的问题。我有一个 11 个地块的列表,由它们的索引号选择。如果用户选择高于 11,它应该要求他们重新输入,但是 atm,我得到 IndexError: list index out of range。我会认为 except 行只会处理其他任何事情......但它一定只是缺失的一行?

try:
    response = raw_input("Select a monitoring plot from the list (0-11): ")
    if response == 'q':
        confirm = raw_input('Confirm quit (y/ n)...')
            if confirm == 'y':
                print 'Bye'
                break
            else:
                continue
    selected = dataList[int(plotSelect) + 1]
    print 'You selected : ', selected[1]
except ValueError:
    print "Error: Please enter a number between 0 and 11"
4

3 回答 3

4

except ValueError只捕获一个ValueError. 您还需要添加IndexError

except (ValueError, IndexError):
于 2013-04-21T03:36:43.590 回答
0

except ValueError意味着你只捕获类型的执行ValueErrorIndexError如果您想以不同的方式处理它,或者同时捕获并以相同的方式处理,请包含一个 catch 。

于 2013-04-21T03:36:13.147 回答
0

ValueError当他用户输入不是数字的东西时会出现。(所以int("hello")抛出ValueError

IndexError当用户输入的数字大于列表中元素的数量时抛出。(例如,range(5)[7]

您可能想尝试使用如下循环获取您的第一个输入

resp = ""
while resp not in ('0', '1', ... '10', 'q'):
    resp = raw_input(...)
于 2013-04-21T03:39:57.180 回答