首页 > 编程语言 >Python之程序设计策略

Python之程序设计策略

时间:2024-08-14 12:52:36浏览次数:12  
标签:编程 策略 Python 可以 分治 问题 思考 解决 程序设计

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

程序设计策略


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

问题的实质是什么

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

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

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

让问题真实化

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

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

编程之前先思考。

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

简化(分治)

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

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

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

分治的例子:完全数例子

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

停下来思考

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

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

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

标签:编程,策略,Python,可以,分治,问题,思考,解决,程序设计
From: https://blog.csdn.net/weixin_43325374/article/details/141186425

相关文章

  • 【Python】MacOS安装ChromeDriver
    一、下载对应版本的chromedriver 二、解压后放到目录:/usr/local/bin目录 三、解决Mac无法验证Chromedriver开发者身份问题xattr-dcom.apple.quarantinechromedriver 四、验证安装结果#!/usr/bin/python3fromselenium.webdriverimportChromewebdriver=......
  • python 画雷达回波PPI图
    雷达回波的代码挺简单的,关键是运行环境的问题,之前用python3.8,根本画不出来图,尤其是地图类的,即使安装了cartopy也不行。后来在一番折腾之后,尝试用了python3.9,一切都变得简单了起来,首先弄个虚拟环境python3.9,然后按装一系列的包:cartopy,cinrad等包具体详情参考:PyCINRAD保姆级教程......
  • 音频去噪:使用Python和FFT增强音质
    根据定义,声音去噪是从音频信号中去除不需要的噪音或干扰,以提高其质量和清晰度的过程。这涉及识别和隔离噪音成分(通常以不规则或高频元素为特征),并将其过滤掉,同时保持原始声音的完整性。声音去噪目标是改善聆听体验以及音频分析和处理的准确性。过滤掉噪音对于高保真音频来说......
  • Python面向对象设计的一些重要概念
     对象:对象由属性和方法组成。属性不过是属于对象的变量,而方法是存储在属性中的函数。相比于其他函数,(关联的)方法有一个不同之处,那就是它总是将其所属的对象作为第一个参数,而这个参数通常被命名为self。类:类表示一组(或一类)对象,而每个对象都属于特定的类。类的主要任务是定......
  • 提升企业竞争力:最大化APS智能排产效果的策略
    APS构建排程模型的基础数据准确性数据收集与清洗根据APS排程建模的需求建立全面的数据收集机制,确保所有与生产相关的数据,如物料库存、设备状态、人力资源、生产订单信息、销售订单、采购订单等,都能被准确、及时地录入系统;并依据需求建立同步的时间和数据更新、增加、删除的数据......
  • 【Python】流程控制语句(一)(初学者)
    文章目录前言一.程序三大执行流程二.代码块的艺术--缩进三.选择执行(条件判断语句,if)3.1单分支结构(if)3.2双分支结构(if..else)3.3多分支结构(if...elif...else)前言`前文学习了Python的格式化输出,本文来学习一下,Python中的流程控制语句之缩进与条件判断一.程......
  • 深入理解微服务中的负载均衡算法与配置策略
    上一期我们详细探讨了微服务之间的通信,特别是介绍了如何集成Ribbon。简单来说,通过使用resttemplate类进行RPC调用时,我们内部增加了一个拦截器来实现负载均衡。然而,我们并未深入讨论具体的负载均衡算法。因此,本章节的重点是介绍如何从多个副本中选择合适的节点进行服务调用。这将帮......
  • 使用python 实现自动发送邮件功能,并上传到宝塔
    defsend_qq_mail(subject,content,receiver):sender="你的邮箱"smtpserver="smtp.qq.com"#使用的是qq邮箱port=465#端口号user='你的邮箱'password='授权码'#请确保这是正确的密码或授权码《具体去查询qq邮箱授权码》msg=MI......
  • Python搭建一个下载服务器
    一、Python2搭建一个下载服务器 1、查看是python2环境 2、执行 python-mSimpleHTTPServer 3、阿里云放开8000安全组4、直接查看路径   二、Python3搭建一个下载服务器cd/homepython3-mhttp.server 下载页面 ......
  • NPM依赖管理:精通版本范围锁定策略
    引言在JavaScript项目开发中,依赖包的精确控制对于维护项目稳定性至关重要。NPM(NodePackageManager)作为Node.js的包管理器,提供了一套灵活的版本控制机制,允许开发者通过版本范围锁定策略来管理依赖包的更新。本文将详细介绍如何使用NPM设置包的版本范围锁定策略,帮助开发者......