我正在尝试创建一个从用户那里获取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
答案 0 :(得分: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)
答案 1 :(得分: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)]
答案 2 :(得分:0)
Python允许您返回一个元组,并且您可以在收到返回值时展开此元组。例如:
def return_multiple():
# do something to calculate test1, test2, and test3
return (test1, test2, test3)
val1, val2, val3 = return_multiple()
此处的限制是您需要知道您返回的变量数量。如果输入的数量是可变的,那么最好使用列表。