在Python中,我得到了一个错误的总数,我只得到了位于负数之前的正数的总数
我用python编写了以下代码:在Python中,我得到了一个错误的总数,我只得到了位于负数之前的正数的总数,python,negative-integer,Python,Negative Integer,我用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) list=[3,5,7,6,-9,5,4] i=0 总数=0 而我0: 总计+=列表[i] i+=1 打印(总计) 而不是得到所有正数的总数,我只得到位于负数之前的总数,我不确定我做错了什么,这只是我在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)
list=[3,5,7,6,-9,5,4]
i=0
总数=0
而我0:
总计+=列表[i]
i+=1
打印(总计)
而不是得到所有正数的总数,我只得到位于负数之前的总数,我不确定我做错了什么,这只是我在python中的第四个代码,我需要一些帮助^^这是因为如果遇到负数,循环将结束。您可以首先从循环中删除该条件
while i<len(list):
试着理解while循环的工作原理。只要
i
和list[i]>0
,它就可以工作。当它达到值-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
lis=[3,5,7,6,-9,5,4]
i=0
总和=0
而我0:
总和+=lis[i]
i=i+1
此外,虽然可以使用变量名作为
list
,但建议不要在Python中使用,因为list
也是一个关键字。在这种情况下,不要使用while
循环。在Python中,使用for
循环,容器中的项的迭代更容易。另外,逻辑错误,退出while
循环在和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)
在这里,您不应该使用
while
循环。想想看:while循环将在数字保持正数时继续执行,并在遇到第一个负数时立即停止。请改用for
循环,或更改while循环中的条件表达式。@pavelwhile
循环不存在问题g使用或for
循环。考虑到适当的条件,代码在这两种情况下都能很好地工作。@SwatiSrivastava虽然While
可以工作,但在这种情况下使用它是错误的工具。使用for
循环在容器上进行迭代更简单。不需要初始化或增加索引,并且如果需要索引,请使用枚举(lst)中的i项的
。对于这种情况,更简单的是列表理解。@MarkTolonen我同意for
在迭代条件下效果更好,但是使用while
可能没有错,只是效率低下。谢谢!我尝试过这个解决方案,但现在我只得到了输出中的第一个数字,即3
lst = [3,5,7,6,-9,5,4]
total = sum([item for item in lst if item > 0])
print(total)