Exercise 21:函數可以返回一些東西

原文鏈接:http://learnpythonthehardway.org/book/ex21.html

       你已經使用過 = 字符來給一個命名的變量賦予一個數值或者字符串。現在我打算再向你展示一個引起你頭腦風暴的內容,我將展示如何使用 = 字符和Python中一個新的關鍵字reaturn來一個來自函數的返回值賦給一個變量。這裏可能有一件事情你需要特別注意,但是你還是餡餅下面的代碼輸入先:

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 ,40)
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 becomer:" ,what ,"Can you do it by hand?"
        我們現在可以用我自己寫的 add ,subtract ,multiply ,divide函數來做數學運算。這裏最重要的東西就是在 add 函數裏面的最後一行 return a + b這句代碼。它依次做了下面這些事情:

1、我們的函數要帶有兩個參數 a 和 b來被調用。

2、我們打印出我們函數正在做什麼事情,在這裏在做 “ADDING"操作。

3、然後我們讓Python做一個回傳的操作:我們返回了 a + b相加後的值。你可以像這樣描述它,“我讓 a 和 b相加然後返回其相加的結果”。

4、Python 會將這兩個數值相加。然後當函數結束的時候,在調用了這個函數任何一行都可以將 a+b的結果賦給某一個變量。

        和這本書中其他東西一樣,你應該慢慢消化這些知識點,試着一步一步跟蹤看看發生了什麼。爲了讓你更好的理解這裏需要你解決一個加分難題,它會讓你學到一些很酷的東西。

輸出的結果如下:

c:\>python ex21.py
Let's do some math with just functions!
ADDING 30 + 5
SUBTRACTING 78 - 40
MULTIPLYING 90 * 2
DIVIDING 100 / 2
Age: 35, Height: 38, Weight: 180, IQ: 50
Here is a puzzle.
DIVIDING 50 / 2
MULTIPLYING 180 * 25
SUBTRACTING 38 - 4500
ADDING 35 + -4462
That becomer: -4427 Can you do it by hand?

研究訓練:

1、如果你還是無法確認return到底做了什麼話,那你試着寫一些你自己的函數讓它們返回一些值。你可以返回任何可以放在 = 右邊的任何東西。

2、在腳本的最後面是一個加分題。我把一個函數返回來的值又作爲另一個函數的參數。我將它們鏈接到了一起,就跟寫數學等式一樣。這看起來好像有點奇怪,不過你運行腳本的話會看到它輸出結果。你要試試看能不能用正常的方法寫一個和這個功能一樣的公式。

3、一旦你寫出了公式解決了這個難題,那麼就修改其中的部分函數看看會發生什麼。試着有姆地區的改變它來計算出其它的值。

4、最後,做相反的操作。寫一個簡單的數學公式然後用同樣的方法調用函數來計算它。

        這個練習可能會讓你感到頭大,不過不要急慢慢來,就像把它當做一個小遊戲來對待。解決這種謎題是編程的樂趣之一。後面我們將給你更多這樣的小謎題。

學生遇到的常見問題:


爲什麼Python在是從“後面”開始打印出公式或者函數?
答:其實這並不是真的從“後面”開始打印,它實際上是“由裏而外”的操作。如果你把整個功能分解爲公式和函數調用你就可以看出它是怎麼工作的。試着理解我說的的“由裏而外”而不是”後面“這個詞。

我怎樣才能用raw_input() 函數來輸入自己的值?
答:還記得 int(raw_input())這個函數嗎?但是這個有個問題就是你不可以輸入浮點數值,所以你也可以嘗試一下使用float(raw_input())來代替它。

你說的”寫一個公式“是什麼意思?
答:嘗試將表達式 23 + 34 / 100 -1023轉換成使用相應的的函數來實現它。現在想出類似這樣的的數學公式並且結合變量這樣看起來就更像一個公式了。

發佈了23 篇原創文章 · 獲贊 7 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章