2017-09-11 21 views
0

私は小学校中学生の子供たちが簡単に理解し、うまくいけば再現するために、ロックペーパーはさみをPython 3で書きたいと思っています。Python - ロックペーパーはさみ - 入力ユーザー名とスコアカウンターを含める

基本的なゲームの他に、%1を使用してplayer1とplayer2の名前を入力するオプションを組み込んで、プログラムがそれをバックアウトして印刷するようにしたいと考えています。私は私のO/Pで、このエラーを取得しておいてください。

Player 1 name: me 
Player 2 name: you 
%s, what do you choose? Rock (1), Paper (2), or Scissors(3)? 
**Traceback (most recent call last): 
    File "C:/Users/xyz/PycharmProjects/rps/scorekeeping.py", line 11, in <module> 
    print("%s, what do you choose? Rock (1), Paper (2), or Scissors(3)?") % player1 
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'** 

私も自分自身にすべてのラウンド(player2対player1)を更新するスコアカウンターを含めるようにしようとしています。通常は、1ラウンドあたり0にリセットされ、勝敗が決まります。

コードがどこに間違っているかをご確認ください。ありがとう!


player1 = input("Player 1 name: ") 
player2 = input("Player 2 name: ") 

while 1: 

    player1score = 0 
    player2score = 0 

    print("%s, what do you choose? Rock (1), Paper (2), or Scissors(3)?") % player1 

    choice1 = input("> ") 

    print("%s, what do you choose? Rock (1), Paper (2), or Scissors(3)?") % player2 

    choice2 = input("> ") 

    if choice1 == choice2 : 
     print("Its's a tie.") 
    elif choice1 - choice2 == 1 or choice2 - choice1 == 2 : 
     print("%s wins.") % player1 
     score1 = score1 + 1 
    else: 
     print("%s wins.") % player2 
     score2 = score2 + 1 

    print("%s: %d points. %s: %d points.") % (player1, score1, player2, score2) 
+0

スコア1と2は初期化されません。私はあなたのプリントに余分な括弧が必要だと思います。また、ループ内のスコアをゼロにしないでください。 – Stefan

答えて

2

あなたは印刷関数の戻り値をフォーマットしようとしています。代わりに、印刷している文字列を書式設定するには、次のように試してみてください。たとえば、最初のステートメントの場合は、試してみてください:

print("%s, what do you choose? Rock (1), Paper (2), or Scissors(3)?" % player1) 

書式設定はかっこ内で行う必要があります。

整数にご入力値を変換するために、試してみてください。

choice1 = int(input("> ")) 

を現在、あなたはwhileループの開始時にゼロにスコアをリセットしています。スコアカウンタがリセットされないようにするには、whileループの前に

player1score = 0 
player2score = 0 

を入力します。

+0

わかりました。今度はこのエラーが発生しています: **トレースバック(最近の最後のコール): ファイル "C:/Users/xyz/PycharmProjects/rps/scorekeeping.py"、行23、 elif choice1 - choice2 == 1またはchoice2 - choice1 == 2: TypeError: - : 'str'と 'str'のサポートされていないオペランドタイプ**これをどのようにして取得できますか? – choga008

+0

ユーザー入力を整数として検証し、strをintに変換する必要があります。ユーザーの入力が整数でない場合は、彼に連絡してください。 –

関連する問題