計算機之因此能作不少自動化的任務,由於它能夠本身作條件判斷。php
好比,輸入用戶年齡,根據年齡打印不一樣的內容,在Python程序中,用if
語句實現:css
age = 20 if age >= 18: print 'your age is', age print 'adult'
根據Python的縮進規則,若是if
語句判斷是True
,就把縮進的兩行print語句執行了,不然,什麼也不作。python
也能夠給if
添加一個else
語句,意思是,若是if
判斷是False
,不要執行if
的內容,去把else
執行了:函數
age = 3 if age >= 18: print 'your age is', age print 'adult' else: print 'your age is', age print 'teenager'
注意不要少寫了冒號:
。測試
固然上面的判斷是很粗略的,徹底能夠用elif
作更細緻的判斷:命令行
age = 3 if age >= 18: print 'your age is', age print 'adult' else: print 'your age is', age print 'teenager'
elif
是else if
的縮寫,徹底能夠有多個elif
,因此if
語句的完整形式就是:3d
if <條件判斷1>: <執行1> elif <條件判斷2>: <執行2> elif <條件判斷3>: <執行3> else: <執行4>
if
語句執行有個特色,它是從上往下判斷,若是在某個判斷上是True
,把該判斷對應的語句執行後,就忽略掉剩下的elif
和else
,因此,請測試並解釋爲何下面的程序打印的是teenager
:調試
age = 20 if age >= 6: print 'teenager' elif age >= 18: print 'adult' else: print 'kid'
if
判斷條件還能夠簡寫,好比寫:code
if x: print 'True'
只要x
是非零數值、非空字符串、非空list等,就判斷爲True
,不然爲False
。xml
Python的循環有兩種,一種是for...in循環,依次把list或tuple中的每一個元素迭代出來,看例子:
names = ['Michael', 'Bob', 'Tracy'] for name in names: print name
執行這段代碼,會依次打印names
的每個元素:
Michael Bob Tracy
因此for x in ...
循環就是把每一個元素代入變量x
,而後執行縮進塊的語句。
再好比咱們想計算1-10的整數之和,能夠用一個sum
變量作累加:
sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print sum
若是要計算1-100的整數之和,從1寫到100有點困難,幸虧Python提供一個range()函數,能夠生成一個整數序列,好比range(5)生成的序列是從0開始小於5的整數:
>>> range(5) [0, 1, 2, 3, 4]
range(101)就能夠生成0-100的整數序列,計算以下:
sum = 0 for x in range(101): sum = sum + x print sum
請自行運行上述代碼,看看結果是否是當年高斯同窗心算出的5050。
第二種循環是while循環,只要條件知足,就不斷循環,條件不知足時退出循環。好比咱們要計算100之內全部奇數之和,能夠用while循環實現:
sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print sum
在循環內部變量n
不斷自減,直到變爲-1
時,再也不知足while條件,循環退出。
最後看一個有問題的條件判斷。不少同窗會用raw_input()
讀取用戶的輸入,這樣能夠本身輸入,程序運行得更有意思:
birth = raw_input('birth: ') if birth < 2000: print '00前' else: print '00後'
輸入1982
,結果卻顯示00後
,這麼簡單的判斷Python也能搞錯?
固然不是Python的問題,在Python的交互式命令行下打印birth
看看:
>>> birth '1982' >>> '1982' < 2000 False >>> 1982 < 2000 True
緣由找到了!原來從raw_input()
讀取的內容永遠以字符串的形式返回,把字符串和整數比較就不會獲得期待的結果,必須先用int()
把字符串轉換爲咱們想要的整型:
birth = int(raw_input('birth: '))
再次運行,就能夠獲得正確地結果。可是,若是輸入abc
呢?又會獲得一個錯誤信息:
Traceback (most recent call last): ValueError: invalid literal for int() with base 10: 'abc'
原來int()
發現一個字符串並非合法的數字時就會報錯,程序就退出了。
如何檢查並捕獲程序運行期的錯誤呢?後面的錯誤和調試會講到。
條件判斷可讓計算機本身作選擇,Python的if...elif...else很靈活。
循環是讓計算機作重複任務的有效的方法,有些時候,若是代碼寫得有問題,會讓程序陷入「死循環」,也就是永遠循環下去。這時能夠用Ctrl+C
退出程序,或者強制結束Python進程。
請試寫一個死循環程序。