python基礎之條件判斷和迴圈

2021-07-28 12:38:28 字數 4029 閱讀 8034

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

比如,輸入使用者年齡,根據年齡列印不同的內容,在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

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

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 次,這樣,我們可以列印出乙個全排列:

a1a2

a3b1

b2b3

c1c2c3

Python基礎之條件判斷

1.只有if 2.if else 3.if 若干個elif else if 語句是從上往下執行,當滿足條件後,執行對應的語句塊,後面的elif和else將不再執行 如下,只要x不是0,不是空列表,不是空字串等就會返回true,否則返回false x 1 if x print true 只有if的條件...

python學習 python基礎 判斷與迴圈

break continue 關於條件判斷和迴圈,原理與其他語言相通,只是語法不一樣,這裡簡述一下。python中實現條件判斷通過if語句來實現 語法為 也可以通過elif做更細緻的判斷 if condition1 statements1 do something when condition1 i...

Python基礎 條件判斷和迴圈

age 20 if age 18 print your age is age print adult else print youth your age is 20 adult注意 python 的縮排規則.具有相同縮排 被視為 塊,上面的3 4 行就構成了乙個 塊 縮排請嚴格按照python的習慣...