问题详细信息:目标是迭代数字列表并仅打印正数。但是,即使在处理完所有元素之后,提供的代码也会进入无限循环并且不会终止。有问题的代码如下:
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)
从技术上讲,循环并不是“无限”,因为它从一开始就从未进入过。 i
是
0
,len(numbers)
是5
。 由于 0
不大于 5
,因此永远不会满足条件,也永远不会进入循环。翻转条件:
while i < len(numbers):
这是一个无限循环。 只要这个条件成立,你的循环就会继续:
while i < len(numbers):
而且,当它是真的时,在什么情况下它会永远
是假的? i
在循环中永远不会被修改。 循环中更新
i
的值:i += 1