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

Python 3中的While循环和True/False条件,python,python-3.x,loops,while-loop,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) 结果是0。我想知道为什么会这样。比如,保持代码运行的是什么被认为是正确的,而没有初始化代码的是什么被

所以,我正在通过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)

结果是0。我想知道为什么会这样。比如,保持代码运行的是什么被认为是正确的,而没有初始化代码的是什么被认为是错误的?

答案为0的原因是,虽然False意味着循环体甚至不会执行一次,而且由于total3在循环体中只会递增,它的值将保持与循环之前的值相同,因为它上面的total3=0行是0


为了让循环体在while之后执行表达式的值,应该是。最常见的truthy值为True。

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)

True和False是布尔文字值。也就是说,它们的值是由语言知道和设置的。想象一下,如果你有这样的东西:

while 1 < 2:
1和2是整数值。表达式永远不会改变,结果总是一样的。在本例中,结果是一个等于True的布尔值

因此,一个while循环如果有True或任何不变的True表达式,比如1<2,作为条件,将希望永远运行,因为它永远不会通过测试。停止这种循环的唯一方法是通常通过按Ctrl-C生成键盘异常,或者让代码中的某个地方发生未捕获的异常,或者让某段代码执行break语句

在您的示例中,您正在将给定的_列表2中的数字相加,并在遇到负数时通过执行中断来停止。所以正数相加,等于17

类似地,如果while循环的条件为False或任何不变的False表达式,则该循环将永远不会运行,因为while 1>2的第一次测试将失败,循环将中止。这导致没有任何内部代码被执行


在您的示例中,您从total3=0开始,从不运行任何代码,因此它保持为0。

True和False将作为它们自己进行计算。虽然错误:从不进入循环。。。虽然True永远不会终止,除非您中断或从循环内部返回仅在函数中返回,但fo coursePlease不鼓励回答低质量的问题-如果您看到有重复项、显示很少研究工作或两者都有,请链接到重复项。
while 1 < 2: