鍍金池/ 教程/ Python/ 語句(2)
標(biāo)準(zhǔn)庫 (4)
如何成為 Python 高手
標(biāo)準(zhǔn)庫 (6)
標(biāo)準(zhǔn)庫 (3)
類(2)
Pandas 使用 (2)
xml
用 tornado 做網(wǎng)站 (5)
文件(1)
練習(xí)
列表(3)
從小工到專家
除法
錯(cuò)誤和異常 (2)
函數(shù)(1)
用 tornado 做網(wǎng)站 (7)
為做網(wǎng)站而準(zhǔn)備
函數(shù)練習(xí)
標(biāo)準(zhǔn)庫 (8)
Pandas 使用 (1)
回顧 list 和 str
字典(1)
用 tornado 做網(wǎng)站 (3)
字符串(1)
函數(shù)(2)
寫一個(gè)簡(jiǎn)單的程序
將數(shù)據(jù)存入文件
語句(5)
SQLite 數(shù)據(jù)庫
集成開發(fā)環(huán)境(IDE)
集合(1)
類(1)
用 tornado 做網(wǎng)站 (6)
用 tornado 做網(wǎng)站 (2)
自省
語句(4)
錯(cuò)誤和異常 (1)
用 tornado 做網(wǎng)站 (4)
集合(2)
列表(1)
標(biāo)準(zhǔn)庫 (1)
生成器
mysql 數(shù)據(jù)庫 (1)
第三方庫
實(shí)戰(zhàn)
運(yùn)算符
類(3)
字典(2)
語句(1)
數(shù)和四則運(yùn)算
語句(2)
文件(2)
MySQL 數(shù)據(jù)庫 (2)
電子表格
迭代器
mongodb 數(shù)據(jù)庫 (1)
特殊方法 (2)
特殊方法 (1)
字符編碼
編寫模塊
用 tornado 做網(wǎng)站 (1)
標(biāo)準(zhǔn)庫 (5)
函數(shù)(4)
類(5)
字符串(2)
關(guān)于 Python 的故事
函數(shù)(3)
字符串(4)
處理股票數(shù)據(jù)
常用數(shù)學(xué)函數(shù)和運(yùn)算優(yōu)先級(jí)
字符串(3)
為計(jì)算做準(zhǔn)備
多態(tài)和封裝
類(4)
迭代
語句(3)
錯(cuò)誤和異常 (3)
分析 Hello
Python 安裝
標(biāo)準(zhǔn)庫 (2)
列表(2)
元組

語句(2)

所謂條件語句,顧名思義,就是依據(jù)某個(gè)條件,滿足這個(gè)條件后執(zhí)行下面的內(nèi)容。

if

if,其含義就是:conj. (表?xiàng)l件)如果。if 發(fā)起的就是一個(gè)條件,它是構(gòu)成條件語句的關(guān)鍵詞。

>>> a = 8
>>> if a==8:
...     print a
... 
8

在交互模式下,簡(jiǎn)單書寫一下if發(fā)起的條件語句。特別說明,我上面這樣寫,只是簡(jiǎn)單演示一下。如果你要寫大段的代碼,千萬不要在交互模式下寫。

if a==8:,這句話里面如果條件 a==8 返回的是 True,那么就執(zhí)行下面的語句。特別注意,冒號(hào)是必須的。下面一行語句 print a 要有四個(gè)空格的縮進(jìn)。這是 Python 的特點(diǎn),稱之為語句塊。

唯恐說的不嚴(yán)謹(jǐn),我還是引用維基百科中的敘述:

Python 開發(fā)者有意讓遠(yuǎn)反了縮排規(guī)則的程序不能通過編譯,以此來強(qiáng)迫程序員養(yǎng)成良好的編程習(xí)慣。並且Python 語言利用縮排表示語句塊的開始和結(jié)束(Off-side 規(guī)則),而非使用花括號(hào)或者某種關(guān)鍵字。增加縮表示語句塊的開始,而減少縮排則表示語句塊的結(jié)束??s排成為了語法的一部分。例如 if 語句.

根劇 PEP 的規(guī)定,必須使用 4 個(gè)空格來表示每級(jí)縮排。使用 Tab 字符和其它數(shù)目的空格雖然都可以編譯通過,但不符合編碼規(guī)范。支持 Tab 字符和其它數(shù)目的空格僅僅是為兼容很舊的 Python 程式和某些有問題的編輯程式。

從上面的這段話中,提煉出幾個(gè)關(guān)鍵點(diǎn):

  • 必須要通過縮進(jìn)方式來表示語句塊的開始和結(jié)束
  • 縮進(jìn)用四個(gè)空格(也是必須的,別的方式或許可以,但不提倡)

if/else/elif

在進(jìn)行條件判斷的時(shí)候,只有 if,往往是不夠的。比如下圖所示的流程

http://wiki.jikexueyuan.com/project/start-learning-python/images/12201.png" alt="" />

這張圖反應(yīng)的是這樣一個(gè)問題:

