笨辦法學Python(二十一)

2022-04-02 18:53:43 字數 3475 閱讀 4726

你已經學過使用 =

給變數命名,以及將變數定義為某個數字或者字串。接下來我們將讓你見證更多奇蹟。我們要演示給你的是如何使用 =

以及乙個新的 python 詞彙return

來將變數設定為「乙個函式的值」。有一點你需要及其注意,不過我們暫且不講,先撰寫下面的指令碼吧:

1

defadd(a, b):

2print

"adding %d + %d

" %(a, b)

3return a +b45

defsubtract(a, b):

6print

"subtracting %d - %d

" %(a, b)

7return a -b89

defmultiply(a, b):

10print

"multiplying %d * %d

" %(a, b)

11return a *b

1213

defdivide(a, b):

14print

"dividing %d / %d

" %(a, b)

15return a /b

1617

18print

"let's do some math with just functions!"19

20 age = add(30, 5)

21 height = subtract(78, 4)

22 weight = multiply(90, 2)

23 iq = divide(100, 2)

2425

print

"age: %d, height: %d, weight: %d, iq: %d

" %(age, height, weight, iq)

262728#

a puzzle for the extra credit, type it in anyway.

29print

"here is a puzzle."30

31 what = add(age, subtract(height, multiply(weight, divide(iq, 2))))

3233

print

"that becomes:

", what, "

can you do it by hand?

"

view code

現在我們建立了我們自己的加減乘除數學函式: add

, subtract

, multiply

, 以及 divide

。重要的是函式的最後一行,例如 add

的最後一行是 return a + b

,它實現的功能是這樣的:

我們呼叫函式時使用了兩個引數: a

和 b。我們列印出這個函式的功能,這裡就是計算加法(adding)

接下來我們告訴 python 讓它做某個回傳的動作:我們將 a + b

的值返回(return)。或者你可以這麼說:「我將 a

和 b加起來,再把結果返回。」

python 將兩個數字相加,然後當函式結束的時候,它就可以將 a + b

的結果賦予乙個變數。

和本書裡的很多其他東西一樣,你要慢慢消化這些內容,一步一步執行下去,追蹤一下究竟發生了什麼。為了幫助你理解,本節的加分習題將讓你解決乙個迷題,並且讓你學到點比較酷的東西。

如果你不是很確定 return

的功能,試著自己寫幾個函式出來,讓它們返回一些值。你可以將任何可以放在 =

右邊的東西作為乙個函式的返回值。

這個指令碼的結尾是乙個迷題。我將乙個函式的返回值用作了另外乙個函式的引數。我將它們鏈結到了一起,就跟寫數學等式一樣。這樣可能有些難讀,不過執行一下你就知道結果了。接下來,你需要試試看能不能用正常的方法實現和這個表示式一樣的功能。

一旦你解決了這個迷題,試著修改一下函式裡的某些部分,然後看會有什麼樣的結果。你可以有目的地修改它,讓它輸出另外乙個值。

最後,顛倒過來做一次。寫乙個簡單的等式,使用一樣的函式來計算它。

這個習題可能會讓你有些頭大,不過還是慢慢來,把它當做乙個遊戲,解決這樣的迷題正是程式設計的樂趣之一。後面你還會看到類似的小謎題。

1.注意最後一行(33行)的輸出格式:

print "that's becomes:", what, "can you do it by hand?"    #留心這種輸出格式,兩個字串之間加了變數

2.

1

def add(a, b): #

定義乙個函式,下同,函式的運算分別加、減、乘和除。

2print

"adding %d + %d

" %(a, b)

3return a + b #

函式返回a+b的值,下同,對應各自的運算45

defsubtract(a, b):

6print

"subtracting %d - %d

" %(a, b)

7return a -b89

defmultiply(a, b):

10print

"multiplying %d * %d

" %(a, b)

11return a *b

1213

defdivide(a, b):

14print

"dividing %d / %d

" %(a, b)

15return a /b

1617

18print

"let's do some math with just functions!"19

20 age = add(30, 5)

21 height = subtract(78, 4)

22 weight = multiply(90, 2)

23 iq = divide(100, 2)

2425

print

"age: %d, height: %d, weight: %d, iq: %d

" %(age, height, weight, iq)

262728#

a puzzle for the extra credit, type it in anyway.

29print

"here is a puzzle."30

31 what = add(age, subtract(height, multiply(weight, divide(iq, 2)))) #

巢狀函式,4個函式3層巢狀

3233

print

"that becomes:

", what, "

can you do it by hand?"#

留心這種輸出格式,兩個字串之間加了變數

笨辦法學Python(三十一)

這本書的上半部分你列印了一些東西,而且呼叫了函式,不過一切都是直線式進行的。你的指令碼從最上面一行開始,一路執行到結束,但其中並沒有決定程式流向的分支點。現在你已經學了 if else 和 elif 你就可以開始建立包含條件判斷的指令碼了。上乙個指令碼中你寫了一系列的簡單提問測試。這節的指令碼中,你...

笨辦法學Python(二十八)

上一節你學到的邏輯組合的正式名稱是 布林邏輯表示式 boolean logic expression 在程式設計中,布林邏輯可以說是無處不在。它們是計算機運算的基礎和重要組成部分,掌握它們就跟學 掌握音階一樣重要。在這節練習中,你將在 python 裡使用到上節學到的邏輯表示式。先為下面的每乙個邏輯...

笨辦法學Python(二十二)

這節以及下一節的習題中不會有任何 所以也不會有習題答案或者加分習題。其實這節習題可以說是乙個巨型的加分習題。我將讓你完成乙個 讓你回顧你到現在學到的所有東西。首先,回到你的每乙個習題的指令碼裡,把你碰到的每乙個詞和每乙個符號 symbol,character的別名 寫下來。確保你的符號列表是完整的。...