2017-05-17 12 views
-3

これまでにゲームをプレイしてプレイしようとすると、first_player(first_choice)が常に勝ちます。それを理解しようとした後、最初のif文をランダムなprint文で置き換え、毎回それを印刷します。私が間違っているのか理解していない:私のプログラムは2つの変数(first_choiceとsecond_choice)を比較しません

while True: 

    import os 

    print("Welcome to the rock, paper, sisers Game") 
    first_player = input("Player 1 enter your name: ") 
    second_player = input("Player 2 enter your name: ") 
    print("Use p for paper, r for rock, and s for sisers") 
    first_choice = str(input("{} Pick: ".format(first_player))) 
    os.system('cls' if os.name == 'nt' else 'clear') 
    second_choice = str(input("{} Pick: ".format(second_player))) 
    os.system('cls' if os.name == 'nt' else 'clear') 

    if (first_choice == "r" or "R") and (second_choice == "s" or "S"): 
     print("{} Won!!!!!".format(first_player)) 

    elif (second_choice == "r" or "R") and (first_choice == "s" or "S"): 
     print("{} Won!!!!!".format(second_player)) 

    elif first_choice == second_choice: 
     print("It is a draw") 

    elif (second_choice == "s" or "S") and (first_choice == "p" or "P"): 
     print("{} Won!!!!!".format(second_player)) 

    elif (second_choice == "p" or "P") and (first_choice == "s" or "S"): 
     print("{} Won!!!!!".format(first_player)) 

    elif (second_choice == "p" or "P") and (first_choice == "r", "R"): 
     print("{} Won!!!!!".format(second_player)) 

    elif (second_choice == "r" or "R") and (first_choice == "p" or "P"): 
     print("{} Won!!!!!".format(first_player)) 

は、最初のif文の印刷機能に置き換え:

while True: 

    import os 

    print("Welcome to the rock, paper, sisers Game") 
    first_player = input("Player 1 enter your name: ") 
    second_player = input("Player 2 enter your name: ") 
    print("Use p for paper, r for rock, and s for sisers") 
    first_choice = str(input("{} Pick: ".format(first_player))) 
    os.system('cls' if os.name == 'nt' else 'clear') 
    second_choice = str(input("{} Pick: ".format(second_player))) 
    os.system('cls' if os.name == 'nt' else 'clear') 

    if (first_choice == "r" or "R") and (second_choice == "s" or "S"): 
     print("useless random text") 

    elif (second_choice == "r" or "R") and (first_choice == "s" or "S"): 
     print("{} Won!!!!!".format(second_player)) 

    elif first_choice == second_choice: 
     print("It is a draw") 

    elif (second_choice == "s" or "S") and (first_choice == "p" or "P"): 
     print("{} Won!!!!!".format(second_player)) 

    elif (second_choice == "p" or "P") and (first_choice == "s" or "S"): 
     print("{} Won!!!!!".format(first_player)) 

    elif (second_choice == "p" or "P") and (first_choice == "r", "R"): 
     print("{} Won!!!!!".format(second_player)) 

    elif (second_choice == "r" or "R") and (first_choice == "p" or "P"): 
     print("{} Won!!!!!".format(first_player)) 
+0

if(first_choice == "r"またはfirst_choice == "R")と(second_choice == "s"またはsecond_choice == "S") 'として条件を書き直してみてください。 – Antimony

+0

私は素早く見ていましたが、間違って比較しています。 '' first_choice == "r"またはfirst_choice == "R" 'を使うと' 'first_choice ==" r "または" R " ' – sphere

答えて

1

をあなたはPythonでif condition == value or another_valueを行うことはできません。あなたのすべてのケースでanother_valueが空ではないので、常にTrueに評価されます。

あなたはそれらを個別に評価する必要があります。

if condition in {value, another_value}: 
0

このようなあなたの場合/ ELIF文をラップしてみてください:

if condition == value or condition == another_value: 

別の方法は、in演算子を使用することです

if((first_choice == "r"または "R")と(second_choice == "s"または "S")):

これはPythonでの評価の順番であるため、最初の操作を検証するだけです。

+0

あなたのコードは正しいとは思われません。おそらく' ['r'、 'R'] 'や' first_choise.lower()== 'r''の 'first_choice'のようなものです。 – iled

関連する問題