在Python 3和True / False条件下的While循环

时间:2019-01-16 23:03:24

标签: python python-3.x loops while-loop

因此,这次我将通过一系列有关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被认为甚至无法初始化代码是什么?

3 个答案:

答案 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。