笨办法学Python(二十一)

习题 21: 函数可以返回东西

你已经学过使用 = 给变量命名,以及将变量定义为某个数字或者字符串。接下来我们将让你见证更多奇迹。我们要演示给你的是如何使用 = 以及一个新的 Python 词汇return 来将变量设置为“一个函数的值”。有一点你需要及其注意,不过我们暂且不讲,先撰写下面的脚本吧:

 1 def add(a, b):
 2     print "ADDING %d + %d" % (a, b)
 3     return a + b
 4
 5 def subtract(a, b):
 6     print "SUBTRACTING %d - %d" % (a, b)
 7     return a - b
 8
 9 def multiply(a, b):
10     print "MULTIPLYING %d * %d" % (a, b)
11     return a * b
12
13 def divide(a, b):
14     print "DIVIDING %d / %d" % (a, b)
15     return a / b
16
17
18 print "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)
24
25 print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
26
27
28 # A puzzle for the extra credit, type it in anyway.
29 print "Here is a puzzle."
30
31 what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
32
33 print "That becomes: ", what, "Can you do it by hand?"

现在我们创建了我们自己的加减乘除数学函数: addsubtractmultiply, 以及 divide。重要的是函数的最后一行,例如 add 的最后一行是 return a + b,它实现的功能是这样的:

  1. 我们调用函数时使用了两个参数: a 和 b 。
  2. 我们打印出这个函数的功能,这里就是计算加法(adding)
  3. 接下来我们告诉 Python 让它做某个回传的动作:我们将 a + b 的值返回(return)。或者你可以这么说:“我将 a 和 b 加起来,再把结果返回。”
  4. Python 将两个数字相加,然后当函数结束的时候,它就可以将 a + b 的结果赋予一个变量。

和本书里的很多其他东西一样,你要慢慢消化这些内容,一步一步执行下去,追踪一下究竟发生了什么。为了帮助你理解,本节的加分习题将让你解决一个迷题,并且让你学到点比较酷的东西。

你应该看到的结果

加分习题

  1. 如果你不是很确定 return 的功能,试着自己写几个函数出来,让它们返回一些值。你可以将任何可以放在 = 右边的东西作为一个函数的返回值。
  2. 这个脚本的结尾是一个迷题。我将一个函数的返回值用作了另外一个函数的参数。我将它们链接到了一起,就跟写数学等式一样。这样可能有些难读,不过运行一下你就知道结果了。接下来,你需要试试看能不能用正常的方法实现和这个表达式一样的功能。
  3. 一旦你解决了这个迷题,试着修改一下函数里的某些部分,然后看会有什么样的结果。你可以有目的地修改它,让它输出另外一个值。
  4. 最后,颠倒过来做一次。写一个简单的等式,使用一样的函数来计算它。

这个习题可能会让你有些头大,不过还是慢慢来,把它当做一个游戏,解决这样的迷题正是编程的乐趣之一。后面你还会看到类似的小谜题。

习题练习

1.

时间: 2024-08-19 06:25:17

笨办法学Python(二十一)的相关文章

笨办法学Python(十一)

习题 11: 提问 我已经出过很多打印相关的练习,让你习惯写简单的东西,但简单的东西都有点无聊,现在该跟上脚步了.我们现在要做的是把数据读到你的程序里边去.这可能对你有点难度,你可能一下子不明白,不过你需要相信我,无论如何把习题做了再说.只要做几个练习你就明白了. 一般软件做的事情主要就是下面几条: 1. 接受人的输入. 2. 改变输入. 3. 打印出改变了的输入. 到目前为止你只做了打印,但还不会接受或者修改人的输入.你也许还不知道"输入(input)"是什么意思.所以闲话少说,我们

笨办法学Python 练习13和14

原题: 1 from sys import argv 2 3 script, first, second, third = argv 4 5 print "The script is called:", script 6 print "Your first variable is:", first 7 print "Your second variable is:", second 8 print "Your third variabl

笨办法学 Python (Learn Python The Hard Way)

