0

这是我的代码:

from random import*
from myro import*
from math import*

def computerChoice():
   computer = randint(0,2)
   if (computer == 0):
     choice = "rock"
   elif(computer == 1):
     choice = "paper"
   else:
     choice = "scissors"

  return choice

def userGuess():
     print " R = Rock"
     print " P = Paper"
     print " S = Scissors"

     userChoice = raw_input("Enter R, P, or S: ")

     return userChoice

def calculate(userChoice, choice):

    userNameWins = 0
    computerWins = 0
    draws = 0

    if(userChoice == "R" and choice == "paper"):
       speak("scribbler wins")
       computerWins = computerWins + 1
    elif(userChoice== "R" and choice == "scissors"):
       speak( "you win")
        userNameWins = userNameWins + 1
    elif(userChoice== "P" and choice == "rock"):
       speak("you win")
       userNameWins = userNameWins + 1
    elif(userChoice== "P" and choice == "scissors"):
       speak("scribbler wins")
       computerWins = computerWins + 1
    elif(userChoice == "S" and choice == "rock"):
       speak("scribbler wins")
       computerWins = computerWins + 1
    elif(userChoice == "S" and choice == "paper"):
       speak("you win")
       userNameWins = userNameWins + 1
    else:
       speak("Draw")
       draws = draws + 1

    return userNameWins, computerWins, draws

def printResults(userNameWins, computerWins, draws)
    # insert code for print statement

def main():

    for x in range (5):
         speak("Rock Papers Scissors ")
         userChoice = userGuess()
         choice = computerChoice()
         calculate(userChoice,choice)
    printResults (userNameWins, computerWins, draws) 

当我尝试定义一些变量时出现错误,我不知道为什么。我需要一个函数来正确打印返回的结果calculate()

4

2 回答 2

0

你要求的部分是微不足道的。由于您没有给我们所需的输出格式,我会猜测它,希望您可以修复它以匹配您希望它的外观:

def printResults(userNameWins, computerWins, draws)
    print('user won {} times, computer won {} times, and players drew {} times'
          .format(userNameWins, computerWins, draws))

但是,您的代码无法正常工作,至少有两个原因。


首先,你称之为:

calculate(userChoice,choice)

...它返回您想要的 3 个值,但您永远不会它们存储在任何地方。特别是,您不要将它们或其他任何内容存储在名为userNameWinscomputerWins和的变量中draws。所以,这个喜欢会得到一个NameError

printResults (userNameWins, computerWins, draws) 

其次,您在一个函数上循环 5 次,每次都返回一组完整的值,但您只调用printResults一次,而不是 5 次。我不确定您在这里的意图是什么,但很可能您需要printResults进入循环,或者您需要添加代码来总结所有循环的结果。

于 2013-04-29T22:34:46.380 回答
0

抱歉等待,但希望此解决方案对您有所帮助。

from random import randint
#from myro import *
choice = None
userChoice = None
userNameWins = 0
computerWins = 0
draws = 0

def computerChoice():
   global choice
   computer = randint(0,2)
   if (computer == 0):
     choice = "rock"
   elif(computer == 1):
     choice = "paper"
   else:
     choice = "scissors"
   print "Scribbler selected " + choice
   return choice

def userGuess():
     global userChoice
     print " R = Rock"
     print " P = Paper"
     print " S = Scissors"

     userChoice = raw_input("Enter R, P, or S: ")

     return userChoice

def calculate(userChoice, choice):
    global userNameWins
    global computerWins
    global draws
    if(userChoice == "R" and choice == "paper"):
       print("scribbler wins")
       computerWins = computerWins + 1
    elif(userChoice== "R" and choice == "scissors"):
       print( "you win")
       userNameWins = userNameWins + 1
    elif(userChoice== "P" and choice == "rock"):
       print("you win")
       userNameWins = userNameWins + 1
    elif(userChoice== "P" and choice == "scissors"):
       print("scribbler wins")
       computerWins = computerWins + 1
    elif(userChoice == "S" and choice == "rock"):
       print("scribbler wins")
       computerWins = computerWins + 1
    elif(userChoice == "S" and choice == "paper"):
       print("you win")
       userNameWins = userNameWins + 1
    else:
       print("Draw")
       draws = draws + 1

def printResults():
    print "You won " + str(userNameWins) + " times"
    print "Scribbler won " + str(computerWins) + " times"
    print "There were " + str(draws) + " draws"
    if (userNameWins > computerWins):
       print "You win overall"
    elif (userNameWins < computerWins):
       print "Scribbler wins overall"
    else:
       print "It was a dead heat"

def main():
    global userChoice
    global choice
    for x in range (5):
         print ("Rock Papers Scissors ")
         userChoice = userGuess()
         choice = computerChoice()
         calculate(userChoice,choice)
    printResults ()
main()

我没有myro安装,所以我用它print来显示结果。在您没有将结果的变量保存在任何地方之前,所以我创建了一个全局变量,以便它可以存储变量。我也完成了这个printResults功能。

于 2013-04-30T00:28:35.013 回答