語句(2)

2018-02-24 15:48 更新

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

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

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

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

if/else/elif

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

這張圖反應(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'
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)