剪刀石头布 Python 程序:winOrLose() 有两个参数(给定 0)
Rock Paper Scissors Python Program: winOrLose() takes two arguments (0 given)
我正在编写一个与用户一起玩剪刀石头布的程序。我必须 运行 该程序 5 次。我正在使用 python。每当我 运行 程序并输入 "R"、"S" 或 "P" 时,程序都会导致错误:
TypeError: winOrLose() takes exactly 2 arguments (0 given)
下面是我的程序:
from myro import *
from random import *
def userOptions():
print "Press R for Rock"
print "Press P for Paper"
print "Press S for Scissors"
choice = raw_input("Your choice is: ")
if choice == "R":
return "Rock"
if choice == "P":
return "Paper"
if choice == "S":
return "Scissors"
else:
userOptions()
def computerRandom():
options = ["Rock", "Paper", "Scissors"]
cGuess = randint(0,2)
return options[cGuess]
def winOrLose(userChoice, computerChoice):
if userChoice == computerChoice:
return "Tie"
if userChoice == "Rock" and computerChoice == "Paper":
return "Computer Wins"
if userChoice == "Paper" and computerChoice == "Scissors":
return "Computer Wins"
if userChoice == "Scissors" and computerChoice == "Rock":
return "Computer Wins"
else:
return "User Wins"
while True:
userChoice = userOptions()
computerChoice = computerRandom()
print "User Chose: ", userChoice
print "Computer Chose: ", computerChoice
result = winOrLose(userChoice, computerChoice)
if result == "Tie":
print "It is a tie"
elif result == "Computer Wins":
print "Computer Wins"
else:
print "User Wins"
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
userOptions()
computerRandom()
winOrLose()
main()
请有人帮助我,我现在有点绝望,想知道如何解决这个问题。
谢谢
如错误中所述,您没有将参数传递给函数 winOrLose
在你的主要功能中
def main():
for index in range(1,5,1):
...
...
winOrLose() # in this statement you are not passing any arguments
我认为您在调用 winOrLose() 时没有任何参数,尽管定义是 def winOrLose(userChoice, computerChoice):
。您应该将值 userChoice, computerChoice
放入方法调用中。
如错误消息所示,您需要为 winOrLose
函数提供两个参数。您 return 来自 userOptions()
和 computerRandom()
的值,但没有将这些值分配给任何变量:
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
user_choice = userOptions()
computer_choice = computerRandom()
winOrLose(user_choice, computer_choice)
main()
您没有在主函数中向它传递任何参数。
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
userOptions()
computerRandom()
winOrLose()
应该是:
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
userChoice = userOptions()
computerChoice = computerRandom()
winOrLose(userChoice, computerChoice)
另一个问题是,您尝试使用 for index in range(1,5,1)
运行 它 5 次,但是您在 winOrLose
函数中遇到了一个无限循环,所以您在调用后永远不会退出第一次:
def winOrLose(userChoice, computerChoice):
if userChoice == computerChoice:
return "Tie"
if userChoice == "Rock" and computerChoice == "Paper":
return "Computer Wins"
if userChoice == "Paper" and computerChoice == "Scissors":
return "Computer Wins"
if userChoice == "Scissors" and computerChoice == "Rock":
return "Computer Wins"
else:
return "User Wins"
while True: # <=== infinite loop here.
userChoice = userOptions()
computerChoice = computerRandom()
print "User Chose: ", userChoice
print "Computer Chose: ", computerChoice
result = winOrLose(userChoice, computerChoice)
if result == "Tie":
print "It is a tie"
elif result == "Computer Wins":
print "Computer Wins"
else:
print "User Wins"
再次播放的决定很可能根本不应该在 winOrLose
函数中,而应该在它自己的函数中。
您在 userOptions
函数中也遇到了缩进错误,尽管它可能只是从这里复制过来的。
def userOptions():
print "Press R for Rock"
print "Press P for Paper"
print "Press S for Scissors"
# below code block should be indented too.
choice = raw_input("Your choice is: ")
if choice == "R":
return "Rock"
if choice == "P":
return "Paper"
if choice == "S":
return "Scissors"
else:
userOptions()
我正在编写一个与用户一起玩剪刀石头布的程序。我必须 运行 该程序 5 次。我正在使用 python。每当我 运行 程序并输入 "R"、"S" 或 "P" 时,程序都会导致错误:
TypeError: winOrLose() takes exactly 2 arguments (0 given)
下面是我的程序:
from myro import *
from random import *
def userOptions():
print "Press R for Rock"
print "Press P for Paper"
print "Press S for Scissors"
choice = raw_input("Your choice is: ")
if choice == "R":
return "Rock"
if choice == "P":
return "Paper"
if choice == "S":
return "Scissors"
else:
userOptions()
def computerRandom():
options = ["Rock", "Paper", "Scissors"]
cGuess = randint(0,2)
return options[cGuess]
def winOrLose(userChoice, computerChoice):
if userChoice == computerChoice:
return "Tie"
if userChoice == "Rock" and computerChoice == "Paper":
return "Computer Wins"
if userChoice == "Paper" and computerChoice == "Scissors":
return "Computer Wins"
if userChoice == "Scissors" and computerChoice == "Rock":
return "Computer Wins"
else:
return "User Wins"
while True:
userChoice = userOptions()
computerChoice = computerRandom()
print "User Chose: ", userChoice
print "Computer Chose: ", computerChoice
result = winOrLose(userChoice, computerChoice)
if result == "Tie":
print "It is a tie"
elif result == "Computer Wins":
print "Computer Wins"
else:
print "User Wins"
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
userOptions()
computerRandom()
winOrLose()
main()
请有人帮助我,我现在有点绝望,想知道如何解决这个问题。
谢谢
如错误中所述,您没有将参数传递给函数 winOrLose 在你的主要功能中
def main():
for index in range(1,5,1):
...
...
winOrLose() # in this statement you are not passing any arguments
我认为您在调用 winOrLose() 时没有任何参数,尽管定义是 def winOrLose(userChoice, computerChoice):
。您应该将值 userChoice, computerChoice
放入方法调用中。
如错误消息所示,您需要为 winOrLose
函数提供两个参数。您 return 来自 userOptions()
和 computerRandom()
的值,但没有将这些值分配给任何变量:
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
user_choice = userOptions()
computer_choice = computerRandom()
winOrLose(user_choice, computer_choice)
main()
您没有在主函数中向它传递任何参数。
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
userOptions()
computerRandom()
winOrLose()
应该是:
def main():
for index in range(1,5,1):
speak("Rock Paper Scissors Shoot")
userChoice = userOptions()
computerChoice = computerRandom()
winOrLose(userChoice, computerChoice)
另一个问题是,您尝试使用 for index in range(1,5,1)
运行 它 5 次,但是您在 winOrLose
函数中遇到了一个无限循环,所以您在调用后永远不会退出第一次:
def winOrLose(userChoice, computerChoice):
if userChoice == computerChoice:
return "Tie"
if userChoice == "Rock" and computerChoice == "Paper":
return "Computer Wins"
if userChoice == "Paper" and computerChoice == "Scissors":
return "Computer Wins"
if userChoice == "Scissors" and computerChoice == "Rock":
return "Computer Wins"
else:
return "User Wins"
while True: # <=== infinite loop here.
userChoice = userOptions()
computerChoice = computerRandom()
print "User Chose: ", userChoice
print "Computer Chose: ", computerChoice
result = winOrLose(userChoice, computerChoice)
if result == "Tie":
print "It is a tie"
elif result == "Computer Wins":
print "Computer Wins"
else:
print "User Wins"
再次播放的决定很可能根本不应该在 winOrLose
函数中,而应该在它自己的函数中。
您在 userOptions
函数中也遇到了缩进错误,尽管它可能只是从这里复制过来的。
def userOptions():
print "Press R for Rock"
print "Press P for Paper"
print "Press S for Scissors"
# below code block should be indented too.
choice = raw_input("Your choice is: ")
if choice == "R":
return "Rock"
if choice == "P":
return "Paper"
if choice == "S":
return "Scissors"
else:
userOptions()