0

ユーザーから5つの整数を取得し、それらの平均を求めるプログラムを作成しようとしています。5つの数値を取り込むように設定しましたが、後で使用できるように、すべてを個別の変数として返すにはどうすればよいですか?ありがとう!

def main():
    x = 0
    testScoreNumber = 1
    while x < 5:
        getNumber_0_100(testScoreNumber)
        x += 1
        testScoreNumber += 1

    calcAverage(score1, score2, score3, score4, score5)

    print(calculatedAverage)

def getNumber_0_100(testnumber):
    test = int(input("Enter test score " + str(testnumber) + ":"))
    testcount = 0
    while testcount < 1:
        test = int(input("Enter test score " + str(testnumber) + ":"))

        if test > 0 or test < 100:
            testcount += 1

    return test

^ここに問題があります。この関数を実行するたびに、別の変数に別の値を返すようにします。元。test1、test2、test3。

def calcAverage(_score1,_score2,_score3,_score4,_score5):
    total = _score1 + _score2 + _score3 + _score4 + _score5
    calculatedAverage = total/5

    return calculatedAverage
4

3 に答える 3

3

結果をどこかに保存する必要があります。通常(常に?)変数名を動的に作成することは悪い考えです(ただし、を使用して作成することは可能globalsです)。結果を保存する一般的な場所は、リストまたは辞書です。この場合は、リストを使用します。

コードのこの部分を変更します。

x = 0
testScoreNumber = 1
while x < 5:
    getNumber_0_100(testScoreNumber)
    x += 1
    testScoreNumber += 1

に:

results = []
for x in range(5):
    results.append( getNumber_0_100(x+1) )

これはさらに凝縮することができます:

results = [ getNumber_0_100(x+1) for x in range(5) ]

次に、その結​​果リストを次の関数に渡すことができます。

avg = get_ave(results[0],results[1],...)
print(avg)

または、速記のために解凍演算子を使用できます。

avg = get_ave(*results)
print(avg)
于 2012-11-09T04:04:51.983 に答える
1

呼び出し元がその戻り値で何をするかを言うのは、戻り関数の責任ではありません。あなたの場合、mainに戻り値を追加するリストを持たせるのは簡単です。あなたはこれを行うことができます:

scores = []
for i in range(5):
    scores.append(getNumber_0_100(i))

calcAverage(*scores)

*scorescalcAverage関数に引数としてリストを渡すことに注意してください。おそらく、calculateAverageを、値のリストを取得してそれらの平均を計算する一般的な関数にする方がよいでしょう(つまり、5つの数値だけで機能するわけではありません)。

def calcAverage(numbers):
    return sum(numbers) / len(numbers)

それならあなたはそれをただで呼ぶでしょうcalcAverage(scores)

最初の部分を書くためのよりPythonicな方法はscores = [getNumber_0_100(i) for i in range(5)]

于 2012-11-09T04:05:23.087 に答える
0

Pythonではタプルを返すことができ、戻り値を受け取ったときにこのタプルを展開できます。例えば:

def return_multiple():
    # do something to calculate test1, test2, and test3
    return (test1, test2, test3)

val1, val2, val3 = return_multiple()

ただし、ここでの制限は、返す変数の数を知る必要があることです。入力の数が可変である場合は、リストを使用することをお勧めします。

于 2012-11-09T04:05:30.040 に答える