2013-04-18 107 views
0

我试图找到的平均次数,用户猜测的数字。用户被问到他们想要做多少问题,然后程序会给他们很多问题。我无法记录他们猜测的次数,出现错误,猜测并找到正确答案,并找到两者之间的平均值。这是我到目前为止Python-查找平均

print("Hello!") 
from random import randint 

def HOOBLAH(): 
    randomA = randint(0,12) 
    randomB = randint(0,12) 
    answer = 0 
    CORRECTanswer = (randomA*randomB) 
    REALanswer = (randomA*randomB) 
    AVGcounter = 0 
    AVGcorrect = 0 
    AVERAGE = 0 
    print("What is {0} * {1} ?".format(randomA,randomB)) 
    while answer != REALanswer: 
     an = input("What's the answer? ") 
     answer = int(an) 
     if answer == CORRECTanswer: 
      AVGcorrect+=1 
      print("Correct!") 
      AVERAGE+=((AVGcorrect+AVGcounter)/AVGcorrect) 
     else: 
      AVGcounter+=1 
      if answer > CORRECTanswer: 
       print("Too high!") 
      else: 
       print("Too low!") 


def main(): 
    numPROBLEMS = input("How many problems would you like to solve? ") 
    PROBLEMS = int(numPROBLEMS) 
    if PROBLEMS in range(1,11): 
     for PROBLEMS in range(PROBLEMS): 
      HOOBLAH() 
     else: 

      print("Average number of tries: {0}".format(HOOBLAH,AVERAGE)) 

    else: 
     print("Please input a value between 1 through 10!") 
main() 

谢谢!

回答

1

于是,我就尽量少改变,因为不抽筋你的风格。所以想想这样,获得正确答案所需的平均猜测次数就是猜测的总数除以正确猜测的次数。因为你确保用户最终得到正确的答案,正确的猜测数量就是问题的数量!

所以每次运行HOOBLAH(),返回猜的次数就走上得到正确的答案。在for循环之外添加所有这些,然后在循环结尾,将猜测数除以问题的数量,然后得到答案!另外,我不认为Python支持“+ =”,所以你可能需要更改AVGcounter + = 1〜AVGcounter = AVGcounter +1,但我完全可能是错误的,我的语言一堆之间切换!

一笔记我投numGuesses到浮动(浮动(numGuesses)),这是确保int数据类型不会截断你的平均水平。例如,你不希望5/2出现2,你希望它是2.5,一个浮点数!

希望有帮助!

from random import randint 

def HOOBLAH(): 
    randomA = randint(0,12) 
    randomB = randint(0,12) 
    answer = 0 
    CORRECTanswer = (randomA*randomB) 
    REALanswer = (randomA*randomB) 
    AVGcounter = 0 
    AVERAGE = 0 
    print("What is {0} * {1} ?".format(randomA,randomB)) 
    while answer != REALanswer: 
     an = input("What's the answer? ") 
     answer = int(an) 
     if answer == CORRECTanswer: 
      print("Correct!") 
      return AVGcounter 
     else: 
      AVGcounter+=1 
      if answer > CORRECTanswer: 
       print("Too high!") 
      else: 
       print("Too low!") 


def main(): 
    problemsString = input("How many problems would you like to solve? ") 
    numProblems = int(problemsString) 
    numGuesses = 0 
    if numProblems in range(1,11): 
     for problem in range(numProblems): 
      numGuesses = numGuesses + HOOBLAH() 
     print("Average number of tries: " + str(float(numGuesses)/numProblems) 

    else: 
     print("Please input a value between 1 through 10!") 
main() 
+0

)感谢您的帮助!我没有考虑将问题的数量作为变量而不是正确的猜测数量,这确实帮助我理解了如何做到平均数,而且我一直在做很多研究python是因为它是我学习的当前语言,在运算符列表中,'+ ='在该列表中,我使用它是因为在之前的问题中,有人告诉我使用起来更方便。虽然(: – 2013-04-19 03:01:46

+0

这里是修订版,包括你的输入和我的。我不得不改变一些东西,因为它只是一个简单的语法在这里和那里。总而言之,该程序的工作就像它应该,我只是想感谢您的帮助。 – 2013-04-19 03:12:19

0

我并不完全确定你想要做什么,但是如果你想给用户一些问题,并且找到每个问题的平均猜测次数,那么你需要你的HOOBLAH()函数返回每次运行的猜测次数。你可以跟踪你的方法调用之外的情况,并在最后平均。但现在,你的程序必须AVGcounter,这似乎是你使用计数猜测的次数的变量中,HOOBLAH()函数调用外没有访问。

+0

是的,我在使AVGcounter变量有效工作时遇到了问题,但我仍然对此感到陌生,并非一切都合情合理。你说的话确实有道理,我将在未来使用这些知识来帮助我。感谢(: – 2013-04-19 03:03:55