请考虑以下代码:
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))
我想这是一些我不知道的简单事情。为什么这个列表超出范围?
答案 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:
是一个无限循环,旋转过多会返回错误。这是一个逻辑错误。