在列表Python中添加负数
下面的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
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别担心。所有人有时都会犯错。在你的例子中,人们在评论中写下了他们对你的问题感到奇怪的地方。就像糟糕的代码格式一样,这使得它很难理解,或者代码和它生成的输出之间的变量名错误,这使得它更难理解。这里有一些关于“如何提问”的指导原则,希望这能有所帮助:谢谢。这很有效。我怎样才能更好地发布问题,这样我就不会被否决?我是新来的。再次感谢。我认为你的得票率下降可能是因为这是一个非常基本的问题,如果你有更多的时间思考每个迭代及其作用,你可以自己解决它。我认为这显示出缺乏努力和渴望从其他人那里寻求解决办法——这可能并不总是正确的。这就是我的想法。希望有帮助。