索引器错误…超出范围,

2024-03-29 10:04:26 发布

您现在位置:Python中文网/ 问答频道 /正文

根据前面的可怕帮助,我现在有一个异常处理问题。 我有一张11块地的清单,要根据它们的索引编号来选择。如果用户选择大于11,则应请求他们重新输入,但atm,我得到索引器错误:列表索引超出范围。 我本以为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"

Tags: 用户列表inputrawifresponse错误事情
3条回答

当用户输入非数字时,ValueError将出现。(所以int("hello")抛出ValueError

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

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

resp = ""
while resp not in ('0', '1', ... '10', 'q'):
    resp = raw_input(...)

except ValueError只捕获ValueError。您还需要添加IndexError

except (ValueError, IndexError):

except ValueError表示只捕获ValueError类型的执行。如果您想以不同的方式处理IndexError,请包含一个catch,或者同时捕获并以相同的方式处理它。在

相关问题 更多 >