本题用到了while与for的配合使用,需要科普一个点:
for循环和while循环的使用场景不同,知道执行次数的时候一般用for,条件循环时一般用while,两种循环在构造死循环的区别,while循环里的条件被看成表达式,当用while构造死循环时,里面的TRUE实际上被看成永远为真的表达式,这种情况容易产生混淆。
本题理解:
(1)有一个数列,其中前三项分别为1、2、3【数列 = [1, 2, 3]】
(2)从第四项开始【len来获取l列表的长度(len(li) >= 3)】
(3)每项均为其相邻的前三项之和的1/2【len获取到的长度3以后都*0.5】
(4)从第几项开始,其数值超过1200?【明显的条件类型循环要求,while循环到1200停止】
得出:
lie = [1, 2, 3]
#初始化
sm = 0
num = 0
n = -1
while len(lie) >= 3: #长度大于3
n += 1 #自增长
for i in lie[n:n+3]: #设置一个区间
sm += i #前三项之和
num = sm * 0.5 #四开始,每项均为前三项的和的1/2(0.5)
lie.append(num) #在被选元素的结尾(仍然在内部)插入指定内容
print(lie)
if lie[n+3] >= 1200: #何时超过1200
break #一定要记得停止,不要死循环!!!!!!
print("列表从%d项开始,其数值超过1200"% (len(lie)))
输出:
最后:
循环一定要记得停止,不要死循环!!!!!!
循环一定要记得停止,不要死循环!!!!!!
循环一定要记得停止,不要死循环!!!!!!