在Python中,我得到了错误的总数,我只得到了位于负数之前的正数之和

问题描述

我用python编写了这段代码

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

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

解决方法

这是因为您遇到循环数为负数的情况,因此循环结束。您可以先从循环中删除该条件。

while i<len(list):

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

if list[i] > 0:
,

尝试了解while循环的工作方式。只要i < len(listlist[i] > 0都可以使用。当它达到值-9时,while循环的第二个条件变为false并终止。因此,在遇到第一个负整数之后将不计算总和。

要解决此问题,请

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

对于while循环代码,请使用

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

另外,尽管可以将变量名用作list,但建议不要在Python中使用变量名,因为list也是关键字。

,

在这种情况下,请勿使用while循环。使用for循环在Python中更容易对容器中的项目进行迭代。另外,逻辑错误,并且在while条件失败时会提前退出and list[i] > 0循环。

lst = [3,4]
total = 0
for item in lst:
    if item > 0:
        total += item
print(total)

此外,请勿使用list作为变量名。它将替换内置的list类型,称为“阴影”。

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

lst = [3,4]
total = sum([item for item in lst if item > 0])
print(total)