首页 > 编程语言 >Python之算法和程序

Python之算法和程序

时间:2024-08-14 12:53:12浏览次数:13  
标签:Python 代码 程序 算法 茶匙 平方根 描述

开始《Python入门经典以解决计算问题为导向的Python编程实践》第三章算法和程序开发的内容了。

算法和程序

算法

算法:计算或其他解决问题的操作需要遵循的一个过程或者一套规则。
算法有时被非正式地描述为:解决问题的诀窍

算法示例

例子1
从头开始来做1个巧克力蛋糕。准备食物的算法一般称为食谱,食谱有两个组成部分,对象(成分)和对这些对象的操作。如果原料是新鲜的,只要按照正确地步骤操作,就会有蛋糕吃。下面是食谱。
巧克力蛋糕食谱:
面粉1.5杯、糖1杯、盐1/2茶匙、小苏打1茶匙、可可2茶匙、醋1茶匙、油6茶匙、香草粉1茶匙、水1杯。
操作步骤:
1)将前5种成分筛在一起
2)加入其余的原料然后混合。
3)将它们倒人抹了油和面粉的9平方英寸模子。
4)用350度烤30分钟。
5)放凉,撒上您最喜爱的糖霜:
6)开始享用吧!

食谱里不只有食品,还包括数量的计算。

例子2:
用数学算法来计算一个数的平方根,即巴比伦平方根算法。这个古老的算法是由巴比伦人发明的,在公元1世纪时,由居住在亚历山大的希腊数学家海伦进行了描述。这种算法能以惊人的快速计算,准确地找到平方根。可以使用铅笔和纸张来手工计算,也可以在计算机上应用。该算法有时也称为牛顿算法,因为牛顿对此算法进行了概括。算法如下:
巴比伦平方根算法:
1)猜测数字的平方根。
2)用猜测的数字除原数。
3)计算步骤2)的商与猜测数的平均值。
4)对第3)步的平均值再作猜测。
5)如果新的猜测值与旧的猜测值不同,则回到第2)步,否则,停止。

巴比伦平方根算法和许多算法一样有个1个共同特点:细节是鬼(很难把握)。例如,在第5)步中的“不同”是什么意思?也许猜测的值差异在千分之几,我们已经感到满意了(如果用铅笔和纸张计算那已经快累死了)、那算不算“不同”呢?

算法和程序

算法是对如何解决问题的描述
程序是在特定类型的计算机上,用特定语言对算法的实现

算法和程序要区分开来,一般来说,一个算法可以有多种实现方式。
算法需要有足够的细节,以便能按照它实现全部预期的结果。
如例子1中“混合这些原料并进行烹饪”不够详细,如何使用勺子进行搅拌,对于缺乏经验的人来说需要更多的细节提示。
计算机算法也是如此,对于不同的人,对算法的详细程度也有不同的要求。

算法特征

  • 有限性(Finiteness):一个算法必须保证执行有限步之后结束。
  • 确切性(Definiteness): 一个算法的每一步骤必须有确切的定义。
  • 输入(Input):一个算法有零个或多个输入,以刻画运算对象的初始情况,所谓零个输入是指算法本身给定了初始条件。
  • 输出(Output):一个算法有一个或多个输出,以反映对输入数据加工后的结果。
  • 可行性(Effectiveness):一个算法是能行的,即它描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

算法的描述

算法在描述时必须指定其行为,是否需要用户输入什么样的数据,这些数据会做什么计算,最后会输出怎样的结果。

描述算法一般来说有几种方式:

  • 自然语言描述。自然语言就是用我们平时通俗的语言描述出来,在例1和例2中用文字描述的算法就是自然语言描述。(这种方法,要是遇到复杂的算法,就会变得很冗长)
  • 流程图描述。可以很好的表现出秩序执行过程中的三种基本结构组成—顺序结构、选择结构、循环结构等。需要注意的是,在使用流程图时,规定需要使用一些基本图形。(下图是一个案例,可以发现流程图能够将算法的思路一目了然地展示出来)

在这里插入图片描述

  • 伪代码 :伪代码是一种介于自然语言与编程语言之间的算法描述语言,便于理解,并不依赖于语言,它用来表示程序执行过程,而不一定能编译运行的代码。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言实现。(如下图)
    在这里插入图片描述

通用算法

大多数算法在一定程度上时通用的,例如面包食谱可以做不通口味的面包。排序算法可以对不同内容进行排序。

虽然针对某个具体问题而得出的解决方法也可以视为1个算法,但好的算法是能经历时间的考验,并适用于该问题的任何实例的算法。

请记住程序是算法的实现!为编写程序面设计算法,但算法不是程序。与他人共享算法,分析算法对保证算法的正确性和鲁棒性非常重要。

程序

程序存在于特定的计算机上所运行的特定语言中,算法是对问题解决方案的抽象化,程序就是实际解决方案

程序特征

1、可读性

