猿问

Python 3 中的 while 循环和 True/False 条件

所以,我正在通过 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是它甚至无法初始化代码?


慕运维8079593
浏览 673回答 3
3回答

SMILET

答案是0因为这while False意味着循环体甚至不会被执行一次,并且由于total3仅在体循环中递增,因此其值将保持与循环前相同,即是0因为total3=0它上面的线。为了让循环体执行之后的表达式的值while应该是真的。最常见的真值是True。

慕姐8265434

True 和 False 是布尔文字值。也就是说,它们的值是由语言已知和设置的。想象一下,如果你有这样的事情:while&nbsp;1&nbsp;<&nbsp;2:“1”和“2”是整数文字值。表达永远不会改变,结果永远是一样的。在这种情况下,结果是一个等于 的布尔值True。因此,具有“True”或任何不变的真表达式(例如1 < 2,作为条件)的 while 循环将希望“永远”运行,因为它永远不会失败该测试。停止这种循环的唯一方法是生成一个键盘异常(通常通过按“Ctrl-C”),或者在代码中的某处发生一个未捕获的异常,或者让一些代码执行一个break语句。在您的示例中,您将 中的数字相加并在遇到负数时given_list2停止(通过执行 a&nbsp;break)。所以正数相加,即 17。类似地,while具有“False”或任何不变的假表达式作为条件的循环永远不会运行,因为第一个测试while 1 > 2将失败并且循环将中止。这导致没有执行任何内部代码。在您的示例中,您total3 = 0从不运行任何代码,因此它保持为 0。

aluckdog

while 循环评估条件并在条件评估为 时执行其块中的代码True,否则退出循环。条件True导致循环无限继续,因为它只能评估为 True,而False导致循环立即退出而不运行其块中的代码。我知道这只是如何使用 while 循环的一个示例,但是,如果这是一个实际用例,您会想要使用 for 循环来代替。given_list2 = [5, 4, 4, 3, 1, -2, -3, -5]total3 = 0for n in given_list2:&nbsp; &nbsp; if n > 0:&nbsp; &nbsp; &nbsp; &nbsp; total3 += n&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; breakprint(total3)甚至total3 = sum(n for n in given_list2 if n > 0)
随时随地看视频慕课网APP

相关分类

Python
我要回答