鍍金池/ 教程/ Python/ exercise21. 函數(shù)的返回值
附錄 A-練習 9:生成一個空文件(Touch, New-Item)
附錄 A-練習 10:復制文件 (cp)
exercise44.繼承 Vs.包含
附錄 A-練習 14:刪除文件 (rm)
附錄 A-練習 11:移動文件 (mv)
exercise46.項目骨架
附錄 A-練習 3:如果你迷路了
exercise37.復習符號
exercise47.自動化測試
exercise3.數(shù)字和數(shù)學計算
附錄 A-練習 1:安裝
exercise32.循環(huán)和列表
exercise31.做出決定
exercise42.對象、類、以及從屬關系
exercise48.更復雜的用戶輸入
下一步
簡介
附錄 A-練習 7:刪除路徑 (rmdir)
exercise49.寫代碼語句
exercise18.命名, 變量, 代碼, 函數(shù)
exercise12.提示別人
exercise14.提示和傳遞
exercise40.模塊, 類和對象
附錄 A-練習 12:查看文件 (less, MORE)
exercise9.打印, 打印, 打印
exercise13.參數(shù), 解包, 變量
exercise30. Else 和 If
exercise28. 布爾表達式
附錄 A-練習 4:創(chuàng)建一個路徑 (mkdir)
附錄 A-練習 15:退出命令行 (exit)
exercise25. 更多更多的練習
exercise6.字符串和文本
exercise2.注釋和井號“#”
exercise21. 函數(shù)的返回值
附錄 A-下一步
exercise1.第一個程序
exercise23. 閱讀代碼
附錄 A-練習 5:改變當前路徑 (cd)
exercise17.更多文件操作
exercise24. 更多的練習
exercise19.函數(shù)和變量
exercise51.從瀏覽器獲取輸入
exercise22. 到目前為止你學到了什么?
exercise41.學會說面向對象
exercise52.開始你的 web 游戲
exercise20. 函數(shù)和文件
exercise15.讀文件
exercise45.你來制作一個游戲
exercise10.那是什么?
exercise8.打印, 打印
exercise35.分支和函數(shù)
exercise26. 恭喜你,可以進行一次考試了
exercise33.while 循環(huán)
exercise29. IF 語句
exercise36.設計和調試
exercise0.安裝和準備
exercise50.你的第一個網(wǎng)站
附錄 A-練習 2:路徑, 文件夾, 名錄 (pwd)
exercise38.列表操作
附錄 A-練習 6:列出當前路徑 (ls)
exercise16.讀寫文件
exercise4.變量和命名
exercise34.訪問列表元素
exercise11.提問
exercise43.基本的面向對象的分析和設計
附錄 A-簡介
附錄 A-練習 8:目錄切換(pushd, popd)
來自老程序員的建議
exercise27. 記住邏輯
exercise5.更多的變量和打印
exercise7.更多的打?。ㄝ敵觯?/span>
附錄 A-練習 13:輸出文件 (cat)
exercise39.字典,可愛的字典

exercise21. 函數(shù)的返回值

你已經(jīng)學過使用=給變量命名,將變量定義為某個數(shù)字或者字符串。接下來我們將讓你見證更多奇跡。我們要給你演示如何使用=以及一個新的 Python 關鍵字 return 來將變量設置為“一個函數(shù)的值”。有一點你需要極其注意,不過我們先來編寫下面的腳本吧:

def add(a, b):
    print "ADDING %d + %d" % (a, b)
    return a + b

def subtract(a, b):
    print "SUBTRACTING %d - %d" % (a, b)
    return a - b

def multiply(a, b):
    print "MULTIPLYING %d * %d" % (a, b)
    return a * b

def divide(a, b):
    print "DIVIDING %d / %d" % (a, b)
    return a / b

print "Let's do some math with just functions!"

age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)

print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)

# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."

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

print "That becomes: ", what, "Can you do it by hand?"

現(xiàn)在我們創(chuàng)建了自己的加減乘除數(shù)學函數(shù): add, subtract, multiply, 以及 divide。重要的是函數(shù)的最后一行,例如 add 的最后一行是 return a + b,它實現(xiàn)的功能是這樣的:

1.我們調用函數(shù)時使用了兩個參數(shù): a 和 b 。 2.我們打印出這個函數(shù)的功能,這里就是計算加法(adding) 3.接下來我們告訴 Python 讓它做某個回傳的動作:我們將 a + b 的值返回(return)?;蛘吣憧梢赃@么說:“我將 a 和 b 加起來,再把結果返回?!?4.Python 將兩個數(shù)字相加,然后當函數(shù)結束的時候,它就可以將 a + b 的結果賦予一個變量。

和本書里的很多其他東西一樣,你要慢慢消化這些內容,一步一步執(zhí)行下去,追蹤一下究竟發(fā)生了什么。為了幫助你理解,本節(jié)的附加題將讓你解決一個迷題,并且讓你學到點比較酷的東西。

你看到的結果

$ python ex21.py
Let's do some math with just functions!
ADDING 30 + 5
SUBTRACTING 78 - 4
MULTIPLYING 90 * 2
DIVIDING 100 / 2
Age: 35, Height: 74, Weight: 180, IQ: 50
Here is a puzzle.
DIVIDING 50 / 2
MULTIPLYING 180 * 25
SUBTRACTING 74 - 4500
ADDING 35 + -4426
That becomes:  -4391 Can you do it by hand?

附加題

1.如果你不是很確定 return 的功能,嘗試自己寫幾個函數(shù)出來,讓它們返回一些值。你可以將任何可以放在=右邊的東西作為一個函數(shù)的返回值。 2.這個腳本的結尾是一個迷題。我將一個函數(shù)的返回值用作了另外一個函數(shù)的參數(shù)。我將它們連接一起,就像寫數(shù)學等式一樣。這樣可能有些難懂,不過運行一下你就知道結果了。你可以試試看能不能用正常的方法實現(xiàn)和這個表達式一樣的功能。 3.一旦你解決了這個迷題,試著修改一下函數(shù)里的某些部分,然后看會有什么樣的結果。你可以有目的地修改它,讓它輸出另外一個值。 4.顛倒過來再做一次。寫一個簡單的等式,使用相同的函數(shù)來計算它。

這節(jié)習題可能會讓你有些頭大,不過慢慢來,把它當做一個小游戲,解決這樣的迷題也是編程的樂趣之一。后面你還會看到類似的小謎題。

常見問題

Q:為什么 Python 打印公式或函數(shù)是反向的?

它們并不是真正的反向的, it's "inside out." When you start breaking down the function into separate formulas and function calls you'll see how it works. Try to understand what I mean by "inside out" rather than "backward."

Q: 怎樣使用 raw_input() 輸入我自己的值?

還記得 int(raw_input())嗎? 這樣做有一個問題就是你不能輸入浮點數(shù),不過你可以使用 float(raw_input())來輸入。

Q: 你說的 "寫一個公式"是什么意思?

試試先寫 24 + 34 / 100 - 1023,再用我們的函數(shù)轉化一下?,F(xiàn)在給你的數(shù)學公式加入變量,這樣它就變成了一個公式。