Exercise 21:函数可以返回一些东西

来源:互联网 发布:算法导论 中文 epub 编辑:程序博客网 时间:2024/04/30 02:19

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

       你已经使用过 = 字符来给一个命名的变量赋予一个数值或者字符串。现在我打算再向你展示一个引起你头脑风暴的内容,我将展示如何使用 = 字符和Python中一个新的关键字reaturn来一个来自函数的返回值赋给一个变量。这里可能有一件事情你需要特别注意,但是你还是馅饼下面的代码输入先:

def add(a ,b):print "ADDING %d + %d" % (a ,b)return a + bdef subtract(a ,b):print "SUBTRACTING %d - %d" % (a ,b)return a - bdef multiply(a ,b):print "MULTIPLYING %d * %d" % (a ,b)return a * bdef divide(a ,b):print "DIVIDING %d / %d" % (a ,b)return a / bprint "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 anywayprint "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.pyLet's do some math with just functions!ADDING 30 + 5SUBTRACTING 78 - 40MULTIPLYING 90 * 2DIVIDING 100 / 2Age: 35, Height: 38, Weight: 180, IQ: 50Here is a puzzle.DIVIDING 50 / 2MULTIPLYING 180 * 25SUBTRACTING 38 - 4500ADDING 35 + -4462That 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转换成使用相应的的函数来实现它。现在想出类似这样的的数学公式并且结合变量这样看起来就更像一个公式了。

0 0
原创粉丝点击