错误收集器每天收集错误,持续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)
答案 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)