Python-код дает IndexError, несмотря на выдачу выходных данных - PullRequest
0 голосов
/ 08 июля 2019

Я получаю IndexError в коде Python.

Это код:

n = int(input())  
cardp_1 = [input() for i in range(n)]
warcount=0
m = int(input())  
cardp_2 = [input() for j in range(m)]
while cardp_1 != [] or cardp_2 != []:
    # print(cardp_1[0],cardp_2[0])
    c1 = cardp_1[0]
    c2 = cardp_2[0]
    res = stronger(c1, c2)
    if res == 1:
        cardp_1.remove(c1)
        cardp_2.remove(c2)
        cardp_1.append(c1)
        cardp_1.append(c2)
    elif res == 2:
        cardp_1.remove(c1)
        cardp_2.remove(c2)
        cardp_2.append(c1)
        cardp_2.append(c2)
if cardp_2 == []:
    print('2', warcount)
else:
    print('1', warcount)

Программа должна нормально работать, вместо этого она выдает IndexError:

Traceback (most recent call last):   File
"C:/Users/risha/PycharmProjects/HelloWorld/cards_war.py", line 9, in
<module>
    c2 = cardp_2[0] IndexError: list index out of range

Странно, я пытался напечатать значения c1 и c2 внутри цикла while, и он печатается для каждой итерации.

1 Ответ

1 голос
/ 08 июля 2019

Этот цикл:

while cardp_1 != [] or cardp_2 != []:

говорит, что нужно продолжать итерации до тех пор, пока массив либо не пуст, но затем первое, что вы делаете, - первый элемент из обоих . Если один массив пуст, вы попадете в самую ошибку, которую вы описали.

...