因此,这次我将通过一系列有关YT的视频来学习Python,这一次,我们将介绍循环。因此,示例代码为:
given_list2=[5,4,4,3,1,-2,-3,-5]
total3=0
i=0
while True:
total3+=given_list2[i]
i+=1
if given_list2[i]<=0:
break
print(total3)
运行脚本,结果是17。然后,通过测试代码,我将True
交换为False
,如下:
given_list2=[5,4,4,3,1,-2,-3,-5]
total3=0
i=0
while False:
total3+=given_list2[i]
i+=1
if given_list2[i]<=0:
break
print(total3)
结果是0。我想了解为什么会这样。就像,True
被认为可以继续运行代码,而False
被认为甚至无法初始化代码是什么?
答案 0 :(得分:0)
答案为limitBodySize: async (req, res, next) => {
...
try {
if (admin) {
await urlencoded(req, res)
await json(req, res)
} else {
await limitedUrlencoded(req, res)
await limitedJson(req, res)
}
next()
} catch (error) {
// if error occurs here, you probably need to figure out what your next issue is
next(error)
}
}
的原因是因为0
意味着循环的主体甚至一次都不会执行,并且while False
仅在主体循环,其值将与循环之前保持不变,由于循环循环上方有total3
行,因此其值为0
。
为了使循环体执行total3=0
之后的表达式的值,应为truthy。最常见的真实值是while
。
答案 1 :(得分:-1)
while循环评估条件并在条件评估为True
时在其块中执行代码,否则退出循环。条件True
导致循环无限继续,因为它只能评估为True,而条件False
导致循环立即退出而无需在其块中运行代码。
我知道这只是一个使用while循环的示例,但是,如果这是一个实际用例,则您想使用for循环。
given_list2 = [5, 4, 4, 3, 1, -2, -3, -5]
total3 = 0
for n in given_list2:
if n > 0:
total3 += n
else:
break
print(total3)
甚至
total3 = sum(n for n in given_list2 if n > 0)
答案 2 :(得分:-1)
True和False是布尔文字值。也就是说,它们的值是已知的并由语言设置。试想一下,如果您有类似的事情:
while 1 < 2:
“ 1”和“ 2”是整数文字值。表达式永远不变,结果将始终相同。在这种情况下,结果是等于True
的布尔值。
因此,以“ True”或任何不变的真实表达式(例如1 < 2
)为条件的while循环将要“永远”运行,因为它永远不会通过该测试。停止这种循环的唯一方法是生成键盘异常(通常通过按“ Ctrl-C”键),或者使未捕获的异常发生在代码内的某个地方,或者使某些代码执行{{1} }。
在您的示例中,您将break
中的数字相加,并在遇到负数时停止(通过执行given_list2
)。因此,正数之和为17。
类似地,一个break
循环具有“ False”或任何不变的false表达式,因为该条件永远不会运行,因为while
的第一个测试将失败,循环将中止。这样就不会执行任何内部代码。
在您的示例中,您从while 1 > 2
开始,从不运行任何代码,因此它保持为0。