为什么这个循环不终止?

1 投票
6 回答
1346 浏览
提问于 2025-04-17 06:11

我是Python新手;请解释一下为什么这个循环不退出。

for i in range(0,10):
  print "Hello, World!"
  if i == 5: i = 15
  print i
next

谢谢

6 个回答

5

因为Python的for循环不是在计数,而是在遍历。range会生成一个可遍历的对象(在Python 2.x中是一个列表),然后这个可遍历的对象会被逐个取出。在每次执行循环内部的代码之前,都会从这个对象中取出下一个项目,而你在循环内部对这个项目的变量所做的任何修改,都不会影响下一个应该取出的值。这些值是保存在其他地方的,你通常无法改变它。简单来说,可以使用break来提前结束循环。

5

因为你用 range(0,10) 创建了一个包含10个元素的数组,像这样:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

然后你在逐个处理这些元素。

在其他编程语言中,这种做法叫做“foreach循环”。

如果不这样做,你可以尝试其他方法。

3

你正在遍历一个 range 对象,这个对象其实就是一堆从 010 的数字。它没有什么复杂的逻辑,只是一组数字而已。

使用 for item in set 这样的写法,实际上就是在对 set 中的每一个元素进行循环,直到所有的元素都被遍历完为止。

你的代码 并不等同于 C++ 中的 for 循环,后者会得到你想要的结果:

for (int i = 0; i < 10; i++) {
  if (i == 5) {
    i = 15;
  }
}

如果你想要中断这个循环,只需要用 break 来退出循环即可:

for i in range(0,10):
  print "Hello, World!"
  if i == 5: break
  print i

撰写回答