2016-09-20 24 views
0

こんにちは私はコーディングに新しいですが、私は非常に長いコードに立ち往生しており、ここで答えを見つけることができませんstackoverflow。Python 3.Xロックペーパーはさみトカゲのスポークの問題

私の答えは、プレーヤー1の最初のプリントで終わります。プレーヤー1が勝ちます。ロックははさみを打ちます。

player1 = input("Player One do you want Rock, Paper, Scissors, Lizard or Spock?") 
player2 = input("Player Two do you want Rock, Paper, Scissors, Lizard or Spock?") 
print(player1) 
print(player2) 

rock = 1 
paper = 2 
scissors = 3 
lizard = 4 
spock = 5 

#Tie 

if (player1 == player2): 
print("It's a tie.") 

#Player 1 wins 

elif (player1 == 1, player2 == 3): 
    print("Player One wins, Rock beats Scissors.") 
elif (player1 == 1, player2 == 4): 
    print("Player One wins, Rock beats Lizard.") 
elif (player1 == 2, player2 == 1): 
    print("Player One wins, Paper beats Rock.") 
elif (player1 == 2, player2 == 5): 
    print("Player One wins, Paper beats Spock.") 
elif (player1 == 3, player2 == 2): 
    print("Player One wins, Scissors beats Paper.") 
elif (player1 == 3, player2 == 4): 
    print("Player One wins, Scissors beats Lizard.") 
elif (player1 == 4, player2 == 2): 
    print("Player One wins, Lizard beats Paper.") 
elif (player1 == 4, player2 == 5): 
    print("Player One wins, Lizard beats Spock.") 
elif (player1 == 5, player2 == 3): 
    print("Player One wins, Spock beats Scissors.") 
elif (player1 == 5 , player2 == 1): 
    print("Player One wins, Spock beats Rock.") 

#Player 2 wins  

elif (player2 == 1, player1 == 3): 
    print("Player Two wins, Rock beats Scissors.") 
elif (player2 == 1, player1 == 4): 
    print("Player Two wins, Rock beats Lizard.") 
elif (player2 == 2, player1 == 1): 
    print("Player Two wins, Paper beats Rock.") 
elif (player2 == 2, player1 == 5): 
    print("Player Two wins, Paper beats Spock.") 
elif (player2 == 3, player1 == 2): 
    print("Player Two wins, Scissors beats Paper.") 
elif (player2 == 3, player1 == 4): 
    print("Player Two wins, Scissors beats Lizard.") 
elif (player2 == 4, player1 == 2): 
    print("Player Two wins, Lizard beats Paper.") 
elif (player2 == 4, player1 == 5): 
    print("Player Two wins, Lizard beats Spock.") 
elif (player2 == 5, player1 == 3): 
    print("Player Two wins, Spock beats Scissors.") 
elif (player2 == 5 , player1 == 1): 
    print("Player Two wins, Spock beats Rock.") 

答えて

6

条件が正しく設定されていません。

elif (player1 == 1, player2 == 3) 

これはtupleを作成し、そのtupleが空ではないので、常に成功しtruthiness、それをチェックします。これは、それらの条件の両方に該当するかどうかを確認します

elif player1 == 1 and player2 == 3 

:あなたは論理演算子andを使用する必要があります。これは、コード内のすべての同様のインスタンスで行います。

はさらに、それはあなたがここにユーザから期待しているかは不明だ:

player1 = input("Player One do you want Rock, Paper, Scissors, Lizard or Spock?") 
player2 = input("Player Two do you want Rock, Paper, Scissors, Lizard or Spock?") 
print(player1) 
print(player2) 

rock = 1 
paper = 2 
scissors = 3 
lizard = 4 
spock = 5 

ユーザーがRockのようなものを入力し、あなたが1'Rock'を変換するrock = 1ラインを期待することになっているように見えます。そのようには機能しません。これを行うための最も基本的な方法は、別のif..elifブロックであるが、辞書が良いだろう。

player1 = input("Player One do you want Rock, Paper, Scissors, Lizard or Spock?") 
player2 = input("Player Two do you want Rock, Paper, Scissors, Lizard or Spock?") 
print(player1) 
print(player2) 

d = {'Rock':1, 'Paper':2, 'Scissors':3, 'Lizard':4, 'Spock':5} 

player1 = d.get(player1) 
player2 = d.get(player2) 
+0

あなたのソリューションのコロンが見つからない - これは 'elif player1 == 1とplayer2 == 3:'これは@Omarが彼の状態であるので、初心者を混乱させるかもしれません。 – Maurice

+0

@Maurice - 私は完全な行を引用していませんでした。 – TigerhawkT3

+0

こんにちは、あなたの答えは本当にありがとう、私はあなたが 'と'と 'd'を使うことができるか分からなかった。残念なことに、私は何らかの組み合わせをしようとすると、ユーザーの入力(1,2,3,4など)以外は何も表示しません。 – Omar

0

TigerHawkがあなたのcondictionをカバーしている間、あなたはまた、int型へのご入力をキャストする必要があります。

player1 = int(player1) 
player2 = int(player2) 

は今、あなたはint型(player == 1)にSTR(ご入力)を比較しています。あなたが望むものは得られません。

player1 == 1  #fails right now since it's like asking "1" == 1 which fails. 
int(player1) == 1 # passes since it's asking 1 == 1. 

print("It's a tie.")も間違っています。

+0

TigerHawkのソリューションで同じ問題が発生していても、不幸にも助けてくれてありがとうございます。私が得る唯一の出力は、1,2,3,4のようなユーザー入力です。 。 – Omar

+0

あなたの 'print("これはネクタイ。 ")'は間違ってインデントされています。 @Omarあなたの質問にあなたのコードを編集したいかもしれません。 – MooingRawr

+0

私はちょうどそれを修正しましたが、上記のように問題はまだここにあります。 – Omar

関連する問題