首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >石头,布,剪刀游戏。编写有效的print语句

石头,布,剪刀游戏。编写有效的print语句
EN

Stack Overflow用户
提问于 2013-04-30 06:28:37
回答 2查看 136关注 0票数 0

下面是我的代码:

代码语言:javascript
复制
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()返回的结果

EN

回答 2

Stack Overflow用户

发布于 2013-04-30 06:34:46

你所要求的部分是微不足道的。由于您没有给我们提供所需的输出格式,我将对其进行猜测,希望您可以将其修复为与您希望的方式相匹配:

代码语言:javascript
复制
def printResults(userNameWins, computerWins, draws)
    print('user won {} times, computer won {} times, and players drew {} times'
          .format(userNameWins, computerWins, draws))

然而,您的代码将无法工作,至少有两个原因。

首先,您将其称为:

代码语言:javascript
复制
calculate(userChoice,choice)

…它返回你想要的3个值,但是你永远不会把它们存储在任何地方。特别是,您不会将它们或其他任何内容存储在名为userNameWinscomputerWinsdraws的变量中。所以,这样就会得到一个NameError

代码语言:javascript
复制
printResults (userNameWins, computerWins, draws) 

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

票数 0
EN

Stack Overflow用户

发布于 2013-04-30 08:28:35

很抱歉让你久等了,但希望这个解决方案能对你有所帮助。

代码语言:javascript
复制
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函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16289286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档