首页 > 解决方案 > While循环:卡在一点

问题描述

如何找到此列表中所有负数的总和

我创建了以下代码:

given_list3 = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7]
total7 = 0
i = 0
while i < len(given_list3) and given_list3[i] < 0:
    total7 += given_list3[i]
    i += 1
print(total7)

不知道为什么它给我一个零。请帮忙。

标签: pythonwhile-loop

解决方案


给定代码中的问题是它一开始就停止运行。这是因为条件:

while i < len(given_list3) and given_list3[i] < 0

当它检查第一个元素的条件时,即使i < len(given_list3)为真但given_list3[i] < 0为假。由于and两个条件之间存在,因此这意味着两个条件都必须为真才能循环运行,否则它将立即退出。此外,如果您的代码计算只发生在一行中,那么您可以执行以下操作:

while i < len(given_list3):
    total7 += ((given_list3[i] < 0)*given_list3[i])
    i += 1

(given_list3[i] < 0)如果 i 小于 0,则在代码中变为 1(真),否则变为 0(假)。所以所有积极的成分都被消除了。


推荐阅读