簡體   English   中英

Python-求平均值

[英]Python- Finding average

我試圖找到用戶猜一個數字的平均次數。 用戶被問到他們想做什么問題,然后程序將給他們帶來很多問題。 我在記錄他們猜錯了和猜錯做對的次數以及找到兩者之間的平均值時遇到了麻煩。 這就是我到目前為止

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

謝謝!

因此,我嘗試了盡可能少的改變以免抽筋。 因此,以這種方式思考,獲得正確答案所需的平均猜測數就是總猜測數除以正確猜測數。 因為您可以確保用戶最終得到正確的答案,所以正確的猜測數量就是問題的數量!

因此,每次您運行HOOBLAH()時,都要返回獲得正確答案所需的猜測次數。 在for循環外將所有這些加在一起,然后在循環結束時,將猜測的數目除以問題的數目,然后您就會得到答案! 另外,我不認為python支持'+ =',因此您可能需要將AVGcounter + = 1更改為AVGcounter = AVGcounter +1,但是我完全可能會誤會,我在多種語言之間切換!

一個注意事項是我將numGuesses強制轉換為浮點數(float(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()

我不確定您要做什么,但是如果您想給用戶x個問題的數量,並找到每個問題的平均猜測數,您將希望HOOBLAH()函數返回該數字每次運行的猜測。 您可以在方法調用之外對此進行跟蹤,並在最后進行平均。 但是現在,您的程序無法訪問AVGcounter,這似乎是您用來在HOOBLAH()函數調用之外計算猜測數量的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM