这是一些模拟纸牌游戏的代码。(战争游戏)。当我运行它时,我收到这个错误:
player0.append(player1[range(warcard1 + 1)]
^
SyntaxError: invalid syntax
我不知道错误是什么,但也许这里有人知道。希望有人能帮我解决这个问题。当然,代码仍在进行中,所以如果有任何其他错误,我很乐意听到他们和他们可能的解决方案。
import random
cards = ['ace', 'ace', 'ace', 'ace', '1', '1', '1', '1', '2', '2', '2', '2', '3', '3', '3', '3', '4', '4', '4', '4', '5', '5', '5', '5', '6', '6', '6', '6', '7', '7', '7', '7', '8', '8', '8', '8', '9', '9', '9', '9', '10', '10', '10', '10', 'jack', 'jack', 'jack', 'jack', 'queen', 'queen', 'queen', 'queen', 'king', 'king', 'king', 'king']
order = ['ace', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'jack', 'queen', 'king']
print "shuffling cards"
random.shuffle(cards,random.random)
print "lets play"
player0 = [cards[i] for i in range(len(cards)) if i % 2 == 1]
player1 = [cards[i] for i in range(len(cards)) if i % 2 == 0]
while (len(player0) > 0 or len(player1) > 0):
nextcard0 = player0[0]
nextcard1 = player1[0]
cardplayed0 = order.index(nextcard0)
cardplayed1 = order.index(nextcard1)
if cardplayed0 > cardplayed1:
player0.append(nextcard0)
player0.append(nextcard1)
player0.remove(nextcard0)
player1.remove(nextcard1)
elif cardplayed0 < cardplayed1:
player1.append(nextcard1)
player1.append(nextcard0)
player1.remove(nextcard1)
player0.remove(nextcard0)
elif cardplayed0 == cardplayed1:
while warcardvalue0 == warcardvalue1:
if len(player0) >= 4:
warcard0 = 4
elif len(player0) < 4:
warcard0 = len(player0)
if len(player1) >= 4:
warcard1 = 4
elif len(player1) < 4:
warcard1 = len(player1)
warcardvalue0 = order.index(warcard0)
warcardvalue1 = order.index(warcard1)
if warcardvalue0 > warcardvalue1:
player0.append(player0[range(warcard0 + 1)]
player0.append(player1[range(warcard1 + 1)]
player0.remove(player0[range(warcard0 + 1)]
player1.remove(player1[range(warcard1 + 1)]
elif warcardvalue0 < warcardvalue1:
player1.append(player1[range(warcard1 + 1)]
player1.append(player0[range(warcard0 + 1)]
player1.remove(player1[range(warcard1 + 1)]
player0.remove(player0[range(warcard0 + 1)]
else
print "another war!"
if len(player1) == 0:
print "player1 won!"
elif len(player0) == 0:
print "player0 won!"
错误消息中指示的行
player0.append(player1[range(warcard1 + 1)]
^
缺少正在关闭的)
事实上,所有这些行都缺少结束符paren:
if warcardvalue0 > warcardvalue1:
player0.append(player0[range(warcard0 + 1)]
player0.append(player1[range(warcard1 + 1)]
player0.remove(player0[range(warcard0 + 1)]
player1.remove(player1[range(warcard1 + 1)]
elif warcardvalue0 < warcardvalue1:
player1.append(player1[range(warcard1 + 1)]
player1.append(player0[range(warcard0 + 1)]
player1.remove(player1[range(warcard1 + 1)]
player0.remove(player0[range(warcard0 + 1)]
您可能需要仔细查看您的代码,以确保没有此问题的其他本质。
此外,您可能会考虑(当然也会受益)使用一个为您进行paren匹配的编辑器,并提醒您类似的问题。我用了一个,它绝对值得。
如果你对这样的编辑器感兴趣,这里可能是一个开始探索选项的地方:带括号匹配的前10名最佳文本编辑器
每行append
/remove
都缺少一个右括号。