最近在看:笨办法学 Python (Learn Python The Hard Way) Contents: 译者前言 前言:笨办法更简单 习题 0: 准备工作 习题 1: 第一个程序 习题 2: 注释和井号 习题 3: 数字和数学计算 习题 4: 变量(variable)和命名 习题 5: 更多的变量和打印 习题 6: 字符串(string)和文本 习题 7: 更多打印 习题 8: 打印,打印 习题 9: 打印,打印,打印 习题 10: 那是什么? 习题 11: 提问 习题 12: 提示别人

笨办法学Python(二十九)

习题 29: 如果(if) 下面是你要写的作业,这段向你介绍了"if语句".把这段输入进去,让它能正确执行.然后我们看看你是否有所收获. 1 people = 20 2 cats = 30 3 dogs = 15 4 5 6 if people < cats: 7 print "Too many cats! The world is doomed!" 8 9 if people > cats: 10 print "Not many cats!

笨办法学Python(二十五)

习题 25: 更多更多的练习 我们将做一些关于函数和变量的练习,以确认你真正掌握了这些知识.这节练习对你来说可以说是一本道:写程序,逐行研究,弄懂它. 不过这节练习还是有些不同,你不需要运行它,取而代之,你需要将它导入到 python 里通过自己执行函数的方式运行. 首先以正常的方式 python ex25.py 运行,找出里边的错误,并把它们都改正过来.然后你需要接着下面的答案章节完成这节练习. 你应该看到的结果 这节练习我们将在你之前用来做算术的 python 编译器里,用交互的方式和你的.

笨办法学Python(二十八)

习题 28: 布尔表达式练习 上一节你学到的逻辑组合的正式名称是"布尔逻辑表达式(boolean logic expression)".在编程中,布尔逻辑可以说是无处不在.它们是计算机运算的基础和重要组成部分,掌握它们就跟学音乐掌握音阶一样重要. 在这节练习中,你将在 python 里使用到上节学到的逻辑表达式.先为下面的每一个逻辑问题写出你认为的答案,每一题的答案要么为 True 要么为 False.写完以后,你需要将python 运行起来,把这些逻辑语句输入进去,确认你写的答案是否

笨办法学Python(二十七)

习题 27: 记住逻辑关系 到此为止你已经学会了读写文件,命令行处理,以及很多 Python 数学运算功能.今天,你将要开始学习逻辑了.你要学习的不是研究院里的高深逻辑理论,只是程序员每天都用到的让程序跑起来的基础逻辑知识. 学习逻辑之前你需要先记住一些东西.这个练习我要求你一个星期完成,不要擅自修改日程,就算你烦得不得了,也要坚持下去.这个练习会让你背下来一系列的逻辑表格,这会让你更容易地完成后面的习题. 需要事先警告你的是:这件事情一开始一点乐趣都没有,你会一开始就觉得它很无聊乏味,但它的目

笨办法学Python(二十六)

习题 26: 恭喜你,现在可以考试了! 你已经差不多完成这本书的前半部分了,不过后半部分才是更有趣的.你将学到逻辑,并通过条件判断实现有用的功能. 在你继续学习之前,你有一道试题要做.这道试题很难,因为它需要你修正别人写的代码.当你成为程序员以后,你将需要经常面对别的程序员的代码,也许还有他们的傲慢态度,他们会经常说自己的代码是完美的. 这样的程序员是自以为是不在乎别人的蠢货.优秀的科学家会对他们自己的工作持怀疑态度,同样,优秀的程序员也会认为自己的代码总有出错的可能,他们会先假设是自己的代码有

笨办法学Python(三十二)

习题 32: 循环和列表 现在你应该有能力写更有趣的程序出来了.如果你能一直跟得上,你应该已经看出将"if 语句"和"布尔表达式"结合起来可以让程序作出一些智能化的事情. 然而,我们的程序还需要能很快地完成重复的事情.这节习题中我们将使用 for-loop (for 循环)来创建和打印出各种各样的列表.在做的过程中,你会逐渐明白它们是怎么回事.现在我不会告诉你,你需要自己找到答案. 在你开始使用 for 循环之前,你需要在某个位置存放循环的结果.最好的方法是使用列表