如何计算for循环中输入的总和

2024-05-05 13:26:49 发布

您现在位置:Python中文网/ 问答频道 /正文

所以基本上我想计算(x)个测试分数的平均值。到目前为止,这就是我所拥有的:

for i in range(3):
    testmark = int(input("Enter one test mark: "))
print("Calculating...")
average = (testmark + testmark + testmark) / (i + 1)
print("Your average is", average, "percent.")

但是,我希望它使平均变量将所有输入相加。现在,我这样做,它只计算3。我希望它像:

for i in range(7):
    testmark = int(input("Enter one test mark: "))
print("Calculating...")
average = (**[sum of all test marks]**) / (i + 1)
print("Your average is", average, "percent.")

Tags: intestforinputyourisrangeone
2条回答

让我们先来看看你遇到的问题以及如何解决它们

for i in range(3):
    testmark = int(input("Enter one test mark: "))
print("Calculating...")
average = (testmark + testmark + testmark) / (i + 1)
print("Your average is", average, "percent.")
  1. 每次迭代都重写testmark,这意味着只存储ONE
  2. 您尝试在for循环之外调用i,如果之前未定义i,则调用将失败

我们可以调整您的代码,使其更具弹性,并为最终用户提供更多修改函数的能力,例如我们可以如何测试迭代以及我们想要计算的testmarks

test_marks = []
tests = int(input('How many tests are there? '))

#How many tests are there? 5

for i in range(tests):
    test_marks.append(int(input("Enter one test mark: ")))

#Enter one test mark: 5
#Enter one test mark: 10
#Enter one test mark: 56
#Enter one test mark: 99
#Enter one test mark: 1

print(f"The average test mark is: {sum(test_marks) / len(test_marks)}")

#The average test mark is: 46.5
  1. 声明一个空列表以将标记存储为test_marks
  2. 提示用户定义要输入的测试总数
  3. 迭代整个测试并提示用户进行标记
  4. 计算并打印平均值(这是Python 3.6+语法!)

这是一个很好的机会,可以深入了解Python的一些核心工作原理,我为您的学习提供了一些链接

Iterating over lists in PythonAppending & extending listsPython 3.6 f-strings

这是一个好的开始。但是,您可以这样做:

iters = int(input("How many numbers do you have?\n"))
sum = 0
for number in range(iters):
    sum += int(input("Give a number: "))
print(f"The average of those inputs is {sum/iters}")  # I'm assuming you have Python >= 3.6 

相关问题 更多 >