# 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 修訂記錄
- 術語表