迭代列表时的无限循环

问题描述 投票:0回答:1

主要问题说明

问题详细信息:目标是迭代数字列表并仅打印正数。但是,即使在处理完所有元素之后,提供的代码也会进入无限循环并且不会终止。有问题的代码如下:

numbers = [5, -3, 7, -1, 10]
i = 0

while i > len(numbers):  # Incorrect loop condition
    if numbers[i] < 0:
        print(f"Skipping negative number: {numbers[i]}")
    else:
        print(f"Processing positive number: {numbers[i]}")

尝试解决问题:

  • 验证列表中同时包含正数和负数。

  • 检查循环条件以确保其避免无限期运行。

  • 尝试添加

    break
    语句或修改列表,但这些更改并不能解决核心问题。

预期行为:

  • 循环遍历数字列表。

  • 处理正数时跳过负数。

  • 处理列表中的所有元素后终止。

萨塔姆·本·阿卜杜勒阿齐兹王子大学 u200f(798@psau)

loops while-loop iteration
1个回答
0
投票

从技术上讲,循环并不是“无限”,因为它从一开始就从未进入过。 i

0
len(numbers)
5
。 由于
0
不大于
5
,因此永远不会满足条件,也永远不会进入循环。
翻转条件:

while i < len(numbers):

现在

这是一个无限循环。 只要这个条件成立,你的循环就会继续: while i < len(numbers):

而且,当它是真的时,在什么情况下它会
永远

是假的? i 在循环中永远不会被修改。 循环中更新

i
的值:
i += 1

	
© www.soinside.com 2019 - 2024. All rights reserved.