DayDayUP_Python自學記錄[3]_Python條件判斷語句(if while for)

if else 語句

計算機之所以能做很多自動化的任務,因爲它可以自己做條件判斷。

比如,輸入用戶年齡,根據年齡打印不同的內容,在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交互環境下敲代碼,還要特別留意縮進,並且退出縮進需要多敲一行回車:

if-elif-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,執行完對應的代碼塊,後面的條件判斷就直接忽略,不再執行了。 冒號也是不能漏的**

for循環

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循環體(就是縮進的代碼塊)。

while循環

和 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循環的退出條件。

break退出循環

用 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語句退出循環,這樣也可以實現循環的結束。

continue繼續循環

在循環過程中,可以用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

現在老師只想統計及格分數的平均分,就要把 x < 60 的分數剔除掉,這時,利用 continue,可以做到當 x < 60的時候,不繼續執行循環體的後續代碼,直接進入下一次循環:

for x in L:
    if x < 60:
        continue
    sum = sum + x
    n = n + 1

多重循環

實例1 字符串組合

#!/usr/bin/python
# -*- coding: UTF-8 -*-
    for x in ['A', 'B', 'C']:
        for y in ['1', '2', '3']:
            print x + y

實例2 質數

#!/usr/bin/python
# -*- coding: UTF-8 -*-
for num in range(10,20): # 迭代 10 到 20 之間的數字
  for i in range(2,num):# 根據因子迭代
    if num%i==0:
      j=num/i
      print '%d not a prime  eg %d * %d = %d ' % (num,i,j,i*j)
      break;
  else:
    print num,'is a prime'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章