摇滚,纸,剪刀游戏。编写有效的打印语句

时间:2013-04-29 22:28:37

标签: python computer-science

这是我的代码:

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()

返回的结果的函数

2 个答案:

答案 0 :(得分: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个值,但您永远不会存储它们。特别是,您不会将它们或其他任何内容存储在名为userNameWinscomputerWinsdraws的变量中。所以,这就像获得NameError

printResults (userNameWins, computerWins, draws) 

其次,你在一个函数上循环5次,每次返回一整套值,但你只调用printResults一次,而不是5次。我不确定你在这里打算做什么,但最有可能的是,你需要将printResults移动到循环中,或者你需要添加代码来汇总所有循环中的结果。

答案 1 :(得分: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功能。