輸入一個(gè)數(shù)字,并輸出輸入的結(jié)果,如果這個(gè)數(shù)字大于 10,那么同時(shí)輸出大于 10,如果小于 10,同時(shí)輸出提示小于 10,如果等于 10,就輸出表揚(yáng)的一句話。

從圖中就已經(jīng)顯示出來了,僅僅用 if 來判斷,是不足的,還需要其它分支。這就需要引入別的條件判斷了。所以,有了 if...elif...else 語句。

基本樣式結(jié)構(gòu):

if 條件 1:
    執(zhí)行的內(nèi)容 1
elif 條件 2:
    執(zhí)行的內(nèi)容 2
elif 條件 3:
    執(zhí)行的內(nèi)容 3
else:
    執(zhí)行的內(nèi)容 4

elif 用于多個(gè)條件時(shí)使用,可以沒有。另外,也可以只有 if,而沒有 else。

下面我們就不在交互模式中寫代碼了。打開文本編輯界面,你的編輯器也能提供這個(gè)功能,如果找不到,請(qǐng)回到《寫一個(gè)簡(jiǎn)單的程序》查看。

代碼實(shí)例如下:

#! /usr/bin/env python
#coding:utf-8

print "請(qǐng)輸入任意一個(gè)整數(shù)數(shù)字:"

number = int(raw_input())   #通過 raw_input()輸入的數(shù)字是字符串
                            #用 int()將該字符串轉(zhuǎn)化為整數(shù)

if number == 10:
    print "您輸入的數(shù)字是:%d"%number
    print "You are SMART."
elif number > 10:
    print "您輸入的數(shù)字是:%d"%number
    print "This number is more than 10."
elif number < 10:
    print "您輸入的數(shù)字是:%d"%number
    print "This number is less than 10."
else:
    print "Are you a human?"    

特別提醒看官注意,前面我們已經(jīng)用過 raw_input() 函數(shù)了,這個(gè)是獲得用戶在界面上輸入的信息,而通過它得到的是字符串類型的數(shù)據(jù)。

上述程序,依據(jù)條件進(jìn)行判斷,不同條件下做不同的事情了。需要提醒的是在條件中:number == 10,為了閱讀方便,在 number 和 == 之間有一個(gè)空格最好了,同理,后面也有一個(gè)。這里的 10,是 int 類型,number 也是 int 類型.

把這段程序保存成一個(gè)擴(kuò)展名是.py 的文件,比如保存為 num.py,進(jìn)入到存儲(chǔ)這個(gè)文件的目錄,運(yùn)行 Python num.py,就能看到程序執(zhí)行結(jié)果了。下面是我執(zhí)行的結(jié)果,供參考。

$ Python num.py
請(qǐng)輸入任意一個(gè)整數(shù)數(shù)字:
12 
您輸入的數(shù)字是:12
This number is more than 10.

$ Python num.py
請(qǐng)輸入任意一個(gè)整數(shù)數(shù)字:
10
您輸入的數(shù)字是:10
You are SMART.

$ Python num.py
請(qǐng)輸入任意一個(gè)整數(shù)數(shù)字:
9
您輸入的數(shù)字是:9
This number is less than 10.

不知道各位是否注意到,上面的那段代碼,開始有一行:

#! /usr/bin/env python

這是什么意思呢?

這句話以 # 開頭,表示本來不在程序中運(yùn)行。這句話的用途是告訴機(jī)器尋找到該設(shè)備上的 Python 解釋器,操作系統(tǒng)使用它找到的解釋器來運(yùn)行文件中的程序代碼。有的程序里寫的是 /usr/bin Python,表示 Python 解釋器在 /usr/bin 里面。但是,如果寫成 /usr/bin/env,則表示要通過系統(tǒng)搜索路徑尋找 Python 解釋器。不同系統(tǒng),可能解釋器的位置不同,所以這種方式能夠讓代碼更將擁有可移植性。對(duì)了,以上是對(duì) Unix 系列操作系統(tǒng)而言。對(duì)與 windows 系統(tǒng),這句話就當(dāng)不存在。

在“條件”中,就是上節(jié)提到的各種條件運(yùn)算表達(dá)式,如果是 True,就執(zhí)行該條件下的語句。

三元操作符

三元操作,是條件語句中比較簡(jiǎn)練的一種賦值方式,它的模樣是這樣的:

>>> name = "qiwsir" if "laoqi" else "github"
>>> name
'qiwsir'
>>> name = 'qiwsir' if "" else "python"
>>> name
'Python'
>>> name = "qiwsir" if "github" else ""
>>> name
'qiwsir'

總結(jié)一下:A = Y if X else Z

什么意思,結(jié)合前面的例子,可以看出:

  • 如果 X 為真,那么就執(zhí)行 A=Y
  • 如果 X 為假,就執(zhí)行 A=Z

如此例

>>> x = 2
>>> y = 8
>>> a = "python" if x>y else "qiwsir"
>>> a
'qiwsir'
>>> b = "python" if x<y else "qiwsir"
>>> b
'python'

總目錄   |   上節(jié):語句(1)   |   下節(jié):語句(3)

如果你認(rèn)為有必要打賞我,請(qǐng)通過支付寶:qiwsir@126.com,不勝感激。