[英]Functions only returns else condition but not if
我正在 python 中制作剪刀石頭布程序。
我寫了一個 function 應該返回游戲結果但它只返回 else 條件,怎么辦?
這是程序的代碼。
import random
def emove():
computer=["r","p","s"]
return(random.choice(computer))
def winner():
if user == "r" and emove == "p":
return("Computer won!")
elif user == "p" and emove == "r":
return("You won!")
elif user == "p" and emove == "s":
return("Computer won!")
elif user == "s" and emove == "p":
return("You won!")
elif user == "r" and emove == "s":
return("You won!")
elif user == "s" and emove == "p":
return("You won!")
elif user == emove:
return("Tie")
else:
return("Wrong input")
user=input("Welcome to Rock Paper Scissors, to play enter the initial letter of the choice you make:").lower()
while user:
print("Computer chose",emove(),",you chose", (user), winner() )
playagain = input("Play again? (y/n): ").lower()
if playagain =="n":
print("Thanks for playing")
break
emove 是一個emove
,所以 emove emove == "p"
總是返回Flase
因此,我建議您進行以下細微更改:
import random
def emove():
computer=["r","p","s"]
return(random.choice(computer))
def winner():
if user == "r" and em == "p":
return("Computer won!")
elif user == "p" and em == "r":
return("You won!")
elif user == "p" and em == "s":
return("Computer won!")
elif user == "s" and em == "p":
return("You won!")
elif user == "r" and em == "s":
return("You won!")
elif user == "s" and em == "p":
return("You won!")
elif user == em:
return("Tie")
else:
return("Wrong input")
user=input("Welcome to Rock Paper Scissors, to play enter the initial letter of the choice you make:").lower()
while user:
em=emove()
print("Computer chose",em,",you chose", (user), winner() )
playagain = input("Play again? (y/n): ").lower()
if playagain =="n":
print("Thanks for playing")
break
因為你在winner()
emove()
中缺少function 括號emove()。
def winner():
print(user,emove())
var = emove() # storing random choice in variable.
if user == "r" and var == "p":
return ("Computer won!")
elif user == "p" and var == "r":
return ("You won!")
elif user == "p" and var == "s":
return ("Computer won!")
elif user == "s" and var == "p":
return ("You won!")
elif user == "r" and var == "s":
return ("You won!")
elif user == "s" and var == "p":
return ("You won!")
elif user == var:
return ("Tie")
else:
return ("Wrong input")
您的代碼幾乎是正確的,但是您的實現存在一些問題。 這是您的代碼的一個版本,我認為它可以滿足您的所有需求:
import random
def computer_move():
computer = ["r", "p", "s"]
return (random.choice(computer))
def winner(emove):
if user == "r" and emove == "p":
return ("Computer won!")
elif user == "p" and emove == "r":
return ("You won!")
elif user == "p" and emove == "s":
return ("Computer won!")
elif user == "s" and emove == "p":
return ("You won!")
elif user == "r" and emove == "s":
return ("You won!")
elif user == "s" and emove == "p":
return ("You won!")
elif user == emove:
return ("Tie")
else:
return ("Wrong input")
while True:
user = input("Welcome to Rock Paper Scissors, to play enter the initial letter of the choice you make:").lower()
emove = computer_move()
print("Computer chose", emove, ",you chose", user, winner(emove))
playagain = input("Play again? (y/n): ").lower()
if playagain == "n":
print("Thanks for playing")
break
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.