擅长:python、mysql、java
<p>你可以这样使用:</p>
<pre><code>def average_factory():
count_numbers = 0
sum_numbers = 0
def wrapper(number):
nonlocal count_numbers
nonlocal sum_numbers
sum_numbers += number
count_numbers += 1
return sum_numbers / count_numbers
return wrapper
def get_number(message):
str_number = input(message)
try:
return int(str_number)
except (ValueError, TypeError):
print('Invalid number, please try again')
return get_number(message)
def get_average_of_all_tests():
count_tests = get_number('How many tests? ')
get_average = average_factory()
average = 0
for test_number in range(1, count_tests + 1):
number = get_number('Enter Grade #{test_number}: '.format(test_number=test_number))
average = get_average(number)
return average
</code></pre>
<p>是的,这个解决方案似乎有点复杂,一般工厂。但我认为仅仅为了计算平均值而存储所有的值并不是一个好主意。只存储成绩的计数和总和更好。
如果您对解决方案有任何疑问,请随时向我咨询。你知道吗</p>