# if語句
`if`語句用來檢驗一個條件, 如果 條件為真,我們運行一塊語句(稱為 if-塊 ), 否則 我們處理另外一塊語句(稱為 else-塊 )。 else 從句是可選的。
```
#!/usr/bin/python
# Filename: if.py
number = 23
guess = int(raw_input('Enter an integer : '))
if guess == number:
????print 'Congratulations, you guessed it.' # New block starts here
????print "(but you do not win any prizes!)" # New block ends here
elif guess < number:
????print 'No, it is a little higher than that' # Another block
????# You can do whatever you want in a block ...
else:
????print 'No, it is a little lower than that'
????# you must have guess > number to reach here
print 'Done'
# This last statement is always executed, after the if statement is executed
```
(源文件:[code/if.py](code/if.py))
## 輸出
```
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
```
在這個程序中,我們從用戶處得到猜測的數,然后檢驗這個數是否是我們手中的那個。我們把變量`number`設置為我們想要的任何整數,在這個例子中是`23`。然后,我們使用`raw_input()`函數取得用戶猜測的數字。函數只是重用的程序段。我們將在[下一章](ch06.html)學習更多關于函數的知識。
我們為內建的`raw_input`函數提供一個字符串,這個字符串被打印在屏幕上,然后等待用戶的輸入。一旦我們輸入一些東西,然后按**回車**鍵之后,函數返回輸入。對于`raw_input`函數來說是一個字符串。我們通過`int`把這個字符串轉換為整數,并把它存儲在變量`guess`中。事實上,`int`是一個類,不過你想在對它所需了解的只是它把一個字符串轉換為一個整數(假設這個字符串含有一個有效的整數文本信息)。
接下來,我們將用戶的猜測與我們選擇的數做比較。如果他們相等,我們打印一個成功的消息。注意我們使用了縮進層次來告訴Python每個語句分別屬于哪一個塊。這就是為什么縮進在Python如此重要的原因。我希望你能夠堅持“每個縮進層一個制表符”的規則。你是這樣的嗎?
注意`if`語句在結尾處包含一個冒號——我們通過它告訴Python下面跟著一個語句塊。
然后,我們檢驗猜測是否小于我們的數,如果是這樣的,我們告訴用戶它的猜測大了一點。我們在這里使用的是`elif`從句,它事實上把兩個相關聯的`if else-if else`語句合并為一個`if-elif-else`語句。這使得程序更加簡單,并且減少了所需的縮進數量。
`elif`和`else`從句都必須在邏輯行結尾處有一個冒號,下面跟著一個相應的語句塊(當然還包括正確的縮進)。
你也可以在一個if塊中使用另外一個`if`語句,等等——這被稱為嵌套的`if`語句。
記住,`elif`和`else`部分是可選的。一個最簡單的有效`if`語句是:
```
if True:
????print 'Yes, it is true'
```
在Python執行完一個完整的`if`語句以及與它相關聯的`elif`和`else`從句之后,它移向`if`語句塊的下一個語句。在這個例子中,這個語句塊是主塊。程序從主塊開始執行,而下一個語句是`print 'Done'`語句。在這之后,Python看到程序的結尾,簡單的結束運行。
盡管這是一個非常簡單的程序,但是我已經在這個簡單的程序中指出了許多你應該注意的地方。所有這些都是十分直接了當的(對于那些擁有C/C++背景的用戶來說是尤為簡單的)。它們在開始時會引起你的注意,但是以后你會對它們感到熟悉、“自然”。
給C/C++程序員的注釋
在Python中沒有`switch`語句。你可以使用`if..elif..else`語句來完成同樣的工作(在某些場合,使用[字典](ch09s04.html)會更加快捷。)
- 版權信息
- 前言
- 本書的由來
- 本書目前的狀況
- 約定條款
- 反饋
- 值得思考的一些東西
- 第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 修訂記錄
- 術語表