IndexError:列表分配索引超出范围(Python)

时间:2019-08-08 10:14:29

标签: python list

请考虑以下代码:

def getString(absA, y):
    i = 0
    t = list(range(100))
    while absA > 0:
        t[i] = absA % y
        absA = absA / y
        i = i + 1  
    for j in range(len(t)):
        if t[j] == '10':
            t[j] = 'A'
        elif t[j] == '11':
            t[j] = 'B'
        elif t[j] == '12':
            t[j] = 'C'
        elif t[j] == '13':
            t[j] = 'D'
        elif t[j] == '14':
            t[j] = 'E'
        elif t[j] == '15':
            t[j] = 'F'
    return t

bitString = getString(abs(eval(a)), eval(b))

我想这是一些我不知道的简单事情。为什么这个列表超出范围?

2 个答案:

答案 0 :(得分:0)

您超出范围是因为此循环尤其不会检查i是否可能超出列表t的范围。

while absA > 0:
    t[i] = absA % y
    absA = absA / y
    i = i + 1  

代码注释:

您的比较形式:

if t[j] == '10': ...

不会做您希望他们做的事。元素t[j]数字而不是字符串。

答案 1 :(得分:0)

while absA > 0:是一个无限循环,旋转过多会返回错误。这是一个逻辑错误。