你已經學過使用 =
給變數命名,以及將變數定義為某個數字或者字串。接下來我們將讓你見證更多奇蹟。我們要演示給你的是如何使用 =
以及乙個新的 python 詞彙return
來將變數設定為「乙個函式的值」。有一點你需要及其注意,不過我們暫且不講,先撰寫下面的指令碼吧:
1view codedefadd(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
"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
"that becomes:
", what, "
can you do it by hand?
"
現在我們建立了我們自己的加減乘除數學函式: 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.
1def 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
"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
"that becomes:
", what, "
can you do it by hand?"#
留心這種輸出格式,兩個字串之間加了變數
笨辦法學Python(三十一)
這本書的上半部分你列印了一些東西,而且呼叫了函式,不過一切都是直線式進行的。你的指令碼從最上面一行開始,一路執行到結束,但其中並沒有決定程式流向的分支點。現在你已經學了 if else 和 elif 你就可以開始建立包含條件判斷的指令碼了。上乙個指令碼中你寫了一系列的簡單提問測試。這節的指令碼中,你...
笨辦法學Python(二十八)
上一節你學到的邏輯組合的正式名稱是 布林邏輯表示式 boolean logic expression 在程式設計中,布林邏輯可以說是無處不在。它們是計算機運算的基礎和重要組成部分,掌握它們就跟學 掌握音階一樣重要。在這節練習中,你將在 python 裡使用到上節學到的邏輯表示式。先為下面的每乙個邏輯...
笨辦法學Python(二十二)
這節以及下一節的習題中不會有任何 所以也不會有習題答案或者加分習題。其實這節習題可以說是乙個巨型的加分習題。我將讓你完成乙個 讓你回顧你到現在學到的所有東西。首先,回到你的每乙個習題的指令碼裡,把你碰到的每乙個詞和每乙個符號 symbol,character的別名 寫下來。確保你的符號列表是完整的。...