Python學習之控制流部分

2021-06-20 05:20:25 字數 4278 閱讀 6152

0) 引論

前面介紹了基礎資料部分,本節將總結一下python的控制流。有了基礎資料以及控制流,則就可以寫出一些初步的程式。可以說語言通用的部分就是基礎資料和控制流,這兩部分構成了一門語言最最基本的部分。控制流主要有順序結構,if結構,迴圈結構。下面一一介紹。

1)賦值語句

>>> x=1

>>> x

1

除了最基本的賦值語句形式:x=1; python還支援鏈式賦值,如下面所示:

>>> x=y=z=1

>>> x

1>>> y

1>>> z

1>>> x,y,z=1,2,3

>>> x

1>>> y

2>>> z

3

而且python中交換兩個變數的值非常簡單

>>> x,y=4,5

>>> x,y=y,x

>>> x

5>>> y

4

這樣的賦值方式讓python變得簡單明瞭,但是個人覺得這些方式略顯隨意,不見得是很嚴謹的做法。

>>> people=

>>> key,value = people.popitem()

>>> key

'cristina'

>>> value

45>>> people

這是字典的鏈式賦值舉例。

python也有增量賦值的模式,與c是一樣的。

>>> x=1

>>> x+=1

>>> x

2

2) 兩個運算子的比較(is 和 ==)

>>> x=y=[1,2]

>>> z=[1,2]

>>> x is y

true

>>> x==y

true

>>> x is z

false

>>> x==z

true

x is y 表示x,y是同乙個物件。

x==y

表示x,y的數值與順序都相等。

3) 邏輯運算子

and,or,not是通用的3個邏輯運算子。注意一點,邏輯表示式只有在需要求值的時候才會求值。

4) assert語句

assert語句的設計初衷是能夠及時讓程式在錯誤處停止,例如:

>>> x=-1

>>> assert 0", line 1, in assert 0

if語句:

>>> if 1>0:

print('math is true')

math is true

if else語句:

>>> num=10

>>> if num>0:

print(num,'>0')

else:

print(num,'<0')

10 >0

elif語句:

>>> num=10

>>> if num>0:

print(num,'>0')

elif num==0:

print(num,'=0')

else:

print(num,'<0')

10 >0

6) 迴圈語句

while迴圈:

>>> i=1

>>> ans=0

>>> while i<=100:

ans=ans+i

i+=1

>>> ans

5050

用for迴圈:

>>> ans=0

>>> for i in range(0,101):

ans = ans+i

>>> ans

5050

range是內建函式,能夠生成乙個範圍內的序列

>>> range(0,10)

range(0, 10)

>>> list(range(0,10))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

跳出迴圈:break以及continue:

>>> ans=0

>>> for i in range(0,101):

ans=ans+i

if i>50:

break

>>> ans

1326

>>> ans=0

>>> for i in range(0,101):

if i==50:

continue

ans=ans+i

>>> ans

5000

7) 遍歷字典

字典是python中比較常見的資料結構,下面來看如何遍歷字典裡所有的鍵:

>>> dic = 

>>> for key in dic:

print(key,'is',dic[key])

cristina is 19

bob is 23

arsharm is 42

8) 迭代

並行迭代,假設有兩個序列

>>> name=['arsharm','bob','cristina']

>>> age=[42,23,19]

>>> for i in range(len(name)):

print(name[i],'is',age[i])

arsharm is 42

bob is 23

cristina is 19

利用內建的zip函式進行迭代

>>> name=['arsharm','bob','cristina']

>>> age=[42,23,19]

>>> for name,age in zip(name,age):

print(name,'is',age)

arsharm is 42

bob is 23

cristina is 19

9) list comprehension

不知道為什麼要起這樣乙個名字,大概是說要對列表進行更加深入的理解吧。

書上翻譯說是列表推導式,反正不管他是什麼了, 它的主要目的就是利用列表實現乙個類似於迴圈的東西。

>>> [i*i for i in range(0,10)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> [n for n in name]

['arsharm', 'bob', 'cristina']

>>> [a for a in age]

[42, 23, 19]

10) 其他的一些有用的語句

pass:什麼都不做。pass語句的初衷是為了提前占用位置,以便後續擴充套件用。

del:刪除。注意del刪除的是名稱,而不是值,在python中時沒有辦法真正刪除值的。

>>> x=[1,2,3]

>>> y=x

>>> del x

>>> x

traceback (most recent call last):

file "", line 1, in x

nameerror: name 'x' is not defined

>>> y

[1, 2, 3]

結果顯示del x後,只是把x這個變數刪除,而沒有真正的刪除值。

exec:執行字串方式書寫

>>> exec("print('hello world!')")

hello world!

eval: 計算字串形式書寫的表示式

>>> eval('1+2')

3

Python基礎學習之IF控制流

判斷,基於一定的條件,決定是否要執行特定的一段 例如判斷乙個數是不是正數 x 0.5if x 0 print hey print x is positive hey x is positive在這裡,如果x 0為false,那麼程式將不會執行兩條print語句。上面例子中的這兩條語句 print h...

Python之 控制流

格式 i1 3 if i1 4 print yes you are right elif 0 i1 4 print im dont konw else print no you are wrong 注意if elif以及else後面的 符號,我們通過它告訴python下面跟著乙個語句塊。number...

Python之四 控制流

1 if 邏輯判斷 if a b elif c d else e 先判斷a語句塊的值是否為真,如果為真,則執行b語句塊,如果不為真則轉到elif判斷c語句塊的值是否為真,如果為真執行d語句塊,如果不為真轉到else,執行e語句塊 例句 2 while迴圈 while a b先判斷語句塊a的值是否為真...