1

これが関係する可能性のある人には、

これは、カード ゲーム シミュレーションのコードです。(戦争のゲーム)。実行すると、次のエラーが表示されます。

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!"
4

2 に答える 2

5

エラーメッセージに示された行

player0.append(player1[range(warcard1 + 1)] 
                                           ^

締めくくりがありません)

実際、これらの行にはすべて閉じ括弧がありません:

       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)] 

コードを調べて、この問題の他のインスタンスがないことを確認することをお勧めします。

また、括弧のマッチングを行い、同様の問題を警告するエディターを検討することもできます (そして確かにメリットがあります) 。私は1つを使用していますが、それは間違いなく価値があります。

このようなエディターに興味がある場合は、オプションの探索を開始する場所になる可能性があります:ブレース マッチングを備えたトップ 10 のベスト テキスト エディター

于 2012-08-23T02:11:36.613 に答える
1

append/remove行ごとに閉じ括弧がありません。

于 2012-08-23T02:12:10.980 に答える