有一个程序给出了每天的温度列表,您需要使用 dec 找到每周平均温度。但问题是,起初一切顺利,但在第三周,算法就这样结束了。我想查看调试器,突然满足停止条件,但是没有,解释器愚蠢地退出循环,好像它用完了参数,开始显示列表,但那里仍然有很多元素。问题是什么?请告诉我
temps = list(reversed([20.6, 19.4, 19.0, 19.0, 22.1,
22.5, 22.8, 24.1, 25.6, 27.0,
27.0, 25.6, 26.8, 27.3, 22.5,
25.4, 24.4, 23.7, 23.6, 22.6,
20.4, 17.9, 17.3, 17.3, 18.1,
20.1, 22.2, 19.8, 21.3, 21.3,
21.9]))
print(temps)
days = deque(maxlen=7)
for temp in temps:
# Добавляем температуру в очередь
a = temps.pop()
days.append(a)
print(days)
print(temps)
if len(days) == days.maxlen:
print('temp',round(sum(days) / len(days), 2), end='; ')
days.clear()
print("")
如果你有一个循环变量来迭代集合,为什么会这样?将这些行替换为:
在循环中更改您正在迭代的集合是导致误解的直接途径。
如果你仍然想用 来保持循环的内部逻辑
pop
,那么只需遍历列表的副本,那么循环内的所有内容都可以保持不变: