这是《Python入门经典以解决计算问题为导向的Python编程实践》106-109页的内容
程序设计策略
坚持有助于解决问题,所以不要轻易放弃。
同时解决多任务有时候容易分心。
找不回被中断的时间段来工作。
时间不等于努力,改变策略或稍作休息再工作。
问题的实质是什么
思考:
是否与其他具有已知算法的问题类似?
有什么其他经验可以利用?
划分问题(计算类问题为例):
- 需要哪些输人?
- 如何测试输入是否满足要求?
- 对于每一个输入,预期或需要的输出是什么?
- 哪些输出测试是适当的呢?
- 如前所述,你知不知道其他类似的问题?
让问题真实化
现在,你对问题有了一定认识,能够让问题“真实化”吗?这也就意味着,对你来说,可以根据你的理解来解决问题,并且看清楚什么是必需的。
例如,要编写程序来玩纸牌游戏,现在就该拿出一副扑克牌进行尝试了。
对于其他问题来说,可以做的事情包括:
- 使用笔和纸张,解决简单的例子。
- 使用的对象(如打牌或玩具车),解决一些例子
- 画图表。
- 创建交互图
- 做一些事情!
你能想象用某种方式,使问题更加真实吗?如果可以实现,就能使你更好地了解问题。通过以某种方式真实化,可以深入问题,更好地掌握要解决的问题。这项活动稍后还可以帮助你解决问题。
编程之前先思考。
得到大概的算法步骤再动手编程,不然可能会得到像“粪球”一样的代码
简化(分治)
把你的问题看做由许多块构成的拼图,每一个小问题都需要解决。
逐个解决较小的问题,然后将这些小问题组装起来,得到整体的解决方案,这种做法比一下子解决整个问题要容易得多。这一策略的另一个名称起源于军事学,叫做分治。
要进行正确的分治,必须做到以下几点:
- 把问题分解为子问题。(最难)
- 解决每个子问题。
- 将各个子问题的解决方案整合起来,得到整个问题的解决方案。
分治的例子:完全数例子
对问题进行分治是假设已有子问题的解决方法,在此基础上设计整体的解决方案。例如,编写程序来控制机器人进行移动。可能以“转向正确的方向”开始,你也许还不知道如何编程i机器人这样做、但可以简单地假设稍后能解决这个问题,因此现在就能集中精力处理接下来的任务。当回头处理这个问题时,只需要考虑“转向正确的方向",而不是整个问题。**采用这种方法,可以更容易写出程序的框架。一旦程序框架建立起来,就可以回头再慢慢填充子问题。**想象将要完成什么任务,虽然现在无法立即解决这些问题,但能确定任务在代码中的位置,也可以通过注释标明该任务要完成的工作。通过解决想象中可以完成的任务,可以解决个问题。采取这样的方式创建出的程序是有“生命”的。将问题分解,然后逐个解决。采用这种方式,可以一层层地解决问题,一点点地添加更多“洋葱",直到达到要求为止
停下来思考
在过程中,需要停下来看看你做了些什么,评估当前的工作。
如果方法不太对,就果断丢弃不好的部分,重新修改。
放松一下:让自己休息一下
在一个问题卡住了的时候,暂时放下问题,休息一下,等头脑清醒了再回去分析问题,也许会豁然开朗。
标签:编程,策略,Python,可以,分治,问题,思考,解决,程序设计 From: https://blog.csdn.net/weixin_43325374/article/details/141186425