# for循环
`for..in`是另外一个循环语句,它在一序列的对象上 递归 即逐一使用队列中的每个项目。我们会在后面的章节中更加详细地学习[序列](ch09s05.html)。
```
#!/usr/bin/python
# Filename: for.py
for i in range(1, 5):
print i
else:
print 'The for loop is over'
```
## 输出
```
$ python for.py
1
2
3
4
The for loop is over
```
## 它如何工作
在这个程序中,我们打印了一个 序列 的数。我们使用内建的`range`函数生成这个数的序列。
我们所做的只是提供两个数,`range`返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,`range(1,5)`给出序列`[1, 2, 3, 4]`。默认地,`range`的步长为1。如果我们为`range`提供第三个数,那么它将成为步长。例如,`range(1,5,2)`给出`[1,3]`。记住,range 向上 延伸到第二个数,即它**不**包含第二个数。
`for`循环在这个范围内递归——`for i in range(1,5)`等价于`for i in [1, 2, 3, 4]`,这就如同把序列中的每个数(或对象)赋值给i,一次一个,然后以每个`i`的值执行这个程序块。在这个例子中,我们只是打印i的值。
记住,`else`部分是可选的。如果包含else,它总是在`for`循环结束后执行一次,除非遇到[break](ch06s05.html)语句。
记住,`for..in`循环对于任何序列都适用。这里我们使用的是一个由内建`range`函数生成的数的列表,但是广义说来我们可以使用任何种类的由任何对象组成的序列!我们会在后面的章节中详细探索这个观点。
给C/C++/Java/C#程序员的注释
Python的`for`循环从根本上不同于C/C++的`for`循环。C#程序员会注意到Python的`for`循环与C#中的`foreach`循环十分类似。Java程序员会注意到它与Java 1.5中的`for (int i : IntArray)`相似。
在C/C++中,如果你想要写`for (int i = 0; i < 5; i++)`,那么用Python,你写成`for i in range(0,5)`。你会注意到,Python的`for`循环更加简单、明白、不易出错。
- 版权信息
- 前言
- 本书的由来
- 本书目前的状况
- 约定条款
- 反馈
- 值得思考的一些东西
- 第1章 介绍
- Python的特色
- 为什么不使用Perl?
- 程序员的话
- 第2章 安装Python
- Windows®用户
- 概括
- 第3章 最初的步骤
- 使用带提示符的解释器
- 挑选一个编辑器
- 使用源文件
- 可执行的Python程序
- 获取帮助
- 概括
- 第4章 基本概念
- 数
- 字符串
- 变量
- 标识符的命名
- 数据类型
- 对象
- 逻辑行与物理行
- 缩进
- 概括
- 第5章 运算符与表达式
- 运算符
- 运算符优先级
- 表达式
- 概括
- 第6章 控制流
- if语句
- while语句
- for循环
- break语句
- continue语句
- 概括
- 第7章 函数
- 函数形参
- 局部变量
- 默认参数值
- 关键参数
- return语句
- DocStrings
- 概括
- 第8章 模块
- 字节编译的.pyc文件
- from..import语句
- 模块的name
- 制造你自己的模块
- dir()函数
- 概括
- 第9章 数据结构
- 列表
- 元组
- 字典
- 序列
- 参考
- 更多字符串的内容
- 概括
- 第10章 解决问题——编写一个Python脚本
- 解决方案
- 软件开发过程
- 概括
- 第11章 面向对象的编程
- self
- 类
- 对象的方法
- __init__方法
- 类与对象的方法
- 继承
- 概括
- 第12章 输入/输出
- 储存器
- 概括
- 第13章 异常
- try..except
- 引发异常
- try..finally
- 概括
- 第14章 Python标准库
- sys模块
- os模块
- 概括
- 第15章 更多Python的内容
- 单语句块
- 列表综合
- 在函数中接收元组和列表
- lambda形式
- exec和eval语句
- assert语句
- repr函数
- 概括
- 第16章 接下来学习什么?
- 探索更多内容
- 概括
- 附录A 自由/开放源码软件(FLOSS)
- 附录B 关于本书
- 关于作者
- 关于译者
- 关于简体中文译本
- 附录C 修订记录
- 术语表