回到主页

期末知识梳理

——必修算法基础

Python基础算法

一、算法概念

1.广义的讲,“算法”指的是解决问题或完成任务的一系列步骤。在计算机科学领域内,“算法”指的是计算机解决问题的步骤,是为了解决问题而需要让计算机有序执行的,无歧义的,有限步骤的集合。

2.算法的特征:

(1)有穷性:一个算法的处理步骤必须是有限的。

(2)可行性:每一步的操作与要求都是可行的,并且能够在有限时间内完成。

(3)确定性:每一步的执行描述必须是明确的

(4)0个或多个输入

(5)1个或多个输出

3.描述算法的方法:1-自然语言描述;2-流程图描述;3-伪代码描述;4-用程序设计语言描述。

4.编程解决问题的一般过程:1-抽象与建模;2-设计算法;3-编写程序;4-调试运行程序

二、流程图基本图形及功能

broken image

三、解析算法和枚举算法

#鸡兔同笼问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

1.解析算法:用数学公式或解题步骤计算结果

head,foot = eval(input("请输入头和足的数量,格式是:头,足"))

rabbit = (foot-head*2)/2

chick = head-rabbit

print("兔子有{}只,鸡有{}只".format(rabbit,chick)

2.枚举算法:按一定的顺序一一列举所有可能解

head,foot = eval(input("请输入头和足的数量,格式是:头,足"))

for rabbit in range(foot//4):

if rabbit*4+(head-rabbit)*2==foot:

print("兔子有{}只,鸡有{}只".format(rabbit,head-rabbit))

四、程序组成分析

1.注释:在代码中添加注释,可以对代码功能进行解释说明。注释在代码运行过程中不参与执行。Python中有两种注释方式:1.用’#’开头的单行注释;2.用三引号开头和结尾的多行注释,这种注释本质是创建了一个多行字符串。

2.变量和赋值

程序中有些数据是未知或是可变的,为了零活的使用这些数据,可以使用变量进行存储。示例第二行就创建了一个名为TempStr的变量,用于存储外部输入值。

(1)变量命名时需要遵循一些基本规则:

1-变量名只能由数字,字母和下划线(英文)三种字符构成

2-变量名不能用数字开头

3-变量名区分大小写

4-变量名不能和保留字相同

这里特别需要指出两点:

1-Python变量名支持中文字符,但考虑兼容性一般不建议使用;

2-Python共有35个保留字(见下图),这些不可以被作为变量名使用。

broken image

(2)赋值语句:变量名=值;变量名=表达式;a,b=b,a

(3)赋值运算符:”=”、”+=”、”-=”、”*=”、”/=”、”%=”等

3.数据类型

Python共有四种数据类型:整型、浮点型(实型)、字符串型和布尔型

(1)整数类型(int):Python不带小数点的值都是整数类型。例:10;

除此之外整数类型可以用多种进制表示,二进制前缀0b或0B(10=0b1010);八进制0o或0O(10=0o12);十六进制前缀0x或0X(10=0xA)

(2)浮点类型(float):带小数点的数值类型。例10.0、1.0e1

(3)字符串型(str):字符串可以用单引号、双引号、三引号表示。

(4)布尔类型(Bool):只有True和False两个值。

4.运算符和优先级

broken image

5.表达式:变量、常量、运算符按一定规则组合构成的式子

(1)表达式中存在多种运算符时,按优先级运算,优先级相同则从左到右

(2)Python中认为”0”(数值0)、””(空字符串)和False等价,非零数和非空字符串和True等价

(3)字符串比较时,比较的是两者的ASCII码值,从左到右逐位比较。例”123”<”23”=True

(4)数值类型的运算结果保留更精确的值。例1+2.0=3.0

6.常用内建函数

(1)input([prompt]):获取输入,函数的参数为输出提示字符,返回值为字符串类型

(2)int(object[,base]):将数值字符串转为整数类型,base声明进制类型,默认base=10。返回值为十进制整数类型。例int(“FF”,16)=255

(3)float(object):将数值字符串转为浮点数类型

(4)abs(x):返回x的绝对值

(5)len(seq):返回列表或字符串的长度,整数类型

(6)str(x):将x转为字符串类型

(7)chr(x):x为ASCII码值,返回x对应的字符

(8)str(x):x为字符串,返回x对应的ACSII码值,整数类型

(9)round(x[,n]):对x四舍五入,保留n位小数。round(6,-1)=10

(10)max(),min():返回列表中的最大值和最小值

(11)print():输出内容到控制台。当参数只有一个,会自动将非字符类型转为字符类型后输出。当参数有多个,可以用逗号连接后转换位字符串输出。例:print(10);print(10,”全”,10,”美”)

(12)eval():删除字符两边的双引号。

7.格式化字符串

(1)”%”

例1:print(‘转换后的温度是:%d℃’%22.5)

运行结果:转换后的温度是:22℃

注:%d为整数,%f为实数,%s为字符串

例2:print("转换后的温度%.2f℃,湿度%.2f"%(22.345,5.677))

运行结果:转换后的温度22.34℃,湿度5.67f

注:”.2”表示小数点后保留两位

例3:print(“%40s”%”今天的温度是十摄氏度”)

运行结果:' 今天的温度是十摄氏度'

注:”40”表示占位宽度为40且默认右对齐

(2)format方法

broken image

 

broken image

例1:print(“圆周率可以近似为:{}".format(3.1415926))

运行结果:”圆周率可以近似为:3.1415926”

注:format方法以{}为占位符

例2:print("转换后温度{:.2f}℃,湿度{:.2f}".format(23.456,5.678))

运行结果:"转换后的温度23.45℃,湿度5.67"

例3:print("转换后温度{1:5.2f}℃,湿度{0:-^20.2f}".format(23.456,,5.678))

运行结果:'转换后的温度 5.68℃,湿度-------23.46--------'

注:冒号前为参数序号,故两个值的替换位置变化;根据对应规则”-”为填充字符,”^”为居中对齐,”20”为替换槽宽度。

8.字符串类型(str)

(1)字符串一旦创建就无法更改

(2)字符串的索引方式有正负两种

(3)字符串切片:字符串名[start:stop:step],结果含头不含尾,step可以为负。

(4)常用字符串操作方法

s.upper() #全部小写转大写

s.lower() #全部大写转小写

s.split(sep) #根据sep分割字符串s

s.find(y) #返回y第一次出现在s中的索引值,若未出现则为-1

s.replace(old,new[,max]) #将old用new替换,max为最大替换次数。

s.count(sub) #统计sub在s中出现的次数

s.join(iter) #用s对iter做分隔符

注意:由于字符串是不可变对象,所以以上方法不会改变s的值,只是将改变后的结果进行返回。

 

9.列表类型(list)

(1)列表类型为可变对象,列表中的每个元素数据类型可以相同也可以不同,甚至可以嵌套列表类型;

(2)列表的访问和切片和字符串基本相同;

(3)列表的常用操作方法:

l.append(x) #在列表的最后添加一个元素x

l.clear() #清空列表s中的所有元素

l.insert(i,x) #在s的第i位置增加元素x

l.pop(i) #将s第i 位置的元素删除

l.remove(x) #将列表中第一次出现的x字符删除

l.sort(reverse) #对序列排序 reverse=True(降序)/False(升序,默认)

l.reverse() #将s的内容反转

注意:以上方法会直接改变列表l的值

 

10.字典类型(dic)

例:d = {"姓名":"小明","年龄":13,"性别":"男"}

(1)字典类型的特点是用花括号将各种元素放在一起,字典的每个值都由两部分组成:"键":"值",整个合起来叫“键值对”。

(2)字典的值只能通过“键”索引,因为字典内部元素是无序排列的,没有索引值的概念。

(3)字典添加值、修改值、删除值:

修改:d["性别"] = "女"

添加:d["国籍"] = "中国"

删除:del d["性别"]

(4)可以用d.key() 或 d.value() 单独输出字典的键和值

 

11.分支结构

if <判断条件>:

语句块1

elif <判断条件>:

语句块2

else:

语句块3

(1)Python用代码缩进表示代码间的包含关系,同一级别代码缩进相同

(2)当<判断条件>为True才执行对应分支语句块

(3)elif 和 else 并非必须,且当前面有条件(if)满足后,后面的判断(elif)会直接跳过,不执行。

#例:

if 10>5:

print(10)

elif 20>10:

print(20)

#运行结果:10

 

12.循环语句

for <循环变量> in <循环对象>:

语句块

(1)for循环是有限次循环,<循环对象>可以是字符串、列表,也可以是range()函数。

(2)range(start,stop,step)格式和字符串或列表切片类似。

while <判断语句>:

语句块

(3)while的判断语句不当,可能会造成“无限循环”。当<判断语句>结果为Ture运行循环,为False退出循环。

(4)break:结束并退出当前层循环

(5)continue:结束当前次循环,进入下一次循环

 

13.自定义函数

def <函数名>(<参数1>,<参数2>...):

语句块

[return [返回值]]

(1)函数命名规则同变量命名规则

(2)函数参数可以设置默认值:<参数3>=<默认值>

(3)return 语句用于返还函数处理结果,并且结束函数运行

(4)函数内部变量为局部变量,当需要使用全局变量时需要用global声明

 

14.第三方库的使用

(1)import <库名>

(2)import <库名> as <重命名>

(3)from <库名> import <函数名>

(4)from <库名> import *

 

注:常用的math和random模块函数见下页图表。

broken image

random.randint(a,b)

返回一个在[a,b]范围内的随机整数,左闭右闭,a和b都能取值。

 

random.random() —— 生成随机浮点数

生成小数:>=0 且 <1

此函数用于生成一个0到1之间的随机浮点数,其中包括0但不包括1。