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

^这是问题所在,每次运行此函数时,我都希望它向不同的变量返回不同的值。前任。测试1,测试2,测试3。

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)

请注意,这*scores是将列表作为参数传递给您的 calcAverage 函数。最好让 calculateAverage 成为一个通用函数,它接受一个值列表并计算它们的平均值(即不仅仅适用于五个数字):

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 回答