# 习题 19: 函数和变量
函数这个概念也许承载了太多的信息量,不过别担心。只要坚持做这些练习,对照上个练习中的检查点检查一遍这次的联系,你最终会明白这些内容的。
有一个你可能没有注意到的细节,我们现在强调一下:函数里边的变量和脚本里边的变量之间是没有连接的。下面的这个练习可以让你对这一点有更多的思考:
<table class="highlighttable"><tbody><tr><td class="linenos"> <div class="linenodiv"> <pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24</pre> </div> </td> <td class="code"> <div class="highlight"> <pre>def cheese_and_crackers(cheese_count, boxes_of_crackers):
print "You have %d cheeses!" % cheese_count
print "You have %d boxes of crackers!" % boxes_of_crackers
print "Man that's enough for a party!"
print "Get a blanket.\n"
print "We can just give the function numbers directly:"
cheese_and_crackers(20, 30)
print "OR, we can use variables from our script:"
amount_of_cheese = 10
amount_of_crackers = 50
cheese_and_crackers(amount_of_cheese, amount_of_crackers)
print "We can even do math inside too:"
cheese_and_crackers(10 + 20, 5 + 6)
print "And we can combine the two, variables and math:"
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)
</pre> </div> </td> </tr></tbody></table>
通过这个练习,你看到我们给我们的函数 cheese_and_crackers 很多的参数,然后在函数里把它们打印出来。我们可以在函数里用变量名,我们可以在函数里做运算,我们甚至可以将变量和运算结合起来。
从一方面来说,函数的参数和我们的生成变量时用的 = 赋值符类似。事实上,如果一个物件你可以用 = 将其命名,你通常也可以将其作为参数传递给一个函数。
### 你应该看到的结果
你应该研究一下脚本的输出,和你想象的结果对比一下看有什么不同。
~~~
$ python ex19.py
We can just give the function numbers directly:
You have 20 cheeses!
You have 30 boxes of crackers!
Man that's enough for a party!
Get a blanket.
OR, we can use variables from our script:
You have 10 cheeses!
You have 50 boxes of crackers!
Man that's enough for a party!
Get a blanket.
We can even do math inside too:
You have 30 cheeses!
You have 11 boxes of crackers!
Man that's enough for a party!
Get a blanket.
And we can combine the two, variables and math:
You have 110 cheeses!
You have 1050 boxes of crackers!
Man that's enough for a party!
Get a blanket.
$
~~~
### 加分习题
1. 倒着将脚本读完,在每一行上面添加一行注解,说明这行的作用。
1. 从最后一行开始,倒着阅读每一行,读出所有的重要字符来。
1. 自己编至少一个函数出来,然后用10种方法运行这个函数。
- 译者前言
- 前言:笨办法更简单
- 习题 0: 准备工作
- 习题 1: 第一个程序
- 习题 2: 注释和井号
- 习题 3: 数字和数学计算
- 习题 4: 变量(variable)和命名
- 习题 5: 更多的变量和打印
- 习题 6: 字符串(string)和文本
- 习题 7: 更多打印
- 习题 8: 打印,打印
- 习题 9: 打印,打印,打印
- 习题 10: 那是什么?
- 习题 11: 提问
- 习题 12: 提示别人
- 习题 13: 参数、解包、变量
- 习题 14: 提示和传递
- 习题 15: 读取文件
- 习题 16: 读写文件
- 习题 17: 更多文件操作
- 习题 18: 命名、变量、代码、函数
- 习题 19: 函数和变量
- 习题 20: 函数和文件
- 习题 21: 函数可以返回东西
- 习题 22: 到现在你学到了哪些东西?
- 习题 23: 读代码
- 习题 24: 更多练习
- 习题 25: 更多更多的练习
- 习题 26: 恭喜你,现在可以考试了!
- 习题 27: 记住逻辑关系
- 习题 28: 布尔表达式练习
- 习题 29: 如果(if)
- 习题 30: Else 和 If
- 习题 31: 作出决定
- 习题 32: 循环和列表
- 习题 33: While 循环
- 习题 34: 访问列表的元素
- 习题 35: 分支和函数
- 习题 36: 设计和调试
- 习题 37: 复习各种符号
- 习题 38: 阅读代码
- 习题 39: 列表的操作
- 习题 40: 字典, 可爱的字典
- 习题 41: 来自 Percal 25 号行星的哥顿人(Gothons)
- 习题 42: 物以类聚
- 习题 43: 你来制作一个游戏
- 习题 44: 给你的游戏打分
- 习题 45: 对象、类、以及从属关系
- 习题 46: 一个项目骨架
- 习题 47: 自动化测试
- 习题 48: 更复杂的用户输入
- 习题 49: 创建句子
- 习题 50: 你的第一个网站
- 习题 51: 从浏览器中获取输入
- 习题 52: 创建你的 web 游戏
- 下一步
- 老程序员的建议