# 习题 36: 设计和调试
现在你已经学会了“if 语句”,我将给你一些使用“for 循环”和“while 循环”的规则,一面你日后碰到麻烦。我还会教你一些调试的小技巧,以便你能发现自己程序的问题。最后,你将需要设计一个和上节类似的小游戏,不过内容略有更改。
### If 语句的规则
1. 每一个“if 语句”必须包含一个 else.
1. 如果这个 else 永远都不应该被执行到,因为它本身没有任何意义,那你必须在 else 语句后面使用一个叫做 die 的函数,让它打印出错误信息并且死给你看,这和上一节的习题类似,这样你可以找到很多的错误。
1. “if 语句”的嵌套不要超过 2 层,最好尽量保持只有 1 层。 这意味着如果你在 if 里边又有了一个 if,那你就需要把第二个 if 移到另一个函数里面。
1. 将“if 语句”当做段落来对待,其中的每一个 if,elif,else 组合就跟一个段落的句子组合一样。在这种组合的最前面和最后面留一个空行以作区分。
1. 你的布尔测试应该很简单,如果它们很复杂的话,你需要将它们的运算事先放到一个 变量里,并且为变量取一个好名字。
如果你遵循上面的规则,你就会写出比大部分程序员都好的代码来。回到上一个练习中,看看我有没有遵循这些规则,如果没有的话,就将其改正过来。
Warning
在日常编程中不要成为这些规则的奴隶。在训练中,你需要通过这些规则的应用来巩固你学到的知识,而在实际编程中这些规则有时其实很蠢。如果你觉得哪个规则很蠢,就别使用它。
### 循环的规则
1. 只有在循环永不停止时使用“while 循环”,这意味着你可能永远都用不到。这条只有 Python 中成立,其他的语言另当别论。
1. 其他类型的循环都使用“for 循环”,尤其是在循环的对象数量固定或者有限的情况下。
### 调试(debug)的小技巧
1. 不要使用 “debugger”。 Debugger 所作的相当于对病人的全身扫描。你并不会得到某方面的有用信息,而且你会发现它输出的信息态度,而且大部分没有用,或者只会让你更困惑。
1. 最好的调试程序的方法是使用 print 在各个你想要检查的关键环节将关键变量打印出来,从而检查哪里是否有错。
1. 让程序一部分一部分地运行起来。不要等一个很长的脚本写完后才去运行它。写一点,运行一点,再修改一点。
### 家庭作业
写一个和上节练习类似的游戏。同类的任何题材的游戏都可以,花一个星期让它尽可能有趣一些。作为加分习题,你可以尽量多使用列表、函数、以及模组(记得习题 13 吗?),而且尽量多弄一些新的 Python 代码让你的游戏跑起来。
不过有一点需要注意,你应该把游戏的设计先写出来。在你写代码之前,你应该设计出游戏的地图,创建出玩家会碰到的房间、怪物、以及陷阱等环节。
一旦搞定了地图,你就可以写代码了。如果你发现地图有问题,就调整一下地图,让代码和地图互相符合。
最后一个建议:每一个程序员在开始一个新的大项目时,都会被非理性的恐惧影响到。为了避免这种恐惧,他们会拖延时间,到最后一事无成。我有时会这样,每个人都会有这样的经历,避免这种情况的最好的方法是把自己要做的事情列出来,一次完成一样。
开始做吧。先做一个小一点的版本,扩充它让它变大,把自己要完成的事情一一列出来,然后逐个完成就可以了。
- 译者前言
- 前言:笨办法更简单
- 习题 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 游戏
- 下一步
- 老程序员的建议