## for循环结构
如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令。当然你可能已经注意到了,刚才的描述中其实不仅仅有需要重复的动作,还有我们上一个章节讲到的分支结构。再举一个简单的例子,比如在我们的程序中要实现每隔1秒中在屏幕上打印一个"hello, world"这样的字符串并持续一个小时,我们肯定不能够将`print('hello, world')`这句代码写上3600遍,如果真的需要这样做,那么编程的工作就太无聊了。因此,我们还需要了解一下循环结构,有了循环结构我们就可以轻松的控制某件事或者某些事重复、重复、再重复的去执行。
在Python中构造循环结构有两种做法,一种是`for-in`循环,一种是`while`循环。
*****
## Python for循环
甲用于循环被用于迭代一个序列(也就是无论是一个列表,一个元组,一个字典,一组,或一个字符串)。
这不太像其他编程语言中的for关键字,而更像其他面向对象编程语言中的迭代器方法那样工作。
使用for循环,我们可以执行一组语句,对列表,元组,集合等中的每个项目执行一次。
示例,打印水果清单中的每个水果:
```
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
```
该用于循环不需要索引变量预先设置。
*****
## 遍历字符串
即使字符串是可迭代的对象,它们也包含一系列字符:
示例,遍历“香蕉”一词中的字母:
```
for x in "banana":
print(x)
```
*****
## break语句
使用break语句,我们可以在循环遍历所有项目之前停止循环:
示例,当`x`是“香蕉”时退出循环:
```
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
if x == "banana":
break
```
示例,当`x`是“ banana”时退出循环,但是这次中断出现在打印之前:
```
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
break
print(x)
```
*****
## continue声明
使用continue语句,我们可以停止循环的当前迭代,然后继续下一个:
示例,不要打印香蕉:
```
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
```
*****
## range()函数
要遍历一组代码指定的次数,我们可以使用range()函数,
的范围()函数返回由1个数字,通过默认从0开始,并递增的顺序(缺省),并结束在指定次数。
示例,使用range()函数:
```
for x in range(6):
print(x)
```
请注意,range(6)不是0到6的值,而是0到5的值。
的范围()函数默认为0作为初始值,但是也可以通过添加一个参数指定的起始值:范围(2,6),从2,其手段值至6(但不包括6):
示例,使用开始参数:
```
for x in range(2, 6):
print(x)
```
的范围()函数默认被1至递增序列,但是有可能通过增加第三参数指定增量值:范围(2,30,**3**):
示例,用3递增序列(默认为1):
```
for x in range(2, 30, 3):
print(x)
```
*****
## 其他在For Loop中
循环中的`else`关键字`for`指定了循环结束时要执行的代码块:
示例,打印从0到5的所有数字,并在循环结束时显示一条消息:
```
for x in range(6):
print(x)
else:
print("Finally finished!")
```
\*\*注意:`**else`如果循环由一条`break`语句停止,则不会执行该块。
示例,当`x`为3时中断循环,并查看该`else`块会发生什么:
```
for x in range(6):
if x == 3: break
print(x)
else:
print("Finally finished!")
```
*****
## 嵌套循环
嵌套循环是循环内部的循环。“内部循环”将针对“外部循环”的每次迭代执行一次:
示例,为每个水果打印每个形容词:
```
adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]
for x in adj:
for y in fruits:
print(x, y)
```
## pass语句
`for`循环不能为空,但是如果由于某种原因而导致`for`循环不包含任何内容,请放入`pass`语句中以避免出错。
```
for x in [0, 1, 2]:
pass
```