# 练习36.设计和调试
现在你已经学会了`if 语句`,我将给你一些使用`for 循环`和`while 循环`的规则,以免你日后碰到麻烦。我还会教你一些调试的小技巧,以便你能发现自己程序的问题。最后,你将需要设计一个和上节类似的小游戏,不过内容略有更改。
## IF 语句的规则:
> 1. 每一个“if 语句”必须包含一个 else.
> 1. 如果这个`else`永远都不应该被执行到,因为它本身没有任何意义,那你必须在else语句后面使用一个叫做`die`的函数,让它打印出错误信息,这和上一节的习题类似,这样你可以找到很多的错误。
> 1. “if 语句”的嵌套不要超过 2 层,最好尽量保持只有 1 层。
> 1. 将“if 语句”当做段落来对待,其中的每一个`if-elif-else` 组合就跟一个段落的句子一样。在这种组合的最前面和最后面留一个空行以作区分。
> 1. 你的布尔测试应该很简单,如果它们很复杂的话,你需要将它们的运算事先放到一个 变量里,并且为变量取一个好名字。
如果你遵循以上规则,你就会写出比大部分程序员都好的代码来。回到上一节练习,看看我有没有遵循这些规则,如果没有的话,就将其改正过来。
> **Warning:**在日常编程中不要死板的遵守规则。在训练中,你需要通过这些规则的应用来巩固你学到的知识,而在实际编程中这些规则有时其实很蠢。如果你觉得哪个规则很蠢,就别使用它。
## 循环的规则
> 1. 只有在循环永不停止时使用“while循环”,这意味着你可能永远都用不到。这条只有 Python 中成立,其他的语言另当别论。
> 1. 其他类型的循环都使用“for循环”,尤其是在循环的对象数量固定或者有限的情况下。
## 调试的小技巧
> 1. 不要使用 “debugger”。`Debugger`所作的相当于对病人的全身扫描。你不会得到某方面的有用信息,而且你会发现它输出的信息大部分没有用,或者只会让你更困惑。
> 1. 最好的调试程序的方法是使用`print`,在各个你想要检查的关键环节将关键变量打印出来,从而检查哪里是否有错。
> 1. 让程序一部分一部分地运行起来。不要等一个很长的脚本写完后才去运行它。写一点,运行一点,修改一点。
## 家庭作业
写一个和上节类似的小游戏。任何题材的游戏都可以。尽量花一周的时间让这个游戏有趣一些,作为附加题,你可以尽量多的使用列表,函数和模块(还记得练习13吗?),而且,尽量弄一些新的Python代码让你的游戏运行起来。
在你开始编码之前,你应该先画一张地图出来,提前设计出玩家可能遇到的房间、怪物以及陷阱等。
当你画好了梯度,你就可以开始编码了。如果你发现地图有问题的话,修改一下,让代码和地图相匹配。
完成一个软件的最好方式是把它们拆解为像下面这样的小块:
> 1. 在纸上写下你完成这个软件所需要做的所有任务。这就是你的待办事项列表。
> 1. 先找到你列表中最容易的事情。
> 1. 在你的源代码中增加注释,作为你完成这项任务的指南。
> 1. 在这些注释下面,开始编码。
> 1. 然后立即运行你的代码,看它是否正常工作。
> 1. 循环的进行代码编写,测试运行,以及代码修正,直到代码正常运行。
> 1. 在你的列表中划掉刚完成的任务,然后再挑选下一个最容易完成的任务,重复进行以上步骤。
这套程序会帮助你在写代码的时候保持系统的、一致的风格。当你开始工作的时候,更新你的任务清单,增加你要做的,并删除已完成的。
- 序言
- 前言
- 简介
- 0:安装和准备
- 1:第一个程序
- 2:注释和“#”井号
- 3:数字和数学计算
- 4:变量和命名
- 5:更多的变量和打印
- 6:字符串和文本
- 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:学会说面向对象
- 42:对象、类、以及从属关系
- 43:基本的面向对象的分析和设计
- 44:继承Vs.包含
- 45:你来制作一个游戏
- 46:项目骨架
- 47:自动化测试
- 48:更复杂的用户输入
- 49:写代码语句
- 50:你的第一个网站
- 51:从浏览器获取输入
- 52:开始你的web游戏
- 来自老程序员的建议
- 下一步
- 附录A:命令行教程
- 简介
- 安装和准备
- 路径, 文件夹, 名录 (pwd)
- 如果你迷路了
- 创建一个路径 (mkdir)
- 改变当前路径 (cd)
- 列出当前路径 (ls)
- 删除路径 (rmdir)
- 目录切换(pushd, popd)
- 生成一个空文件(Touch, New-Item)
- 复制文件 (cp)
- 移动文件 (mv)
- 查看文件 (less, MORE)
- 输出文件 (cat)
- 删除文件 (rm)
- 退出命令行 (exit)
- 下一步