所謂條件語句,顧名思義,就是依據某個條件,滿足這個條件后執行下面的內容。
## [](https://github.com/qiwsir/StarterLearningPython/blob/master/122.md#if)if
if,其含義就是:conj. (表條件)如果。if發起的就是一個條件,它是構成條件語句的關鍵詞。
~~~
>>> a = 8
>>> if a==8:
... print a
...
8
~~~
在交互模式下,簡單書寫一下if發起的條件語句。特別說明,我上面這樣寫,只是簡單演示一下。如果你要寫大段的代碼,千萬不要在交互模式下寫。
`if a==8:`,這句話里面如果條件`a==8`返回的是True,那么就執行下面的語句。特別注意,冒號是必須的。下面一行語句`print a`要有四個空格的縮進。這是python的特點,稱之為語句塊。
唯恐說的不嚴謹,我還是引用維基百科中的敘述:
> Python開發者有意讓違反了縮排規則的程序不能通過編譯,以此來強迫程序員養成良好的編程習慣。並且Python語言利用縮排表示語句塊的開始和結束(Off-side規則),而非使用花括號或者某種關鍵字。增加縮排表示語句塊的開始,而減少縮排則表示語句塊的結束。縮排成為了語法的一部分。例如if語句.
>
> 根據PEP的規定,必須使用4個空格來表示每級縮排。使用Tab字符和其它數目的空格雖然都可以編譯通過,但不符合編碼規範。支持Tab字符和其它數目的空格僅僅是為兼容很舊的Python程式和某些有問題的編輯程式。
從上面的這段話中,提煉出幾個關鍵點:
* 必須要通過縮進方式來表示語句塊的開始和結束
* 縮進用四個空格(也是必須的,別的方式或許可以,但不提倡)
## [](https://github.com/qiwsir/StarterLearningPython/blob/master/122.md#ifelseelif)if/else/elif
在進行條件判斷的時候,只有if,往往是不夠的。比如下圖所示的流程
[](https://github.com/qiwsir/StarterLearningPython/blob/master/1images/12201.png)
這張圖反應的是這樣一個問題:
輸入一個數字,并輸出輸入的結果,如果這個數字大于10,那么同時輸出大于10,如果小于10,同時輸出提示小于10,如果等于10,就輸出表揚的一句話。
從圖中就已經顯示出來了,僅僅用if來判斷,是不足的,還需要其它分支。這就需要引入別的條件判斷了。所以,有了if...elif...else語句。
基本樣式結構:
~~~
if 條件1:
執行的內容1
elif 條件2:
執行的內容2
elif 條件3:
執行的內容3
else:
執行的內容4
~~~
elif用于多個條件時使用,可以沒有。另外,也可以只有if,而沒有else。
下面我們就不在交互模式中寫代碼了。打開文本編輯界面,你的編輯器也能提供這個功能,如果找不到,請回到[《寫一個簡單的程序》](https://github.com/qiwsir/StarterLearningPython/blob/master/105.md)查看。
代碼實例如下:
~~~
#! /usr/bin/env python
#coding:utf-8
print "請輸入任意一個整數數字:"
number = int(raw_input()) #通過raw_input()輸入的數字是字符串
#用int()將該字符串轉化為整數
if number == 10:
print "您輸入的數字是:%d"%number
print "You are SMART."
elif number > 10:
print "您輸入的數字是:%d"%number
print "This number is more than 10."
elif number < 10:
print "您輸入的數字是:%d"%number
print "This number is less than 10."
else:
print "Are you a human?"
~~~
特別提醒看官注意,前面我們已經用過raw_input()函數了,這個是獲得用戶在界面上輸入的信息,而通過它得到的是字符串類型的數據。
上述程序,依據條件進行判斷,不同條件下做不同的事情了。需要提醒的是在條件中:number == 10,為了閱讀方便,在number和==之間有一個空格最好了,同理,后面也有一個。這里的10,是int類型,number也是int類型.
把這段程序保存成一個擴展名是.py的文件,比如保存為`num.py`,進入到存儲這個文件的目錄,運行`python num.py`,就能看到程序執行結果了。下面是我執行的結果,供參考。
~~~
$ python num.py
請輸入任意一個整數數字:
12
您輸入的數字是:12
This number is more than 10.
$ python num.py
請輸入任意一個整數數字:
10
您輸入的數字是:10
You are SMART.
$ python num.py
請輸入任意一個整數數字:
9
您輸入的數字是:9
This number is less than 10.
~~~
不知道各位是否注意到,上面的那段代碼,開始有一行:
~~~
#! /usr/bin/env python
~~~
這是什么意思呢?
這句話以#開頭,表示本來不在程序中運行。這句話的用途是告訴機器尋找到該設備上的python解釋器,操作系統使用它找到的解釋器來運行文件中的程序代碼。有的程序里寫的是/usr/bin python,表示python解釋器在/usr/bin里面。但是,如果寫成/usr/bin/env,則表示要通過系統搜索路徑尋找python解釋器。不同系統,可能解釋器的位置不同,所以這種方式能夠讓代碼更將擁有可移植性。對了,以上是對Unix系列操作系統而言。對與windows系統,這句話就當不存在。
在“條件”中,就是上節提到的各種條件運算表達式,如果是True,就執行該條件下的語句。
## [](https://github.com/qiwsir/StarterLearningPython/blob/master/122.md#三元操作符)三元操作符
三元操作,是條件語句中比較簡練的一種賦值方式,它的模樣是這樣的:
~~~
>>> name = "qiwsir" if "laoqi" else "github"
>>> name
'qiwsir'
>>> name = 'qiwsir' if "" else "python"
>>> name
'python'
>>> name = "qiwsir" if "github" else ""
>>> name
'qiwsir'
~~~
總結一下:A = Y if X else Z
什么意思,結合前面的例子,可以看出:
* 如果X為真,那么就執行A=Y
* 如果X為假,就執行A=Z
如此例
~~~
>>> x = 2
>>> y = 8
>>> a = "python" if x>y else "qiwsir"
>>> a
'qiwsir'
>>> b = "python" if x<y else "qiwsir"
>>> b
'python'
~~~
- 第零章 預備
- 關于Python的故事
- 從小工到專家
- Python安裝
- 集成開發環境
- 第壹章 基本數據類型
- 數和四則運算
- 除法
- 常用數學函數和運算優先級
- 寫一個簡單的程序
- 字符串(1)
- 字符串(2)
- 字符串(3)
- 字符串(4)
- 字符編碼
- 列表(1)
- 列表(2)
- 列表(3)
- 回顧list和str
- 元組
- 字典(1)
- 字典(2)
- 集合(1)
- 集合(2)
- 第貳章 語句和文件
- 運算符
- 語句(1)
- 語句(2)
- 語句(3)
- 語句(4)
- 語句(5)
- 文件(1)
- 文件(2)
- 迭代
- 練習
- 自省
- 第叁章 函數
- 函數(1)
- 函數(2)
- 函數(3)
- 函數(4)
- 函數練習
- 第肆章 類
- 類(1)
- 類(2)
- 類(3)
- 類(4)
- 類(5)
- 多態和封裝
- 特殊方法(1)
- 特殊方法(2)
- 迭代器
- 生成器
- 上下文管理器
- 第伍章 錯誤和異常
- 錯誤和異常(1)
- 錯誤和異常(2)
- 錯誤和異常(3)
- 第陸章 模塊
- 編寫模塊
- 標準庫(1)
- 標準庫(2)
- 標準庫(3)
- 標準庫(4)
- 標準庫(5)
- 標準庫(6)
- 標準庫(7)
- 標準庫(8)
- 第三方庫
- 第柒章 保存數據
- 將數據存入文件
- mysql數據庫(1)
- MySQL數據庫(2)
- mongodb數據庫(1)
- SQLite數據庫
- 電子表格
- 第捌章 用Tornado做網站
- 為做網站而準備
- 分析Hello
- 用tornado做網站(1)
- 用tornado做網站(2)
- 用tornado做網站(3)
- 用tornado做網站(4)
- 用tornado做網站(5)
- 用tornado做網站(6)
- 用tornado做網站(7)
- 第玖章 科學計算
- 為計算做準備
- Pandas使用(1)
- Pandas使用(2)
- 處理股票數據
- 附:網絡文摘
- 如何成為Python高手
- ASCII、Unicode、GBK和UTF-8字符編碼的區別聯系