if語句用來檢驗一個條件, 如果 條件為真,我們運行一塊語句(稱為 if-塊 ), 否則 我們處理另外一塊語句(稱為 else-塊 )。 else 從句是可選的。
使用if語句:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/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 |
輸出:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ 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()函數取得用戶猜測的數字。函數只是重用的程序段。
我們為內建的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語句是:
1
2
|
if True : print 'Yes, it is true' |
在Python執行完一個完整的if語句以及與它相關聯的elif和else從句之后,它移向if語句塊的下一個語句。在這個例子中,這個語句塊是主塊。程序從主塊開始執行,而下一個語句是print 'Done'語句。在這之后,Python看到程序的結尾,簡單的結束運行。
盡管這是一個非常簡單的程序,但是我已經在這個簡單的程序中指出了許多你應該注意的地方。所有這些都是十分直接了當的(對于那些擁有C/C++背景的用戶來說是尤為簡單的)。它們在開始時會引起你的注意,但是以后你會對它們感到熟悉、“自然”。
下面我們再來看一個代碼實例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#! /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,就能看到程序執行結果了。下面是我執行的結果,供參考。
1
|
$ Python num.py |
1
|
請輸入任意一個整數數字: |
12
1
2
|
您輸入的數字是:12 This number is more than 10. |
1
|
$ Python num.py |
1
|
請輸入任意一個整數數字: |
10
1
2
|
您輸入的數字是:10 You are SMART. |
1
|
$ Python num.py |
1
|
請輸入任意一個整數數字: |
9
1
2
|
您輸入的數字是:9 This number is less than 10. |
不知道各位是否注意到,上面的那段代碼,開始有一行:
1
|
#! /usr/bin/env python |
這是什么意思呢?
這句話以 # 開頭,表示本來不在程序中運行。這句話的用途是告訴機器尋找到該設備上的 Python 解釋器,操作系統使用它找到的解釋器來運行文件中的程序代碼。有的程序里寫的是 /usr/bin Python,表示 Python 解釋器在 /usr/bin 里面。但是,如果寫成 /usr/bin/env,則表示要通過系統搜索路徑尋找 Python 解釋器。不同系統,可能解釋器的位置不同,所以這種方式能夠讓代碼更將擁有可移植性。對了,以上是對 Unix 系列操作系統而言。對與 windows 系統,這句話就當不存在。
在“條件”中,就是上節提到的各種條件運算表達式,如果是 True,就執行該條件下的語句。
三元操作符
三元操作,是條件語句中比較簡練的一種賦值方式,它的模樣是這樣的:
1
2
3
4
5
6
7
8
9
|
>>> 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
如此例
1
2
3
4
5
6
7
8
|
>>> x = 2 >>> y = 8 >>> a = "python" if x>y else "qiwsir" >>> a 'qiwsir' >>> b = "python" if x<y else "qiwsir" >>> b 'python' |