在列表Python中添加负数

在列表Python中添加负数,python,Python,下面的python代码有什么问题 List3=[7,5,4,4,3,1,-2,-3,-5,-7] total=0 i=6 while i>=6: total = total + List3[i] i=i+1 if i> len(List3): break print(total) while循环不应该在List3[6]=-2处开始添加,并在i大于列表长度时中断。我的逻辑有什么问题? 它返回: IndexError

下面的python代码有什么问题

List3=[7,5,4,4,3,1,-2,-3,-5,-7]
total=0
i=6
while i>=6:
    total = total + List3[i]
    i=i+1
    if i> len(List3):
        break
print(total)
while循环不应该在List3[6]=-2处开始添加,并在i大于列表长度时中断。我的逻辑有什么问题? 它返回:

IndexError                                Traceback (most recent call last)
<ipython-input-41-7e2f7eca2eb8> in <module>()
  4 i=6
  5 while 6<= i:
----> 6     totaln = totaln + List3[i]
  7     i=i+1
  8     if i> len(List3):

IndexError: list index out of range
索引器错误回溯(最近一次调用)
在()
4 i=6
5而6 totaln=totaln+List3[i]
7i=i+1
8如果i>len(列表3):
索引器:列表索引超出范围

我认为
while
循环是错误的。
i=i+1
和if条件应在
while
循环中。第二点是
i>=len(List3)
就足够了。
i>len(List3)
将导致最后一个索引超出索引范围

total=0
for i in list3:
    if i<0:
        total+=i
total=0
对于清单3中的i:

如果我代码的问题是在最后一次迭代中,那么第7行将变成10>10,这将是错误的,因此不会跳出循环。它将尝试访问第5行的列表[10],该行不在那里,因此它将出现错误
indexer:List index超出范围
,因为List3的长度为10,这意味着最后一个元素位于索引9

修改后的代码版本可以正常工作

  List3=[7,5,4,4,3,1,-2,-3,-5,-7]
  total=0
  i=6
  while i>=6:
    total = total + List3[i]
    i=i+1
    if i > len(List3) - 1:
      break
  print(total)
但是如果你想得到任何列表中所有负数的和,正确的方法是

total=0
for i in List3:
    if i<0:
    total += i
print(total)
total=0
对于清单3中的i:

如果i语句顺序错误,您应该首先检查是否没有访问列表末尾以外的元素,然后才实际访问它们:

while i>=6:
    if i>= len(List3):  # this moved here, also note `>=` instead of `>`
        break

    total = total + List3[i]
    i += 1
最后,您的所有代码都可以写成一行简单的代码:

sum( List3[6:] )  # that's it!!

在上一次迭代中,内部if计算10>10,返回false,因此不会中断循环。它继续得到列表[10]——这是无效的,因此它破坏了代码


如果i>len(列表3):
替换为
如果i>=len(列表3):
。它应该可以工作

我假设您希望将一个选项卡移到右侧。否则while循环将永远不会终止。缩进是错误的,因此
返回
while
循环之外,并导致错误。这与负数无关。加拉布拉对不起,我更正了我的帖子。缩进是此更新版本。错误涉及
totaln
,您的代码使用
total
。这仍然不是真正的代码。而且
List3
看起来不能像您在这里显示的那样。我已经否决了您的问题,因为您显示给我们的代码不是产生错误的代码。谢谢!它起作用了。既然你看起来像一个经验丰富的网站用户,你能给我一些关于在这个网站上发布的建议吗?我是新来的,我不明白为什么我得到了两张反对票。再次感谢。@BarinderSingh别担心。所有人有时都会犯错。在你的例子中,人们在评论中写下了他们对你的问题感到奇怪的地方。就像糟糕的代码格式一样,这使得它很难理解,或者代码和它生成的输出之间的变量名错误,这使得它更难理解。这里有一些关于“如何提问”的指导原则,希望这能有所帮助:谢谢。这很有效。我怎样才能更好地发布问题,这样我就不会被否决?我是新来的。再次感谢。我认为你的得票率下降可能是因为这是一个非常基本的问题,如果你有更多的时间思考每个迭代及其作用,你可以自己解决它。我认为这显示出缺乏努力和渴望从其他人那里寻求解决办法——这可能并不总是正确的。这就是我的想法。希望有帮助。