只对列表中的奇数求和,用 for 循环很容易做到,但是 while 循环呢?
sum only the odd numbers in the list, easy to do with for loop but how about while loop?
我试着为这个特定的列表写这个,但它总是崩溃,我能改变什么?
items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
continue
summa += num
n += 1
print(summa)
您还应该在 if
块中递增 n
。
if num % 2 != 0:
n += 1
continue
编辑:
如评论中所述,更简洁的解决方案是在 if 块之前递增 n,以防止重复代码:
while n < len(items):
num = items[n]
n += 1
if num % 2 != 0:
continue
summa += num
print(summa)
如果 num % 2 != 0
你忘了加数
items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
n += 1
continue
summa += num
n += 1
print(summa)
正如其他答案指出的那样,当 if
为真时,永远不会达到 n += 1
,所以你有一个无限循环。
您可以使用生成器表达式
代替while
循环
print(sum(item for item in items if item % 2)) # 701
你不需要继续它只是在不增加 n 的值的情况下不断循环。
而是进行以下更改:
items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
summa += num
n += 1
print(summa)
没有使用 continue 关键字。只需删除它,如果数字是奇数,则将其添加到 summa 中,否则什么都不做。在这两种情况下,n 的值都会增加 1,因为它在 if 块之外。
items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
summa += num
n += 1
print(summa)
这是您将得到的输出 701。
这是适合您的代码:
items = [23, 555, 666, 123, 128, 4242, 990,1]
summa = 0
n = 0
while n < len(items):
summa += items[n] if items[n]%2 != 0 else 0
n+=1
print (summa)
我试着为这个特定的列表写这个,但它总是崩溃,我能改变什么?
items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
continue
summa += num
n += 1
print(summa)
您还应该在 if
块中递增 n
。
if num % 2 != 0:
n += 1
continue
编辑:
如评论中所述,更简洁的解决方案是在 if 块之前递增 n,以防止重复代码:
while n < len(items):
num = items[n]
n += 1
if num % 2 != 0:
continue
summa += num
print(summa)
如果 num % 2 != 0
你忘了加数items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
n += 1
continue
summa += num
n += 1
print(summa)
正如其他答案指出的那样,当 if
为真时,永远不会达到 n += 1
,所以你有一个无限循环。
您可以使用生成器表达式
代替while
循环
print(sum(item for item in items if item % 2)) # 701
你不需要继续它只是在不增加 n 的值的情况下不断循环。 而是进行以下更改:
items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
summa += num
n += 1
print(summa)
没有使用 continue 关键字。只需删除它,如果数字是奇数,则将其添加到 summa 中,否则什么都不做。在这两种情况下,n 的值都会增加 1,因为它在 if 块之外。
items = [23, 555, 666, 123, 128, 4242, 990]
summa = 0
n = 0
while n < len(items):
num = items[n]
if num % 2 != 0:
summa += num
n += 1
print(summa)
这是您将得到的输出 701。
这是适合您的代码:
items = [23, 555, 666, 123, 128, 4242, 990,1]
summa = 0
n = 0
while n < len(items):
summa += items[n] if items[n]%2 != 0 else 0
n+=1
print (summa)