青少年Python编程系列35:算法的概述以及解析算法、枚举算法

小微 科技青少年Python编程系列35:算法的概述以及解析算法、枚举算法已关闭评论82字数 2494阅读模式
摘要前面我们已经将Python语法部分的知识都讲完了。前面我们拿到一个程序题,我们都是按照自己的思路直接写代码,但是复杂的程序就不是那么容易直接写出来的了,需要分析整体的思路。从这节课...

前面咱们已经将Python语法部份的知识都讲完了。前面咱们拿到一个程序题,咱们都是依照自己的思路直接写代码,然而繁杂的程序就不是那么容易直接写出来的了,需要分析总体的思路。从这节课开始咱们要讲算法的相关知识了。算法是对解题办法的精确而完全的描写,即解决问题的办法以及步骤。算法不受语言的限制,不管是使用Python还是使用其他语言,算法都是同样的,算法分析出来之后,可以很轻松的得到程序的代码。咱们正式开始这节课的内容吧。

一、使用计算机解决问题的进程文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

咱们要使用计算机解决问题,一般分为三个阶段:文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

分析问题,树立模型文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

设计算法文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

实现算法以及检修结果文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

解决问题前,咱们要对问题进行分析以及描写,依据分析的情况构建数学模型。然后再肯定让计算机怎么样做。最后用计算机运行设计好的程序解决问题,并对结果进行检测、分析以及验证。算法就是“肯定让计算机怎么样做”这一步。文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

计算机的程序主要由下列两个部份组成:文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

指令部份:每一条指令指定计算机执行的一个操作,由一系列指令形成的序列,描写了解决问题的计算进程。文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

数据部份:计算时需要对原始数据,计算的中间结果以及最后结果。文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

依据计算机程序的这两个部份,咱们在设计程序时,也需要斟酌两方面的问题:文章源自微观生活(93wg.com)微观生活-https://93wg.com/22136.html

数据的存储:计算所需要对原始数据,需要存储在不同的变量中。

计算的进程:肯定解决问题的办法,把办法步骤化,再用计算机能执行的指令实现相应的步骤。

二、算法的特色以及表示办法

算法是解决问题的办法以及步骤,那就必需是计算机能够执行的,并且数据能够被人看到的,总结下来有下列几个特色:

有穷性:执行的步骤是有限的

肯定性:每一个步骤的含意必需是明确的

可行性:每一个步骤是可行的,并且能够在有限的时间内完成

有0个或多个输入:初始数据可以从外界输入,有可以含在算法中

有一个或多个输出:算法一定要有结果并且以一定方式输出

算法是与计算机语言无关的,那咱们就需要使用一定的办法将算法表示出来。算法的表示办法主要分为三种方式:自然语言、流程图、伪代码。其中自然语言以及流程图咱们需要现阶段需要掌握,伪代码是流程图的一种代码简化情势,有兴致的同窗可以课后自己钻研。

2.1 自然语言

自然语言是指人们日常生活中使用的语言,用自然语言描写的算法通俗易懂,然而缺少直观性以及简洁性,也容易发生歧义。

咱们看一下自然语言表示算法的方式。假定咱们要计算一个球的体积,使用自然语言描写如下:

输入球的半径r

计算球的体积V()

输出结果V

收场

通过以上的自然语言,咱们很容易就能够转换成Python的代码:

from math import pir = float(input())v = 4 / 3 * pi * r ** 3print(v)

这类描写方式与咱们平光阴常交换的语言没有任何区分,也很容易理解。然而如果需要解决的问题比较繁杂,就显得表述很冗杂。

2.2 流程图

流程图也称程序框图,它是算法的一种图形化的表示办法,与自然语言相比,它描写的算法形象、直观,更易理解。在学习流程图以前,咱们需要先认识一下流程图中的各种经常使用符号的含意:

下面咱们使用流程图描写一下1+2+3+...+n的算法表示:

三、解析算法

解析算法是算法中最为简单、最为基本的一种,解析的定义是:用数学公式描写客观事物间的数量关系。解析算法即用解析的办法找出表示问题的条件前提以及结果之间关系的数学表达式,并通过表达式计算来实现问题的求解。

解析算法的实现有下列步骤:

树立正确的数学模型

将数学表达式转换为Python表达式

比如下列问题可使用解析算法求解:

出租车的计价规则为:3公里之内起步价为10元;超越3公里,每一公里单价为2元。如果里程数为x,收费金额为y。咱们可以得到下列公式:

通过公式咱们可以很容易写出程序的代码:

x = int(input())if x <= 3: y = 10else: y = 10 + 2 * (x - 3)print(y)

在使用解析算法时咱们要注意下列问题:

数学表达式转换为Python时,可能会把运算符、运算顺序写错

要留心分支结构的解析算法

四、枚举算法

枚举算法也叫穷举算法,它的基本思想是把问题所有的解逐一列举出来,并对每一一个可能解进行判断,以肯定这个可能解是不是是问题的真正解。如果是就采取,不是就遗弃。

枚举算法的要点:

罗列的可能性即不重复也不遗漏

尽量缩小列举的规模,以提高效力

用循环语句在罗列的规模内罗列所有可能的解

用判断语句选择真实的解

咱们举个例子来看一下什么样的问题合适用枚举算法:

有一盒乒乓球,9个9个的数,最后余下7个;5个5个的数,最后余下2个;4个4个的数,最后余下1个。这盒乒乓球至少有多少个?

咱们依据思路,从最小的数开始一个一个的试,直到得到咱们想要的结果。那最小的数字是多少呢?咱们先要缩小列举的规模。9个9个数余数7,9 + 7 = 16;5个5个数余数2,5 + 2 = 7;4个4个数余数1,4 + 1 = 5。咱们可以看出,最小从16开始枚举最适合。

依据算法咱们可以很容易写出代码:

n = 16while True: if n % 9 == 7 and n % 5 == 2 and n % 4 == 1: print(n) break n += 1五、课后思考题

1、选择题

以下问题合适用解析算法求解的是()

A. 将13张纸牌按从小到大的顺序进行排列

B. 统计100之内各位数字之以及刚好为10的偶数的个数

C. 计算一辆车行驶100公里的油耗

D. 寻觅全年级身高最高的同窗

2、选择题

用50元钱兑换面值1元、5元、10元的纸币,为有多少种兑换方案。求解这个问题,最合适的算法是()

A. 排序算法 B. 递归算法 C. 枚举算法 D. 解析算法

3、编程题

寻觅100~999的所有水仙花数,并统计个数。

水仙花数是指各位数字的立方以及等于该数自身的三位数。例如:

六、上节课思考题谜底

1、A

2、参考代码:

import datetimetoday = datetime.datetime(2022, 12, 2)a = datetime.timedelta(142)birthday = today + aprint(birthday.month, &

以上就是微观生活(93wg.com)关于“青少年Python编程系列35:算法的概述以及解析算法、枚举算法”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/22136.html