练习:从字符串的后面开始查找可能导致数字大于或等于100的所有数字,然后停止并找到之前的数字的平均值
def avgBackwList(values):
total = 0
for i in range(1,len(values)+1):
while values[-i] <= 100:
total = total + int(values[-i])
return (total/i)
values = [110,2,4]
print(avgBackwList(values))
答案 0 :(得分:1)
该行
while values[-i] <= 100:
只要values[i]
小于或等于100,就会导致函数循环。因为while
块中的任何内容都不会更改values[i]
,如果完全输入了循环它永远不会终止。
您的功能存在其他问题,这意味着它无法正常工作,但首先,您可以尝试将该行更改为
while total <= 100:
...至少有可能终止,因为total
块内的while
已被更改。
答案 1 :(得分:0)
函数中的while循环计算bool值[-1]&lt; = 100.因为这是真的,它永远不会打破循环。
答案 2 :(得分:0)
您创建了一个无限while
循环。你的while循环的条件是:
while values[-i] <= 100:
为了使这个循环到达每一端,最终values[-i] <= 100
需要评估为False
。但是,i
在您的情况下永远不会有机会更改,因为while
循环需要完成for
循环才能继续。为了更清楚地了解发生的情况,请遵守以下内容:
In [8]: for i in ['a', 'b', 'c']:
...: print(i)
...: j = 0
...: while j < 5:
...: print(j)
...: j += 1
a
0
1
2
3
4
b
0
1
2
3
4
c
0
1
2
3
4
换句话说,for循环到达值'a'
,然后while循环完成0-4,然后外循环for循环到'b'
,依此类推。为了您的利益,我不想为您解决您的家庭作业。我会说,关于您当前的代码,您需要找到一种方法来最终while
条件False
,而不依赖于外部for循环生成的值的更改。