Python之程序设计策略

这是《Python入门经典以解决计算问题为导向的Python编程实践》106-109页的内容


坚持有助于解决问题,所以不要轻易放弃。
同时解决多任务有时候容易分心。
找不回被中断的时间段来工作。
时间不等于努力,改变策略或稍作休息再工作。

问题的实质是什么

思考:
是否与其他具有已知算法的问题类似?
有什么其他经验可以利用?

划分问题(计算类问题为例):

  • 需要哪些输人?
  • 如何测试输入是否满足要求?
  • 对于每一个输入,预期或需要的输出是什么?
  • 哪些输出测试是适当的呢?
  • 如前所述,你知不知道其他类似的问题?

让问题真实化

现在,你对问题有了一定认识,能够让问题“真实化”吗?这也就意味着,对你来说,可以根据你的理解来解决问题,并且看清楚什么是必需的。
例如,要编写程序来玩纸牌游戏,现在就该拿出一副扑克牌进行尝试了。
对于其他问题来说,可以做的事情包括:

  • 使用笔和纸张,解决简单的例子。
  • 使用的对象(如打牌或玩具车),解决一些例子
  • 画图表。
  • 创建交互图
  • 做一些事情!
    你能想象用某种方式,使问题更加真实吗?如果可以实现,就能使你更好地了解问题。通过以某种方式真实化,可以深入问题,更好地掌握要解决的问题。这项活动稍后还可以帮助你解决问题。

编程之前先思考。

得到大概的算法步骤再动手编程,不然可能会得到像“粪球”一样的代码

简化(分治)

把你的问题看做由许多块构成的拼图,每一个小问题都需要解决。
逐个解决较小的问题,然后将这些小问题组装起来,得到整体的解决方案,这种做法比一下子解决整个问题要容易得多。这一策略的另一个名称起源于军事学,叫做分治

要进行正确的分治,必须做到以下几点:

  • 把问题分解为子问题。(最难)
  • 解决每个子问题。
  • 将各个子问题的解决方案整合起来,得到整个问题的解决方案。

分治的例子:完全数例子

对问题进行分治是假设已有子问题的解决方法,在此基础上设计整体的解决方案。例如,编写程序来控制机器人进行移动。可能以“转向正确的方向”开始,你也许还不知道如何编程i机器人这样做、但可以简单地假设稍后能解决这个问题,因此现在就能集中精力处理接下来的任务。当回头处理这个问题时,只需要考虑“转向正确的方向",而不是整个问题。**采用这种方法,可以更容易写出程序的框架。一旦程序框架建立起来,就可以回头再慢慢填充子问题。**想象将要完成什么任务,虽然现在无法立即解决这些问题,但能确定任务在代码中的位置,也可以通过注释标明该任务要完成的工作。通过解决想象中可以完成的任务,可以解决个问题。采取这样的方式创建出的程序是有“生命”的。将问题分解,然后逐个解决。采用这种方式,可以一层层地解决问题,一点点地添加更多“洋葱",直到达到要求为止

停下来思考

在过程中,需要停下来看看你做了些什么,评估当前的工作。
如果方法不太对,就果断丢弃不好的部分,重新修改。

放松一下:让自己休息一下

在一个问题卡住了的时候,暂时放下问题,休息一下,等头脑清醒了再回去分析问题,也许会豁然开朗。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值