为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕运维8079593 2021-10-12 17:47:25
所以,我正在通过 YT 上的一系列视频学习 Python,这一次,同时涵盖了循环。示例代码是这样的:given_list2=[5,4,4,3,1,-2,-3,-5]total3=0i=0while True:    total3+=given_list2[i]    i+=1    if given_list2[i]<=0:        breakprint(total3)运行脚本,结果是 17。然后,与该码实验,我交换True对False作为这样的:given_list2=[5,4,4,3,1,-2,-3,-5]total3=0i=0while False:    total3+=given_list2[i]    i+=1    if given_list2[i]<=0:        breakprint(total3)结果它给了我 0。我试图理解为什么会这样。比如,什么被认为True是继续运行代码,什么被认为False是它甚至无法初始化代码?
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

答案是0因为这while False意味着循环体甚至不会被执行一次,并且由于total3仅在体循环中递增,因此其值将保持与循环前相同,即是0因为total3=0它上面的线。

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


查看完整回答
反对 回复 2021-10-12
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

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

while 1 < 2:

“1”和“2”是整数文字值。表达永远不会改变,结果永远是一样的。在这种情况下,结果是一个等于 的布尔值True

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

在您的示例中,您将 中的数字相加并在遇到负数时given_list2停止(通过执行 a break)。所以正数相加,即 17。

类似地,while具有“False”或任何不变的假表达式作为条件的循环永远不会运行,因为第一个测试while 1 > 2将失败并且循环将中止。这导致没有执行任何内部代码。

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


查看完整回答
反对 回复 2021-10-12
?
aluckdog

TA贡献1847条经验 获得超7个赞

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)


查看完整回答
反对 回复 2021-10-12
  • 3 回答
  • 0 关注
  • 558 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信