Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法正确使用此while循环 尝试使用while循环汇总列表中的所有负数_Python_List - Fatal编程技术网

Python 无法正确使用此while循环 尝试使用while循环汇总列表中的所有负数

Python 无法正确使用此while循环 尝试使用while循环汇总列表中的所有负数,python,list,Python,List,您的while循环没有中断条件,因此它将无限期运行。在访问列表元素时,您将在某个点访问索引超出范围 试试这样的 given_list_02 = [9, 8, 5, 3, -1, -2, -3, -6] total3 = 0 for e in given_list_02: if e < 0: total3 += e 但是请记住,在这种情况下,您确实应该更喜欢for循环。使用for循环(推荐) 在python中,循环基于迭代器。因此,我们能够迭代列表中的值,而不是使

您的
while
循环没有中断条件,因此它将无限期运行。在访问列表元素时,您将在某个点访问索引超出范围

试试这样的

given_list_02 = [9, 8, 5, 3, -1, -2, -3, -6]

total3 = 0
for e in given_list_02:
    if e < 0:
        total3 += e
但是请记住,在这种情况下,您确实应该更喜欢
for
循环。

使用for循环(推荐)

在python中,循环基于迭代器。因此,我们能够迭代列表中的值,而不是使用更新索引i的while True循环。这也确保了当i大于列表长度时,不会出现索引越界错误:

given_list_02 = [9, 8, 5, 3, -1, -2, -3, -6]

numOfNegatives = 0
for num in given_list_02:
  if num < 0:
    numOfNegatives+=num

print(numOfNegatives)
给定列表\u 02=[9,8,5,3,-1,-2,-3,-6]
numOfNegatives=0
对于给定_列表_02中的num:
如果num<0:
numOfNegatives+=num
打印(负片)
使用while循环(不推荐)

您需要while循环的终止条件。如果我们考虑True的作用,它将无限增加i变量。那么当我9岁时会发生什么呢?此时,给定的_列表_02[i]不存在,因为给定的_列表_02只有8个元素。这就是为什么当i达到8时,我们需要停止迭代i:

given_list_02 = [9, 8, 5, 3, -1, -2, -3, -6]
total3 = 0
i = 0

while i < len(given_list_02):
  if given_list_02[i] >= 0:
    i+= 1
  else:
    total3+= given_list_02[i]
    i+= 1

print(total3)
给定列表\u 02=[9,8,5,3,-1,-2,-3,-6]
总数3=0
i=0
当i=0:
i+=1
其他:
总计3+=给定的列表\u 02[i]
i+=1
打印(总计3)

这需要更多信息,您遇到了什么问题?这是一个错误还是不正确的逻辑?为什么要使用
while
循环来迭代一个确定大小的列表?为什么不为循环设置一个
?似乎更合适…这个循环永远不会结束…如果你坚持使用
while
循环,那么当我
@Tomerikoo时做
可能会更好。我可以轻松地使用for循环,但由于我是新手,我想用while循环做同样的事情。他不寻找负值的数量,但是他们的总数。
given_list_02 = [9, 8, 5, 3, -1, -2, -3, -6]

numOfNegatives = 0
for num in given_list_02:
  if num < 0:
    numOfNegatives+=num

print(numOfNegatives)
given_list_02 = [9, 8, 5, 3, -1, -2, -3, -6]
total3 = 0
i = 0

while i < len(given_list_02):
  if given_list_02[i] >= 0:
    i+= 1
  else:
    total3+= given_list_02[i]
    i+= 1

print(total3)