通过while循环获取平均值

时间:2019-09-16 01:13:29

标签: python

错误收集器每天收集错误,持续7天。用Python编写一个程序,该程序可以连续7天收集运行错误的平均值。该程序应询问每天收集的错误数量,当循环结束时,该程序应显示一周内收集的平均错误数量。

我尝试运行我编写的这段代码,但无法获得用户输入的所有数字的平均值。它只需要输入第一个数字并将其除以7。有人可以告诉我我在做什么错吗?

i = 1

while i < 8:

    bugs = int(input('enter the amount of bugs collected today:'))

    average = bugs / 7

    i+=1

print('average amount of bugs collected in a week is:', average)

5 个答案:

答案 0 :(得分:3)

您没有将bugs collected today添加到bugs的整个集合中

您可以添加外部变量bugs = 0

然后将while之后的第一行编辑为:

bugs = int(input('enter the amount of bugs collected today:')) + bugs

您的整个代码将如下所示:

i = 1
bugs = 0

while i < 8:

    bugs = int(input('enter the amount of bugs collected today:')) + bugs

    average = bugs / 7

    i+=1

print('average amount of bugs collected in a week is:', average)

答案 1 :(得分:1)

您正在做的是从循环中的每个值获取平均值。您应该将所有值加起来,然后计算平均值,即:

i = 1

total = 0
for i in range(7):
    bugs = int(input('enter the amount of bugs collected today:'))
    total += bugs

average = total / 7
print('average amount of bugs collected in a week is:', average)

顺便说一句,在这种情况下使用for循环要优雅得多!

答案 2 :(得分:0)

假设您将所有错误都保存在列表中

weekly_bugs = [12, 42, 52, 52, 23, 75, 34]

您可以使用基本方程轻松找到平均值。

avg_bug = sum(weekly_bugs)/7

如果您坚持使用 while循环,则可以执行以下操作:

sum_bugs = 0
while(weekly_bugs):
    sum_bugs += weekly_bugs.pop()

sum_bugs/len(weekly_bugs)

答案 3 :(得分:0)

尝试一下。

days = 7

total_bugs = 0
avg_bugs = 0
running_avg = list()
for i in range(days):

    bugs = int(input('enter the amount of bugs collected today:'))
    total_bugs += bugs
    avg_bugs = total_bugs/(i+1)
    running_avg.append(avg_bugs)

print('average amount of bugs collected in a week is: {}'.format(avg_bugs))

答案 4 :(得分:-1)

除了错误的算法(已经由其他贡献者更正)之外,您的代码中还有很多非Python的模式。考虑使用 list comprehension sum()函数。

DAYS = 7
bugs = [int(input('enter the amount of bugs collected today:')) 
        for _ in range(DAYS)]
average = sum(bugs) / DAYS
print('average amount of bugs collected in a week is:', average)