(共37张PPT)
算法必须能在有限个步骤之后终止
课堂小结
算法的概念及描述
算法就是解决一个特征问题而采取的确定的,有限的步骤
算法概念
算法特征
算法描述方法
算法效率
对于同一个问题,不同算法解决问题的效率不同
自然语言
流程图
伪代码
采用一种类似程序设计语言的代码来描述算法
用图形表示算法的一种常用工具
用日常所用语言描述算法的步骤
一个算法通常有0个或多个输入
一个算法可以有一个或多个输出
算法中的每一步都是可以执行的
算法的每个步骤都具有确定的含义
有输入
有输出
有穷性
可行性
确定性
练习提升
1、小明早上从起床到出门上学需要洗漱(5 min)、烧水(10 min)、准备早餐(10 min )、吃早餐(15 min)和听新闻(10 min),试帮他统筹安排各项事务,设计一个合理的算法步骤。
方案一:洗漱→烧水(准备早餐)→吃早餐(听新闻)
方案二:洗漱→烧水(准备早餐、听新闻)→吃早餐
练习提升
2.某地有两种不同类型的出租车,其计费标准分别为:
●甲车3km起步,价格为10元,3km以上(含3km)为2元/km;·
●乙车3km起步,价格为8元,3km以上(含3km)为2.2元/km。
设计算法,在不同里程时给出最优资费的用车选择。选用一种算法描述方法对该算法进行描述。
用流程图表示该问题的求解方法如右图:
开始
P1 甲车的起步价(即3km以下的费用)
P2 乙车的起步价
x1 甲车起步价以后每千米的乘车费用
x2 乙车起步价以后每千米的乘车费用
n 计划行驶的里程数
n≥3
p1 p1+x1*(n-3+1)
p2 p2+x2*(n-3+1)
p1
p1输出:乘甲车省钱
输出:乘乙车省钱
输出:两车费用相同
结束
练习提升
3.欧几里得算法又名辗转相除法,其算法可用图2.2.5所示的流程图描述(“%”为取模运算符,可返回除法的余数),认真阅读流程图,分析该算法实现的功能。
算法实现的功能:
求两个正整数m和n的最大公约数。
授 课:王粉周
2.3
序
程
设
计
基
本
知
识
学习目标
3
掌握Python语言的基本数据类型,理解常量、变量,能正确书写表达式。
体验用Python编程的基本过程,提高用计算机解决问题的能力。
能读懂简单的程序代码,根据具体问题改写和完善代码,感受计算机编程的魅力。
2
1
学习重难点
体验用Python编程的基本过程,提高用计算机解决问题的能力。
难点
重点
掌握Python语言的基本数据类型,理解常量、变量,能正确书写表达式。
01
情景导入
Context Import
1.如果要绘制如图2.3.1所示的“红绿”信号灯,应该如何编写程序代码?分析其中两盏信号灯的位置坐标有何关系,描述出对应的算法。
编程绘制交通信号灯
我们可以编写Python程序绘制各种图像。例如,绘制一个圆形红色信号等的程序代码如下:
2.如果要绘制如图2.3.2所示的“红黄绿”信号灯,又应该如何修改程序代码?分析其中哪些语句是可以重复使用的。
import turtle
light=turtle.Turtle()
light.hideturtle()
light.color(“red”,“red”)
light.begin_fill()
light.circle(20)
light.end_fill()
编程绘制交通信号灯
1.如果要绘制如图2.3.1所示的“红绿”信号灯,应该如何编写程序代码?分析其中两盏信号灯的位置坐标有何关系,描述出对应的算法。
import turtle
light=turtle.Turtle()
light.hideturtle()
light.color(“red”,”red”)
light.begin_fill()
light.circle(20)
light.end_fill()
light.penup()
light.goto(0,-60)
light.pendown()
light.color(“green”,”green”)
light.begin_fill()
light.circle(20)
light.end_fill
编程绘制交通信号灯
2.如果要绘制如图2.3.2所示的“红黄绿”信号灯,又应该如何修改程序代码?分析其中哪些语句是可以重复使用的。
绘制红黄绿三个信号灯(三个圆),需要分别设置三个圆的y坐标。其中,每次坐标的移动以及绘制圆等操作是重复运行的,这些步骤可以使用顺序结构,也可以使用循环结构实现,不过后者的程序结构显然更为清晰、简洁,程序示例如下:
import turtle
light = turtle.Turtle()
light.hideturtle()
color = ["red", "yellow", "green"]
for i in range(3):
light.penup()
light.goto(0, -i * 60)
light.pendown()
light.color(color[i], color[i])
light.begin_fill()
light.circle(20)
light.end_fill()
02
数据类型
数据类型
在编写程序解决问题的过程中,为了更好地处理各种数据,程序设计语言提供了多种数据类型。
Python语言常用数据类型
数据类型 类型标识符 类型说明及示例
整型
浮点型
字符串型
布尔型
列表
int
float
str
bool
list
整数,可任意大, 如2, -99,2207211588848
小数,如3.14、0.0008、 2.318E+6
通常是用一对单引号或双引号括起来的一串字符,如:'Hello, world'、"中国"、 '1'
用于逻辑判断,True和False
用来存放一组数据的序列,列表中所有的元素放在 [] 中间,并用逗号分开,例如: [1, 2, 3], [‘a’, ‘b’, ‘c’]
数据和数据类型的配对连线
整型
浮点型
字符串型
布尔型
列表
9.9999
1938374923021888
'TURE'
FALSE
[“人类简史”, “时间简史”, “三体”, “流浪地球”]
“巴黎圣母院”
-7866554
[1,2,3,4,5]
实践活动:确定数据类型
现实事物或现象 列举的数据 数据类型
倒计时数据 15 整形
列出信号灯的三种颜色名称
按钮是否可用
“red”,”yellow”,”green”
“true”,”false”
列表
布尔型
数据类型转换
在程序设计中,可以通过强制类型转换操作,把某个数据从一种数据类型转换成另一种数据类型。
数据类型转换函数 功能说明
float(x)
int(x)
str(x)
python语言中部分数据类型转换函数
将x转换为一个浮点型数据
将x转换为一个整型数据
将x转换为字符串型数据
体验交流
猜猜程序运行的结果是什么?上机体验,验证结果。
x=123456
y=float(x)
print("对比区别")
print("输出x的值:",x,"输出y的值:",y)
a=999.99
b=int(a)
print("对比区别")
print("输出a的值:",a,"输出b的值:",b)
对比区别
输出x的值:123456,输出b的值:123456.0)
对比区别
输出a的值:999.99,输出b的值:999)
03
常量、变量及表达式
常量、变量及表达式
在程序设计中,确定了数据的类型,也就确定了对该数据可以进行的处理操作。
程序设计语言利用运算符来操作数据,运算符将数据连接成表达式,单个的常量或变量也是表达式。
常量、变量及表达式
已知圆的半径是2cm,python表达式求出圆面积,π约等于3.14。
半径为2cm
>>> 3.14 * 2 * 2
12.56
众所周知,圆的半径是变化的,不可能总是给定的数值,那我们在python语言中如何处理?
常量、变量及表达式
>>> 3.14 * 2 * 2
12.56
>>> r = 2
>>> s = 3.14 * r *r
>>> print(s)
12.56
r被任意赋值,s的值也随之变化
r,s在这里称之为变量
常量、变量及表达式
变量的命名规则
① 变量名可以包括字母、汉字、数字和下划线(_),但不能以数字开头。
例如:name2是合法变量名,而2name是非法变量名。
② 变量名区分大小写。
例如:SUM ≠ sum ≠ Sum,myname和 Myname是不同的变量。
③ 不能用系统关键字作为变量名。系统关键字是程序设计语言中保留下来的用于特殊用途的标识符,每个关键字都有特殊的含义。
例如:for、in、if、continue、 break、else、and、not和or等。
④ 为了便于理解,变量名应具有一定含义,即“见名知意”。半径r,面积s,求和sum
变量的命名规则
分析下列语句是否能够被执行,如果可以,请写出结果,如果不行请说出原因。
区分大小写
不能以数字开头
系统关键字不能作为变量名
常量、变量及表达式
变量名 = 表达式
r = 2,colors =[“red”,”yellow”,”green”],light = turtle.Turtle()
python语言中的变量是在首次赋值时创建的。赋值语句是最基本的程序语句,其格式为:
python语言中的变量必须在使用前被赋值,不能使用未被赋值的变量。在使用过程中,变量还能被重新赋值。
运算符与表达式
运算符标明了对操作数(参与运算符计算的数据)所进行的运算。如+、-、*、/等。
表达式:运算符与操作数连接而成的有意义的式子被称为表达式,如:2+3
Python语言中的变量在首次赋值时创建,其格式为:变量名=表达式(赋值语句)
如:r=2
变量名:r
变量值:2
变量类型:整型
赋值给变量
程序语句的判断条件
用途
表达式 操作数 运算符 表达式的值
2 + 3
2 和 3
+
5
运算符与表达式
“+”
数值加法运算,
对字符串、列表进行连接运算。
不同类型的数据可以进行不同的运算,如整形数据有取模运算(%),而字符串没有。不同类型的数据使用同一种运算符运算时,常会产生不同的结果。
表达式
”China”+ ”521”
[11,”张明”]+[86.5]
运算结果
”China521”
[11,”张明”,86.5]
运算符与表达式
A
算术
运算符
B
关系
运算符
C
逻辑
运算符
算术运算符
运算符 表达式 说明 示例
+ x + y 加 5 + 2结果7
- x - y 减 5 - 2结果3
* x * y 乘 5 * 2结果10
/ x / y 除 4 / 2结果2.0
//
%
**
主要进行算数运算,运算的结果为整型或浮点型。
x // y
整数(只保留商的整数部分)
5 // 2结果2
x % y
取模/取余,即返回除法的余数
5 % 2结果1
x ** y
幂运算,即返回x 的y次方
5 ** 2 结果25
Python程序的修改与运行
运算符 描述 用法 举例
==
> 大于 a>b 2>3的结果为False
< 小于 a>=
<=
!=
主要用于比较两个值的大小,运算的结果为布尔型True或False。
等于
a==b
2==3的结果为False
大于等于
a>=b
2>=3的结果为False
小于等于
a<=b
2<=3的结果为True
不等于
a!=b
2!=3的结果为True
逻辑运算符
运算符 描述 用法 举例
not
and
or
可以对关系式或布尔值进行逻辑运算,运算结果仍为布尔值True或 False。
非
not a
not 2==3的结果为True
与
a and b
只有当两个操作数都为True时,其结果才为True 如:2<3 and 2>1的结果为True
或
a or b
只要有一个操作数为True,其结果就为True,如:2<3 and 1>2 的结果为True
运算符的优先级
优先级
优先级
高
高
低
逻辑运算符
关系运算符
算术运算符
not
and
or
== != <= >= < >
**
*/ % //
+ -
① 优先级高的先运算,优先级相同的从左向右算。
② “( )” 的运算级别最高。
③ 运算符的优先级为:算术运算符 > 关系运算符 > 逻辑运算符。
④ 在同类运算符中也要注意不同的优先级。
例如,逻辑运算符not、and和or的优先级为:not>and>or。
小结
Python语言基础
基本数据类型
常量与变量
使用方法
整形
浮点型
字符串型
布尔型
列表
命名规则
运算符与表达式
算术运算符
关系运算符
逻辑运算符
字符串运算符
课堂检测
1.下面的运算符中,优先级最低的运算符是( )
* B.!= C. + D. =
2. 程序的运行结果是( )
a=2
b=3
c=aprint(((a+b)/(b-a)**a)and c)
D
Ture
小括号里面的最高
算术运算符>关系运算符>逻辑运算符
同类运算符中也有优先级:
例如;先乘除后加减,not>and>or
课堂检测
3.在Python代码中表示“x属于区间[a,b)“的正确表达式是( )
A.a≤x and x<b B.n<=x or xC.x>=a and x=a and x>b
4.多选题,下列选项的运算结果为True的是( )
A.6>7or7>=7 B.12=13and2>3or2<3
C.5<=6and9>8 D.not4>3or4<5
C
ABCD
感
谢
位
观
看
各
授课教师:王粉周