首页 > 解决方案 > IndexError:列表分配索引超出范围(Python)

问题描述

请考虑以下代码:

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))

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

标签: pythonlist

解决方案


您超出范围是因为此循环特别从不检查是否i可能超出 list 的范围t

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

代码注释:

您对表格的比较:

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

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


推荐阅读