Python Lesson 5: 调试和测试《今天我又迟到了,控制这只”小怪兽“》

知识路线图

本节课通过写一个 闹钟 的例子,来讲解程序的设计,调试和测试!


闹钟逻辑

闹钟大家都用过,它会在我们设定的时间发出铃声
我们的闹钟每隔1s应该输出一下当前时间,并且小B还想把闹铃改成 女神的叫声

我们先把这个闹钟的具体的逻辑用语言描述出来:(注意尽量用精确的语言)


如何处理还不会的

先不用管有些功能如何实现,比如:发出女神的叫声,这个我们还不会做
现在只做一件事,就是把上面描述的所有事情,进行归类,如果两个名词或动词是同一个意思,就把用词也统一一下
我们把描述分成两个部分,第一部分是 名词和动词的具体意义解释
第二个部分,是用上面的词语组成的闹钟逻辑



现在再看这个闹钟的逻辑,已经简单和明了很多
第一句可以用循环
第二句可以想到list列表
第三句可以想到if判断
"发出女神的叫声" 这样的新课题,我们到时再代码中可以用 print("xxxx")来暂时替代

变量设计

将名词和动词进一步拆分和归类
我们把最大的几个动作归类成 action1 action2 action3
action1 : 显示当前时间
action2 : 新建闹钟setting
action3 : 判断当前时间并响铃


这样:程序逻辑就可以写成:
程序开始
action1
循环:每隔1s
-- action2
-- action3

流程设计

我们进一步把上面的语言转化成程序语言
所有的变量已经可以定义

action1 先写成 print("输出当前时间")
action2 setttings[setting_len] = setting 是一个list的赋值
action3 先用如果条件描述


程序进一步可以写成:
action2
while True:
-- print("输出当前时间")
-- action3
-- print("休息1s")

for循环

我们先来解决 "输出当前时间" 和 "休息1s"
python中有个time模块,可以用于时间处理,我们用来输出显示当前时间
time.sleep()这个方法可以让程序停下若干时间再执行
我们用这些知识把上述的程序完善一下!


现在开始啃最后一块硬骨头,action3
在action3 中我们知道一定要判断 当前的时间和 设置的时间,如果当前时间和设置时间相等,就发出女神叫声
因为settings闹钟设置是多个,是一个list列表,因此我们需要action3循环访问这个设置,然后用if做出判断

程序在脑中运行

现在在脑子中先回顾一下这个程序!
我们做了list的闹钟设置
我们做了一个循环,这个循环没有退出条件,会一直运行
每次循环重复做的事如下:
获得当前时间(因为程序一直运行,时间会不停的往后)
输出当前时间
循环判断设置的闹钟时间
休息1s,如果程序不休息,每1s就会执行很多次上面的逻辑


调试必杀技

程序已经完成,所有的变量在脑子里也有标准的值
现在开始用 print 和 exit 对这个程序进行调试
在我们需要检查的程序点写上print(你要调试的变量)exit
运行一下程序,然后对比这个输出和脑子里的变量是否一致,不一致就开始寻找原因


这就是一个最简单的调试方法!

如何测试




思考一下,闹钟如何测试?

动手练习

Sorry but the SQLBolt exercises require a more recent browser to run.
Please upgrade to the latest version of Internet Explorer, Chrome, or Firefox!

Otherwise, continue to the next lesson: SQL Lesson 2: Queries with constraints (Pt. 1)
Python小机器人嘴巴会打印东西,还可以拖动
练习 do it — 请完成如下任务
我不会做求助!求助!

继续努力 学下一节