我正在寫一個玩戰爭紙牌遊戲的程序。每個玩家都有一套牌,我已經得到它隨機處理罰款。我需要它能夠比較列表中的兩個值,並根據它們的整數值做一些事情。我寫的代碼如下:什麼是無法修復的錯誤,爲什麼我無法比較列表中的值?
from random import *
def main():
cards = [1,2,3,4,5,6,7,8,9,10,11,12]*4
p1 = []
p2 = []
while len(cards) != 0:
m = randint(0,len(cards))
p1.append(cards[m-1])
del cards[m-1]
n = randint(0,len(cards))
p2.append(cards[n-1])
del cards[n-1]
print(p1, p2)
def game():
if p1[0] > p2[0]:
p1.append(p2[0])
del p2[0]
elif p2[0] > p1[0]:
p2.append(p1[0])
del p1[0]
else:
if len(p1) > len(p2):
print(p1, p2)
for i in range(1,len(p2)):
if int(p1[i]) > int(p2[i]):
p1.append(p2[0:i])
del p2[0:i]
if int(p2[i]) > int(p1[i]):
p2.append(p1[0:i])
del p1[0:i]
else:
continue
else:
print(p1, p2)
for i in range(1,len(p2)):
if int(p1[i]) > int(p2[i]):
p1.append(p2[0:i])
del p2[0:i]
if int(p2[i]) > int(p1[i]):
p2.append(p1[0:i])
del p1[0:i]
else:
continue
while len(p1) > 0 and len(p2) > 0:
game()
print("player 1 has", p1, " and player 2 has ", p2)
if len(p1) == 0:
print("Player 2 wins")
elif len(p2) == 0:
print("Player 1 wins")
input("Press enter to exit")
但是,每次我運行它都會很好地運行,直到它得到一條平行線。只要比較除前兩個值以外的任何值,就會打印此錯誤:
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
main()
File "C:\Users\Jesse\Documents\Jesse\homework\Computer Science\Programs\War.py", line 52, in main
game()
File "C:\Users\Jesse\Documents\Jesse\homework\Computer Science\Programs\War.py", line 32, in game
if p1[i] > p2[i]:
TypeError: unorderable types: int() > list()
這是什麼意思?比較前兩者和其他兩者有什麼區別?
聽起來就像你在比較列表和一個整數,因爲顯而易見的原因沒有意義。相關的代碼不會以錯誤顯示的方式顯示在代碼中,因此很難幫助您... – ThiefMaster
如果p1 [i]> p2 [i]:'代碼中有'... – martineau