2017-01-12 8 views
0

私はちょうどPythonを使い始めていて、単純な "Rock、Paper、Scissors"ゲームを書いていますが、プレイヤーとAIの選択肢を比較する方法は私には意味がありません。彼らの勝利/失う条件は、私が設定したものとは逆のようです。なぜこれらのブール値はPythonで動作するのですか?

#Rock Paper Scissors 
import random 

print("Welcome to Rock, Paper, Scissors!") 
print() 
print() 
choices = ["rock", "paper", "scissors"] 

choices[0] < choices[1] 
choices[1] < choices[2] 
choices[2] < choices[0] 

def game(): 
    player_choice = input("What will you choose?: " ).lower() 
    print() 
    ai_choice = random.choice(choices) 
    who_chose = print("You chose",player_choice,"and the computer chose",ai_choice) 

    if player_choice not in choices: 
     print("Sorry, that is not a valid option, please choose again.") 
     print() 
     game() 
    elif player_choice > ai_choice: 
     who_chose 
     print("The computer wins!") 
     print() 
    elif player_choice == ai_choice: 
     who_chose 
     print("It was a tie!") 
     print() 
    else: 
     who_chose 
     print("You Win!") 
     print() 
    play_again = input("Do you want to play again? (y/n): ").lower() 
    if play_again in ["yes", "y"]: 
     game() 
    else: 
     print("Thanks for playing") 


game() 

私はここに彼らの階層を設定します。

choices[0] < choices[1] 
choices[1] < choices[2] 
choices[2] < choices[0] 

しかし、私はそれらを比較するとき、ここでは後方のようですが、それはロックの紙はさみのルールにoccordanceで動作します:

elif player_choice > ai_choice: 
     who_chose 
     print("The computer wins!") 
     print() 

答えて

0
choices[0] < choices[1] 
choices[1] < choices[2] 
choices[2] < choices[0] 

<はブール演算子です。つまり、値を比較し、それが真であるかどうかを判断しようとしますまたは偽であれば、それは割り当てではありません。これらのステートメントの1つをコンソールに入力してみてください。 Pythonは文字列のアルファベット順を解釈します。

私が今考えていることをやり遂げる最も簡単な方法は、真理値表を作成することです。

#rock, paper, scissors 
t=[0, 1, 0; #rock 
    0, 0, 1; #paper 
    1, 0, 0] #scissors 

、次のようにすることをインデックス:

t[player_choice,ai_choice] 

を、それが1を返す場合、あなたが獲得しています。

+0

ああ、意味があります。ありがとうございました! – Runnamuck

+0

また、私はそれをもう一度見ていました。正しく理解すれば、ストリングの長さがゲームの勝利条件とちょうど一致するため、今動作する理由はありますか?例 "はさみ"がはさみが紙を打つように "紙"より長いですか? – Runnamuck

+0

あなたは正しいです、私はちょうどチェックしました、そして、実際に何かします。 Apperently Pythonはアルファベット順を調べるので、はさみは紙を打つ。なぜなら 's'はアルファベットの下にあるからだ – TheLaurens

関連する問題