本文主要介紹python中條件判斷和迴圈的基本知識和使用
計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。
比如,輸入使用者年齡,根據年齡列印不同的內容,在python程式中,可以用if語句實現:
age = 20
if age >= 18:
print 'your age is', age
print 'adult'
print 'end'
注意: python**的縮排規則。具有相同縮排的**被視為**塊,上面的3,4行 print 語句就構成乙個**塊(但不包括第5行的print)。如果 if 語句判斷為 true,就會執行這個**塊。
縮排請嚴格按照python的習慣寫法:4個空格,不要使用tab,更不要混合tab和空格,否則很容易造成因為縮排引起的語法錯誤。
注意:if 語句後接表示式,然後用:表示**塊開始。
如果你在python互動環境下敲**,還要特別留意縮排,並且退出縮排需要多敲一行回車:
>>> age = 20
>>> if age >= 18:
... print 'your age is', age
... print 'adult'
...your age is 20
adult
當 if 語句判斷表示式的結果為 true 時,就會執行 if 包含的**塊:
if age >= 18:
print 'adult'
如果我們想判斷年齡在18歲以下時,列印出 『teenager』,怎麼辦?
方法是再寫乙個 if:
if age < 18:
print 'teenager'
或者用 not 運算:
if not age >= 18:
print 'teenager'
細心的同學可以發現,這兩種條件判斷是「非此即彼」的,要麼符合條件1,要麼符合條件2,因此,完全可以用乙個 if … else … 語句把它們統一起來:
if age >= 18:
print 'adult'
else:
print 'teenager'
利用 if … else … 語句,我們可以根據條件表示式的值為 true 或者 false ,分別執行 if **塊或者 else **塊。
注意: else 後面有個「:」。
有的時候,乙個 if … else … 還不夠用。比如,根據年齡的劃分:
條件1:18歲或以上:adult
條件2:6歲或以上:teenager
條件3:6歲以下:kid
我們可以用乙個 if age >= 18 判斷是否符合條件1,如果不符合,再通過乙個 if 判斷 age >= 6 來判斷是否符合條件2,否則,執行條件3:
if age >= 18:
print 'adult'
else:
if age >= 6:
print 'teenager'
else:
print 'kid'
這樣寫出來,我們就得到了乙個兩層巢狀的 if … else … 語句。這個邏輯沒有問題,但是,如果繼續增加條件,比如3歲以下是 baby:
if age >= 18:
print 'adult'
else:
if age >= 6:
print 'teenager'
else:
if age >= 3:
print 'kid'
else:
print 'baby'
這種縮排只會越來越多,**也會越來越難看。
要避免巢狀結構的 if … else …,我們可以用 if … 多個elif … else … 的結構,一次寫完所有的規則:
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
elif age >= 3:
print 'kid'
else:
print 'baby'
elif 意思就是 else if。這樣一來,我們就寫出了結構非常清晰的一系列條件判斷。
特別注意: 這一系列條件判斷會從上到下依次判斷,如果某個判斷為 true,執行完對應的**塊,後面的條件判斷就直接忽略,不再執行了。
list或tuple可以表示乙個有序集合。如果我們想依次訪問乙個list中的每乙個元素呢?比如 list:
l = ['adam', 'lisa', 'bart']
print l[0]
print l[1]
print l[2]
如果list只包含幾個元素,這樣寫還行,如果list包含1萬個元素,我們就不可能寫1萬行print。
這時,迴圈就派上用場了。
python的 for 迴圈就可以依次把list或tuple的每個元素迭代出來:
l = ['adam', 'lisa', 'bart']
for name in l:
print name
注意: name 這個變數是在 for 迴圈中定義的,意思是,依次取出list中的每乙個元素,並把元素賦值給 name,然後執行for迴圈體(就是縮排的**塊)。
這樣一來,遍歷乙個list或tuple就非常容易了。
和 for 迴圈不同的另一種迴圈是 while 迴圈,while 迴圈不會迭代 list 或 tuple 的元素,而是根據表示式判斷迴圈是否結束。
比如要從 0 開始列印不大於 n 的整數:
n = 10
x = 0
while x < n:
print x
x = x + 1
while迴圈每次先判斷 x < n,如果為true,則執行迴圈體的**塊,否則,退出迴圈。
在迴圈體內,x = x + 1 會讓 x 不斷增加,最終因為 x < n 不成立而退出迴圈。
如果沒有這乙個語句,while迴圈在判斷 x < n 時總是為true,就會無限迴圈下去,變成死迴圈,所以要特別留意while迴圈的退出條件。
用 for 迴圈或者 while 迴圈時,如果要在迴圈體內直接退出迴圈,可以使用 break 語句。
比如計算1至100的整數和,我們用while來實現:
sum = 0
x = 1
while true:
sum = sum + x
x = x + 1
if x > 100:
break
print sum
咋一看, while true 就是乙個死迴圈,但是在迴圈體內,我們還判斷了 x > 100 條件成立時,用break語句退出迴圈,這樣也可以實現迴圈的結束。
在迴圈過程中,可以用break退出當前迴圈,還可以用continue跳過後續迴圈**,繼續下一次迴圈。
假設我們已經寫好了利用for迴圈計算平均分的**:
l = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in l:
sum = sum + x
n = n + 1
print sum / n
for x in l:
if x < 60:
continue
sum = sum + x
n = n + 1
在迴圈內部,還可以巢狀迴圈,我們來看乙個例子:
for x in ['a', 'b', 'c']:
for y in ['1', '2', '3']:
print x + y
x 每迴圈一次,y 就會迴圈 3 次,這樣,我們可以列印出乙個全排列:
a1
a2a3
b1b2
b3c1
c2c3
Python開發的入門教程 五 set
本文主要介紹python中set的基本知識和使用。dict的作用是建立一組 key 和一組 value 的對映關係,dict的key是不能重複的。有的時候,我們只想要 dict 的 key,不關心 key 對應的 value,目的就是保證這個集合的元素不會重複,這時,set就派上用場了。set 持有...
Scala開發入門教程
scala開發教程 1 開始神奇的scala程式設計之旅 scala開發教程 2 起步scala scala開發教程 3 進一步scala scala開發教程 4 類和物件 一 scala開發教程 5 類和物件 二 scala開發教程 6 基本資料型別 scala開發教程 7 操作基本資料型別 sc...
Scala開發入門教程
scala開發教程 1 開始神奇的scala程式設計之旅 scala開發教程 2 起步scala scala開發教程 3 進一步scala scala開發教程 4 類和物件 一 scala開發教程 5 類和物件 二 scala開發教程 6 基本資料型別 scala開發教程 7 操作基本資料型別 sc...