鏈式條件
當有多個可能的時候,我們需要多個分支
表示這種情況的方法之一是鏈式條件
if x>y:
print(0
)elif xprint(1
)else
:print(2
)
elif是else if的縮寫,elif語句數目沒有限制,如果只有乙個else1從句,那麼這個從句必須在最末,但這個語句並不是必須的
巢狀條件
存在外層條件和內層條件
if x==y:
print
("equal"
)else
:if xprint
("less"
)else
:print
("greater"
)
但是巢狀語句在可讀性上較差,當需要多個條件並行時,可以使用邏輯運算子代替
遞迴乙個函式呼叫另乙個函式是合法的,乙個函式呼叫自己也是合法的
def
countdown
(n):
if n<=0:
print
("blastoff!"
)else
:print
(n) countdown(n-
1)
當n大於0時,會不斷的遞減同時呼叫自己,直到等於0
乙個呼叫它自己的函式是遞迴的,這個過程被稱為遞迴(recursion)
利用遞迴將乙個字串列印n次
def
print_n
(s,n)
:if n<=0:
return
print
(s) print_n(s,n-
1)
在需要迴圈的地方合理選擇遞迴還是for迴圈
遞迴函式的堆疊圖
每當乙個函式被呼叫時,python會生成乙個新的棧幀,用於儲存函式的區域性變數和形參。對於乙個遞迴函式,在堆疊上可能同時有多個堆疊
堆疊的頂部是main棧幀
每乙個棧幀的形參n存在不同的值,n=0的棧底,被稱作基礎情形,它已經不能再被遞迴呼叫了,沒有更多的棧幀了
無限遞迴
如果乙個遞迴永遠不會到達基礎情形,一直進行遞迴,並且程式永遠不會終止
這被稱作無限遞迴
def
recurse()
: recurse(
)
在大多數程式設計環境裡,乙個具有無限遞迴的程式並非永遠不會終止,當達到最大遞迴深度是,python會報告乙個錯誤資訊
鍵盤輸入
python提供了乙個內建函式input,可以暫停程式執行,等待使用者輸入,回車後繼續執行,input是以字串的形式返回使用者鍵入的內容
在使用者輸入是最好有提示語,input接受提示語作為實參
name =
input
('what is your name\n'
)
末尾的\n符號表示換行,這樣使用者的輸入就會出現在提示語的下方
如果想要輸入數字,input返回的都是字串,需要用int()做轉換
除錯錯誤資訊中重要的部分是
哪類的錯誤
在哪兒出現的
但是錯誤指向的地方不一定是錯誤發生的地方
注意空格和製表符經常被忽略
有返回值的函式
返回值呼叫乙個有返回值的函式會生成乙個返回值,我們通常將這個值賦給乙個變數或者作為表示式的一部分
e = math.exp(
1.0)
height = randius*math.sin(radians)
第乙個例子,area,分會給定半徑的圓的面積
def
area
(radius)
: a = math.pi*radius**
2return a
return語句的意思是,馬上從該函式返回,並使用接下來的表示式作為返回值,表示式可以複雜,不一定只是乙個變數
def
area
(radius)
:return math.pi*radius**
2
另一方面,像a這樣的臨時變數能使除錯變得更加簡單
在條件語句中,也可以根據不同的條件,返回不同的值
def
adsolute_value
(x):
if x<0:
return
-x else
:return x
一旦返回語句執行,函式就會終止,後面的**不會被執行
出現在return語句之後的**,或者在執行流程中永遠不會到達的**,被稱為死**
在乙個有返回值的韓世忠,最好保證每一種流程都存在return語句
def
absolute_value
(x):
if x<0:
return
-x if x>0:
return x
在上述**中,當x=0時,就不存在返回值函式直接執行結束,那麼返回值將會是none,注意none和0的區別
python中提供了乙個函式abs計算絕對值
think python學習筆記(6)
增量式開發 面對複雜的程式,可以採用增量式開發 增量式開發的目標是通過每次只增加和測試少量 來避免長時間的除錯 這種開發而關鍵在於 1.從乙個能執行的程式開始,每次只增加少量改動 2.用臨時變數儲存中間值,便於檢查 3.刪除腳手架 組合寫乙個函式,接受兩個點作為引數,分別是圓心和圓周上一點,然後計算...
think python學習筆記(7)
平方根 迴圈常用於計算數值的程式中,這類程式一般從乙個大概的值開始,然後迭代式的進行改進 例如,牛頓法是計算平方根的一種方法 當我們想求a的平方根時,從任意乙個估算值開始x,利用下面的公式可以計算出更為精確地估算值 y x a x 2 得到的y的值會更加接近平方根的真實值,不斷的用y去代替x,利用這...
think python學習筆記(12)
字典和列表 在字典中,列表可以作為值出現。例如,當倒轉字典的時候,可能有的鍵對應的值,就是由列表組成的 def invert dict d inverse dict for key in d val d key if val not in inverse inverse val key else i...