私は学校用の基本的なロックペーパーはさみコードをやっていますが、私のelifステートメントは実行されていません。Elifステートメントが印刷されない
def player1(x):
while x != 'rock' and x != 'paper' and x != 'scissors':
print("This is not a valid object selection")
x = input("Player 1? ")
def player2(x):
while x != 'rock' and x != 'paper' and x != 'scissors':
print("This is not a valid object selection")
x = input("Player 2? ")
def winner():
player1(input("Player 1? "))
player2(input("Player 2? "))
if player1 == 'rock' and player2 == 'rock':
print('Tie')
elif player1 == 'paper' and player2 == 'paper':
print('Tie')
elif player1 == 'rock' and player2 == 'paper':
print('Player 2 wins')
elif player1 == 'paper' and player2 == 'rock':
print('Player 1 wins')
elif player1 == 'rock' and player2 == 'scissors':
print('Player 1 wins')
elif player1 == 'scissors' and player2 == 'rock':
print('Player 2 wins')
elif player1 == 'paper' and player2 == 'scissors':
print('Player 2 wins')
elif player1 == 'scissors' and player2 == 'paper':
print('Player 1 wins')
elif player1 == 'scissors' and player2 == 'scissors':
print('Tie')
winner()
このコードを実行すると、「Player 1?」というメッセージが表示されます。岩、紙、はさみ以外のものは受け入れません。それから、player2も同様に処理を進めます。しかし、これはコードが終了するところであり、私のelifステートメントを実行せず、どのプレイヤーが勝利するかは印刷されません。
編集:解決済み。初心者を助けてくれてありがとう。私は完全に文字列を返すことを忘れて、変数に代入しました。
「player1」または「player2」は変数ではなく、関数参照です...それらを文字列と比較していますか? ''勝者 ''に使用したい場合は、 '' x''を呼び出し先に返すことも考えています。 – Li357