0

我用python写了这段代码:

list=[3,5,7,6,-9,5,4]
i=0
total=0
while i<len(list) and list[i] > 0:
     total+=list[i]
     i+=1
print(total)

而不是得到所有正数的总数,我只得到位于负数之前的数字总数,我不确定我做错了什么,这只是我在 python 中的第四个代码,我想要一些帮助^^

4

3 回答 3

1

那是因为如果遇到负数,您就有循环结束的条件。您可以首先从循环中删除该条件。

while i<len(list):

接下来,您只想添加非负数,因此,在循环中使用带有所需条件的条件语句。

if list[i] > 0:
于 2020-09-20T23:53:27.877 回答
0

尝试了解 while 循环的工作原理。只要i < len(list和就可以工作list[i] > 0。当它达到 value-9时,while 循环的第二个条件变为 false 并终止。因此,在遇到第一个负整数后不会计算总和。

要解决这个问题,请执行

lis = [3, 5, 7, 6, -9, 5, 4]
sum = 0
for i in lis:
    if i > 0:
        sum += i

对于您的 while 循环代码,请使用

lis = [3, 5, 7, 6, -9, 5, 4]
i = 0
sum = 0
while i < len(lis):
    if lis[i] > 0:
        sum += lis[i]
    i = i + 1

此外,虽然您可以使用变量名 as list,但建议不要在 Python 中这样做,因为list它也是关键字。

于 2020-09-21T00:03:17.580 回答
0

在这种情况下不要使用while循环。for在带有循环的 Python 中,对容器中的项目进行迭代更容易。while再加上逻辑是错误的,当条件失败时会提前退出循环and list[i] > 0

lst = [3,5,7,6,-9,5,4]
total = 0
for item in lst:
    if item > 0:
        total += item
print(total)

另外,不要list用作变量名。这取代了内置list类型,称为“阴影”。

您还可以使用列表推导并进一步简化代码:

lst = [3,5,7,6,-9,5,4]
total = sum([item for item in lst if item > 0])
print(total)
于 2020-09-21T00:03:19.457 回答