Python 代码给出了 IndexError 尽管给出了输出
Python code gives IndexError despite giving ouput
我在 python 代码中得到一个 IndexError
。
这是代码:
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
奇怪的是,我尝试在 while 循环中打印 c1
和 c2
的值,并且每次迭代都会打印它。
这个循环:
while cardp_1 != [] or cardp_2 != []:
说只要 either 数组不为空就继续迭代,但是你做的第一件事就是从 both[=17 中获取第一个元素=].如果一个数组为空,您将遇到您描述的错误。
我在 python 代码中得到一个 IndexError
。
这是代码:
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
奇怪的是,我尝试在 while 循环中打印 c1
和 c2
的值,并且每次迭代都会打印它。
这个循环:
while cardp_1 != [] or cardp_2 != []:
说只要 either 数组不为空就继续迭代,但是你做的第一件事就是从 both[=17 中获取第一个元素=].如果一个数组为空,您将遇到您描述的错误。