程序是一个文档,用来描述作者如何解决问题。
程序的两个受众对象:计算机、读者。
要让其他人知道你在想什么,代码应该写得清楚。
程序需要可读取、可理解和对人有用。
难以阅读的代码过一段时间后,连作者本人都难以理解原来的意图,更难得到他人有效的帮助和建议。

那怎么提高可读性呢?
①命名习惯
变量的名字:反映他们的作用,包含一些潜在的信息,例如他们的类型。如sumInt可以知道这是存放和的变量,类型是int
操作的名字,应反映他们要做什么,一级可能的返回值类型。
②注释
注释是可读性的关键。
通常注释会出现在以下位置:

  • 说明代码的总体目标,通常作为总结,放置在代码顶部
  • 说明对象的目的,例如变量的目的。
  • 说明由系统提供的其他函数,或者自己编写的函数。包括需要的输入和输出函数
  • 说明“刁钻”或“不寻常”的情况。需要自己思考的地方,应该加以注释。

最后一条规则尤为重要。写代码时遇到了困难,或者难以编写的代码,都需要进行解决,否则将难以阅读。

③代码缩进
正确设置缩进,显示哪些代码是控制语句,对可读性至关重要。

2、鲁棒性

程序在面对不确定性时,需要具备鲁棒性。程序在面对意外的输人信息时能够恢复,例如如果程序要做除法,而除数为零(数学中除数不能为0),程序不应该意外终止。设计的程序应该要能够处理这种错误的输入
程序运行时可能会出现设计师没有预料到的情况,所以要对意料之外的情况进行恰当处理。

实现鲁棒性要求做到两点:

  • 程序设计者应该在设计程序时,考虑到错误发生的情况。特别是,设计者应知道希望得到怎样的输入,并设计1种方法来处理其他情况。
  • 设计者应进行测试,确定程序不仅满足最初的设计要求,而且不管对程序做出了哪些修改,都能够处理所有发生的情况(包括出错的情况)。

正确性

设计一个算法,然后用程序实现,程序应该是正确的。
证明正确性是计算机科学中的一个重要分支和研究领域。
现在,能做的就是尽量做最好的设计和测试

标签:Python,代码,程序,算法,茶匙,平方根,描述
From: https://blog.csdn.net/weixin_43325374/article/details/141184407

相关文章

  • springboot+vue网络相册平台【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字化生活已成为现代社会的常态,人们对于个人影像资料的存储、管理与分享需求日益增长。传统的相册存储方式受限于物理空间、携带不便且难以实现即时共享。网络相册平台应运而生,它利用云计算和大数据技术,为用......
  • Python之程序设计策略
    这是《Python入门经典以解决计算问题为导向的Python编程实践》106-109页的内容程序设计策略问题的实质是什么让问题真实化编程之前先思考。简化(分治)停下来思考放松一下:让自己休息一下坚持有助于解决问题,所以不要轻易放弃。同时解决多任务有时候容易分心。找不......
  • springboot+vue网络相册管理系统【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字图像已成为人们记录生活、分享情感的重要载体。网络相册作为数字图像存储与分享的主要平台之一,其重要性日益凸显。然而,现有的网络相册管理系统往往存在功能单一、用户体验不佳、数据安全与隐私保护不足等......
  • springboot+vue网络探店【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,特别是移动互联网的普及,人们的消费习惯发生了深刻变化。在线购物、餐饮预订、旅行规划等已成为日常生活的一部分。其中,网络探店作为一种新兴的社交电商模式,正逐渐受到广大消费者的青睐。网络探店不仅打破了传......
  • 【常见算法题】斐波那契数列(矩阵快速幂)
    一、题目描述大家都知道斐波那契数列,现在要求输入一个正整数n,请你输出斐波那契数列的第n项。斐波那契数列满足如下二、解题思路2.1普通处理方式使用递归直接计算intfib(intn){if(n==1||n==2)return1;returnfib(n-1)+fib(n-2);}这......
  • JSP花店业务管理系统的设计与实现4vcg5--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,商家,场合分类,花卉信息,商家回复,用户咨询开题报告内容一、项目背景与意义随着人们对生活品质追求的提升,花卉消费日益增长,传统花店管理模式已难......
  • JSP河南口腔医疗诊所线上服务系统a11h1--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,医生,科室,医生信息,挂号信息,药品信息,取消挂号开题报告内容一、课题名称河南口腔医疗诊所线上服务系统设计与实现二、研究背景与意义随着互......
  • JSP惠民农产品网站s4695--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着互联网的飞速发展,电子商务已成为推动农产品流通的重要力量。传统农产品销售模式存在信息不对称、流通环节多、成本高企等......
  • 基于flask+vue框架的的校园互助平台[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及和校园生活的日益丰富,大学生群体在学习、生活及社交方面面临着多样化的需求与挑战。在校园环境中,信息的有效传递与资源......
  • 基于flask+vue框架的高校师生二手用品交易系统app小程序端[开题+论文+程序]-计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在高等教育日益普及的今天,高校师生群体庞大,其日常学习与生活中产生的二手用品数量也随之激增。然而,传统的二手物品交易方式往往受限于时间......