IndexError ...超出范围,

时间:2013-04-21 03:31:12

标签: python indexing range

继续前面的精彩帮助后,我现在遇到异常处理问题。 我有一个由他们的索引号选择的11个地块的清单。如果用户选择高于11,它应该请求他们重新进入但是atm,我得到IndexError:list index超出范围。 我会认为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"

3 个答案:

答案 0 :(得分:4)

except ValueError只能抓取ValueError。您还需要添加IndexError

except (ValueError, IndexError):

答案 1 :(得分:0)

except ValueError表示您只捕获ValueError类型的例外。如果你想以不同的方式处理它,或者同时捕获它们并以相同的方式处理它,请包含IndexError的catch。

答案 2 :(得分:0)

当用户输入非数字的东西时,

ValueError会出现。 (所以int("hello")抛出ValueError

当用户输入的数字大于列表中的元素数时,抛出

IndexError。 (例如,range(5)[7]

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

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