为什么这个循环不终止?
我是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
对象,这个对象其实就是一堆从 0
到 10
的数字。它没有什么复杂的逻辑,只是一组数字而已。
使用 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