【发布时间】:2020-09-20 23:50:24
【问题描述】:
我用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 中的第四个代码 i'希望得到一些帮助^^
【问题讨论】:
-
这里你不应该使用
while循环。想一想:while 循环将继续执行 while 数字保持正数,并在遇到第一个负数时立即停止。请改用for循环或更改 while 循环中的条件表达式。 -
@pavel 使用
while循环或for循环不是问题。考虑到适当的条件,该代码在这两种情况下都能正常工作。 -
@SwatiSrivastava 虽然
while可以工作,但在这种情况下使用它是错误的工具。使用for循环对容器进行迭代更简单。无需初始化或递增索引,如果需要索引,请使用for i,item in enumerate(lst)。对于这种情况,更简单的是列表推导。 -
@MarkTolonen 我同意
for在迭代条件下效果更好,但使用while可能没有错,只是效率低下。