0

ユーザーが数字を推測する平均回数を見つけようとしています。ユーザーは、やりたい問題の数を尋ねられ、プログラムはその数の問題を与えます。彼らが推測して間違った回数、推測して正解した回数を記録し、2 つの平均を見つけるのに苦労しています。これは私がこれまでに持っているものです

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

ありがとう!

4

2 に答える 2

1

だから私はあなたのスタイルを窮屈にしないようにできるだけ変更を少なくしようとしました. このように考えてみてください。正しい答えを得るために必要な推測の平均数は、推測の総数を正しい推測の数で割ったものです。ユーザーが最終的に正しい答えを得られるようにするため、正しい推測の数は問題の数になります。

したがって、HOOBLAH() を実行するたびに、正しい答えを得るためにかかった推測の数を返します。for ループの外側でこれらすべてを合計し、ループの最後で、推測の数を問題の数で割ると、答えが得られます。また、python は '+=' をサポートしているとは思わないので、AVGcounter+=1 を AVGcounter = AVGcounter +1 に変更する必要があるかもしれませんが、私は完全に間違っているかもしれません。言語をたくさん切り替えます!

1 つの注意点は、numGuesses を float ( 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()
于 2013-04-18T05:47:42.597 に答える
0

あなたが何をしようとしているのか完全にはわかりませんが、ユーザーに x の数の問題を与え、問題ごとの平均推測数を見つけたい場合は、 HOOBLAH() 関数がその数を返すようにする必要があります。実行ごとの推測の。メソッド呼び出しの外でこれを追跡し、最後に平均化することができます。しかし、現在、あなたのプログラムは、HOOBLAH() 関数呼び出しの外で、推測の数をカウントするために使用している変数のように見える AVGcounter にアクセスできません。

于 2013-04-18T05:40:39.557 に答える