列表索引超出范围与if条件

时间:2018-01-19 14:24:58

标签: python arrays

num_array = list()
num = int(raw_input("Enter how many elements you want:"))
print 'Enter numbers in array: '
for i in range(int(num)):
    n = raw_input("num :")
    num_array.append(int(n))
print 'ARRAY: ',num_array
b = 0
count = 0
while b< num -1 or b>0:
    count = count+1
    if num_array[b]!= 0:
        b =  b + num_array[b]
    else:
        b = (b + num_array[b])*2
print count

我正在尝试将数组作为输入和d存储索引值,该变量正在更新其值。但是我收到列表超出范围的错误

请帮帮我

1 个答案:

答案 0 :(得分:1)

您的情况while b < num-1 or b>0没有意义。对于大于or b>0的所有值,True部分为num-1。相反,您应该使用and

while b < num-1 and b > 0:

或更短,使用比较链:

while 0 < b < num-1:

另外,请注意,数组索引从0num-1num是长度),所以实际上条件应该是(不测试):

while 0 <= b < num: