第六章 专题四 可以复用的代码 课件(共29张PPT)-《信息技术》同步教学(华东师范大学出版社)

资源下载
  1. 二一教育资源

第六章 专题四 可以复用的代码 课件(共29张PPT)-《信息技术》同步教学(华东师范大学出版社)

资源简介

(共29张PPT)
专题四 可以复用的代码
考纲要求
(1)了解面向对象程序设计的基本方法;
(2)了解模块化程序设计的意义;
(3)掌握调用math模块使用数学函数的方法;
(4)掌握调用turtle模块绘制简单图形的方法。
一.面向对象程序设计概述
面向对象程序设计(简称OOP)是一种程序开发的方法。对象是指客观存在的事物,比如可以从圆、矩形、三角形等图形抽象出一个简单图形,简单图形就是一个对象,它有自己的属性和行为,图形中边数、面积是它的属性,输出图形的面积就是它的行为。同一类事物的集合称为类,在类中定义每个对象共有的属性和方法,即类是封装对象的属性和行为的载体,对象是类的实例。面向对象程序设计的思想是将对象作为程序的基本单元,将程序和数据封装其中以提高程序的重用性、灵活性和扩展性。面象对象程序设计具有三大基本特征:封装、继承和多态。 在Python中,字符串、函数、列表等都是对象,Python就是面象对象程序设计语言。
实例:根据从键盘上输入的表示星期几的数字,输出对应的用英文表示的星期的简称,如“Mon、Tue、Wed、Thu、Fri、Sat、Sun”。设计程序代码如下:list=[] #创建空列表对象for i in range(7):xq=input("请输入英文星期:") #按星期的顺序一个一个输入,并添加到列表中list.append(xq) #利用列表对象的方法append()将英文星期添加到列表的末尾 n=int(input("请输入一个数:")) #输入1~7中的一个数 print("你输入的是",list[n-1]) #输出英文表示的星期
二.模块化程序设计的意义
对于比较大型、复杂的问题,可以采取“自顶向下、逐步细化”的方法,即将一个完整的问题分成若干个小问题,每个小问题实现一个功能,再将每个小问题逐步细化、分解为一系列具体可实现的步骤。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。将问题模块化后,有许多功能是相似甚至完全相同的,可以使用代码复用的方法以提高程序的效率。函数就是一种代码复用的方法。Python函数分为系统函数和用户自定义函数两类。系统函数分为内置函数和非内置函数,内置函数可以直接使用,内置函数包含了使用频繁的或最基本的操作,如基本数学函数(abs,round)、类型转换函数(int,float,str)、集合操作函数(len,max,min,sum)、输入输出操作函数(input,print)等。 非内置函数要先导入模块再使用。Python 标准库中有100多个非内置模块,如math库函数,其中包含各种数学函数。
二.模块化程序设计的意义
1.内置函数。
表6-4-1 Python内置函数
二.模块化程序设计的意义
【实例讲解】 1.输入5个数,统计最大值、最小值、它们的和以及平均值。 程序代码: list=[] #定义空列表 for i in range(5): a=float(input("请输入一个数:")) list.append(a) #将输入的数添加到列表 print(max(list),min(list),sum(list),sum(list)/5) 2.输入一个字符串,输出字符串长度;将大写的字母转化为小写再输出;将小写字母转化为大写再输出。 s=input("请输入一个字符串:") a=len(s) print("字符串的长度是:",a) for i in range(a): print(s[i].lower(),end="") #将大写的字母转化为小写再输出 for i in range(a): print(s[i].upper(),end="") #将小写的字母转化为大写再输出
二.模块化程序设计的意义
2.调用math模块 要使用math模块中的库函数,首先必须要导入,导入的方法有两种:(1)导入整个模块。语句格式:import math;或 from math import *。(2)导入个别函数。比如导入函数sqrt、sin,语句格式:from math import sqrt,sin。
表6-4-2常见的math函数
函数名 作用 示例 结果
sqrt() 求平方根 math.sqrt(9) 3.0
trunc() 取整,直接舍去小数 math.trunc(2.78) 2
exp() exp(n)求e(e=2.718)的n次方 math.exp(1) 2.718281828459045
gcd() gcd(x,y),求x,y的最大公约数 math.gcd(8,6) 2
pi 求圆周率π,保留15位小数 math.pi 3.141592653589793
log() 求以e为底的对数 math.log(2.718) 约为1.0
sin() 求正弦值 math.sin(1) 0.84
cos() 求余弦值 math.cos(1) 0.5403
实例:设计程序求一元二次方程的解输入一元二次方程(y=ax2+bx+c)的系数,判断并输出方程的解。 一元二次方程解的公式是:x=(-b± )/2a。如输入a=1,b=4,c=3 ,输出方程的解为-1,-3。程序代码如下:import matha=float(input("请输入系数a:"))b=float(input("请输入系数b:"))c=float(input("请输入系数c:"))p=b**b-4*a*cif p>0: print("x1=",(-b+math.sqrt(p))/(2*a)) print("x2=",(-b-math.sqrt(p))/(2*a))elif p==0: print("x=",-b/(2*a))else: print("方程无解")
二.模块化程序设计的意义
二.模块化程序设计的意义
Python随机函数Python中生成随机数的函数,是由random模块控制,需要导入random模块才能使用。(1)random()函数。random.random()函数返回一个随机数,其值在0至1的范围之内,具体用法如下:  import random  print ("随机数: ", random.random()) #每次输出的结果都不相同。(2)random.randint()。用于随机生成指定范围内的整数,有两个参数,一个是范围上限,一个是范围下限,具体用法如下:  import randomprint (random.randint(6,8))#输出6,7,8中的随机数
根据以下题目要求设计程序
(1)输入直角三角形两条直角边的长度a,b,计算斜边的长度(保留1位小数)。
(2)输入一个字符串按逆序输出,如输入"abcd",输出"dcba"。
(3)校园歌手赛上,6个评委给选手甲打的分数分别是9.2,8.6,7.9,8.6,9.1,8.8,去掉一个最高分和一个最低分,再取平均分作为该选手的最后得分,请统计并输出该选手的最后得分。
『知识扩展』
『实践体验』
二.模块化程序设计的意义
3.自定义函数 用户自定义函数是用户自己编写的一段程序。Python自定义函数的语法如下:def 函数名(参数列表): 函数体(包含语句或语句组) return [返回值]/[None] 说明:(1)函数名必须遵循标识符的命名规则;(2)函数可以没有参数,如果有多个参数,则参数之间用逗号分隔;(3)函数若没有返回值,可以省略return语句或使用return None。【实例讲解】输入一个自然数n,计算n!并输出结果,计算n!使用自定义函数实现。程序代码如下:def fac(x): #求x! s=1 for i in range(2,x+1) : s=s*i return sn=int(input("请输入一个自然数:"))t=fac(n) #调用自定义函数fac()print(n,"!=",t)【实践体验】根据以下题目要求设计程序(1)输入x,计算y=|x|并输出结果,其中计算绝对值使用自定义函数。(2)计算s=1!+2!+3!+…+10!
turtle库是Python语言中一个很流行的绘制图像的函数库,它通过函数指令控制图形的生成。在使用 turtle库中命令前,先要导入模块,导入的语句格式如下:格式1:import turtle;格式2:import turtle as 变量;例如:import turtle as t,表示导入turtle模块,并且用t代替turtle。1.画布 画布就是绘图区域,我们可以设置它的大小和初始位置。 设置画布大小的语句是:turtle.screensize(width, height,color),参数分别为画布的宽、高(单位是像素)和画布颜色。如:turtle.screensize(400,500,"red")。2.画笔 在默认情况下,在画布中心位置有一个坐标轴原点,坐标原点处有一只面朝x轴正方向的“小乌龟”,它代表画笔。在绘图时,使用画笔控制命令结合画笔运动命令控制画笔的状态生成图形。画笔的属性包括宽度、颜色和移动速度等;画笔的运动状态有提起、放下、前进、后退、左转及右转等。常见的画笔控制命令如表6-4-3所示,画笔运动命令如表6-4-4所示。
三.调用turtle模块绘制简单图形
表6-4-3画笔控制命令
画笔控制命令 使用说明
turtle.pensize(size)或width(size) 设置画笔宽度,其中size单位为像素,决定了生成的图形轮廓线粗细
turtle.pencolor() 设置画笔颜色,参数如"green"、 "red"、 "blue" 、"yellow"、"orange"等,也可以是RGB 3元组
turtle.speed(n) 设置画笔的速度,n取值范围为1到10,数值越大速度越快
turtle.fillcolor(color) 设置图形的填充颜色,参数如"green", "red"等
turtle.filling() 返回当前是否在填充状态
turtle.begin_fill() 开始填充图形
turtle.end_fill() 结束填充
三.调用turtle模块绘制简单图形
表6-4-4画笔运动命令
画笔运动命令 使用说明
turtle.forward(d)或fd(d) 向当前画笔方向移动d个像素(px)长度
turtle.backward(d)或bk(d) 向当前画笔相反方向移动d个像素长度
turtle.right(a)或rt(a) 画笔右转(顺时针转)a度
turtle.left(a)或lt(a) 画笔左转(逆时针转)a度
turtle.penup()或pu() 提起画笔,画笔移动时不会绘制图形
turtle.pendown()或pd() 画笔落下,画笔移动时绘制图形,缺省时也会绘制图形
turtle.goto(x,y) 将画笔移动到坐标为x,y的位置
turtle.circle(r) 画半径为r像素的圆,以下实例中有详细介绍用法
turtle.write() 作用是在海龟界面输出文字,语句格式:turtle.write(内容,font=(fontname,fontsize,fonttype))。如定义字体为Arial,大小为24,输出内容为“热爱学习!”,可使用命令:turtle.write(“热爱学习!”,font=(“Arial”,24))
三.调用turtle模块绘制简单图形
三.调用turtle模块绘制简单图形
【实例讲解】1.画正方形。实例:画一个边长为80像素,线条颜色为红色的正方形,代码如下:import turtle #导入turtle模块turtle.pencolor("red") #画笔颜色为红色 for i in range(4): #循环四次画4条边 turtle.forward(80) #向当前画笔方向移动80像素 turtle.right(90) #画笔右转90度,也可以使用turtle.left(90) 2.画三角形。实例:画一个边长为150像素的等边三角形,填充颜色为“绿色”,代码如下:import turtlet=turtlet.fillcolor("green") #填充颜色为绿色t.begin_fill() #开始填充for i in range(3): t.fd(150) #向当前画笔方向移动150像素 t.rt(120) #画笔右转120度, 也可使用t.lt(120)t.end_fill() #结束填充t.done() #结束画图
三.调用turtle模块绘制简单图形
3.画圆。根据给定半径画圆的语句是:turtle.circle(r,extent=None, steps=None)。参数说明:①r为半径(单位为像素),半径为正(负),表示圆心在画笔的左边(右边);②extent为弧度(可选项),整个圆的弧度是360,半圆弧度是180,圆的四分之一弧度是90;③steps为多边形边数 (可选项),画半径为r的圆的内接正多边形,如正三角 steps=3。例1:turtle.circle(50) # 画半径为50像素的整圆例2:turtle.circle(50,steps=4) # 画半径为50像素的整圆的内接四边形例3:turtle.circle(50,180) # 画半径为50像素的半圆【实践体验】1.画一个边长为100px的正六边形,填充颜色为蓝色。2.画一个长为100px,宽为80px的矩形,线条颜色为“红色”,填充颜色为“绿色”。
课后练习
1.下列选项中不属于代码复用的优点的是( )。A.减少代码重复 B.使程序模块化C.使程序便于阅读 D.便于发挥程序员的创造力2.函数int(9.8)计算的结果是( )。A.9 B.9.0 C.10 D.10.03.函数sqrt(9)计算的结果是( )。A.3 B.3.0 C.18 D.814.以下不属于Python标准函数的是( )。 A.str() B.input() C.range() D.abc()5.以下函数可用于统计列表中最大值的是( )。A.sum() B.max() C.min() D.pow()6.函数round(6.85,1)的值是(   )。A.6 B.7.0 C.6.8 D.6.97.函数len("Hello")的值是(   )。A.5 B.HELLO C.“hello” D.Class-str8.Python 程序中导入math模块的命令是( )。 A. import B.output C. input D.get9.Python中,用于绘制图形的模块是( )。A.pygame B.math C.time D.turtle
10.自定函数的关键字是( )。A.function B.return C.procedure D.Def
专题综合练习
一、单项选择题1.Python语句a="21-4-5",则a的数据类型是( )。A.int B.float C.date D.str2.Python中,以( )开头的内容属于注释。A.\n B.# C.& D.$3.以下列表函数中会生成5个元素的一项是( )。A.range(5) B.range(0,5,2) C.range(1,6,2) D.range(0,6,2)4.表达式1+4*5.0运算结果的数据类型是( )。A.float B.int C.chr D.str5.以下不属于Python常量的是( )。A.3.14 B.bcd C."1234" D.'happy'6.Python中,将12.88转化为整数可使用的函数是( )。A.float() B.str() C.round() D.int()7.把变量m的值赋给n的正确语句是( )。A.m=n B.n=m C.n←m D.n==m 8.下列Python程序段运行的结果是( )。a=36;b=5;c=a//bprint(c)A.7 B.7.2 C.7.0 D.1
专题综合练习
9.下列表达式的值为True的是( )。A.2!=3 or 0 B.3>2>2 C.4>3 and 0 D.2==2 and 4<=310.以下属于列表的是( )。A.(1,2) B.{1,2} C.[1,2] D.1,211.在Python中,书写正确的表达式是(   )。A.b**2-4ac B.1/3a5 C.pi*r^2 D.2*pi*r12.b=str(25),b的数据类型是(   )。A.浮点型 B.字符串 C.整型 D.复数13.在Python中,表达式"22"+"8"的值是(   )。A.30 B."30" C."228" D."22+8"14.运行以下程序后,输出的结果是( )。m,n=1,2print(m==n)A.True B.False C.0 D.115.已知s=1+2+3…+n,找出一个最大整数n,使得s<2000。编写程序解决该问题,最合适的程序结构是( )。A.顺序结构 B.选择结构 C.循环结构 D.网状结构
专题综合练习
16.有Python程序如下:s=input()print(s*3)运行后通过键盘输入6,则输出的结果是(   )。A.18 B.666 C.sss D.s*317.在Python中,运行以下程序段后,输出的结果是(   )。for p in [1,2,3]:print(p**2,end="")A.1 2 3 B.2 4 6 C.1 4 9 D.出错18.以下Python程序运行后,输出“@”的个数是( )。for n in range(0,10,3): print("@")A.10 B.6 C.5 D.419. 以下程序的功能是:从键盘上输入一个两位数,判断是否为6的倍数,在①处应该填入的内容是( )。n=int(input())if ①: print("是6的倍数")A.n//6=0 B. n%6==0 C.n/6==0 D.n%6!=0
专题综合练习
20.下列Python程序运行的结果是( )。s=1for k in range(1,5):s=s*kprint(k,s)A. 24 6 B.120 5 C. 4 24 D.120 4
二、完善程序题
1.一本书的厚度为a页,李老师已经看了10天书,每天看b页。请编写一个程序,输入a,b的值,计算并输出李老师还要看几天才能把全书看完。请在①②处填写正确的内容。
a=①(input("全书页数:"))
b=int(input("每天看的页数:"))
s=②
print("还需要看",s,"天才能看完")
2.小王办理了某种流量套餐,其中不超出1000MB(包含1000MB)的部分费用20元,超出的部分0.25元/MB,输入他本月消耗的流量数P(单位MB),计算并输出他本月的费用。请在①②处填写正确的内容。
p=float(input("请输入流量:"))
if ①:
m=20
else:

print("本月费用是:",m,"元")
专题综合练习
3.1月~3月为春季,4月~6月为夏季,7月~9月为秋季,10月~12月为冬季。输入一个月份,判断并输出是什么季节。请在①②处填写正确的内容。yf=int(input("输入月份:"))if ①: jj="春季"elif yf in [4,5,6]: jj="夏季"elif yf in [7,8,9]: jj="秋季"②: jj="冬季"print("您输入的月份属于:",jj)
4.以下是计算 的程序代码,请在①②处填写正确的内容。
p=①
for i in range(2,11):

print("p=",p)
专题综合练习
5.以下是计算s=1+4+7…+61的程序代码,请在①②处填写正确的内容。s=0k=1while ①:s=s+k②6.以下程序的功能是输入x,y的值,对调x,y的值再输出,请在①②处填写正确的内容。x=int(input("请输入一个数:"))y=int(input("请输入另一个数:"))z=x①y=z②("x=",x,"y=",y)7.以下程序的功能是画一个半径为60px的正圆,线条颜色为“蓝色”,请在①②处填写正确的内容。①turtle.pencolor("blue")turtle.speed(2)turtle.width(5)turtle.②
专题综合练习
8.以下程序的功能是画一个边长为120px的正方形,线条颜色为“红色”,请在①②处填写正确的内容。import turtlet=turtle t.pencolor("red") for i in range(4): t.① #画笔移动120像素 t.② #画笔左转90度 t.done()三、程序设计题1.一辆动车即将穿越隧道,已知隧道全长为a米,动车车长为300米,动车速度为b米/秒。输入a,b的值,计算并输出动车完全通过隧道需要花费的时间。2.输入一个三位数,按逆序输出,如输入123,输出321。3.输入一个自然数并判断是否既是2的倍数又是3的倍数。若是,则输出yes;否则输出no。4.输入两个数a,b,若a>b则s=(a-b)2,否则s=(a+b)2,计算并输出s。5.某停车场收费标准为:停车时间为1小时以内免费,1小时≤停车时间<2小时收费10元,停车时间≥2小时,每小时加收2元,输入停车时间计算并输出停车费用。
专题综合练习
6. ,计算并输出s。
7.s=5+10+…+100,计算并输出s。
8.输入一个字符串统计字母(包括大小写)的个数。
9.假定存款年利率固定为4.25%,投资10万元,多少年后资金翻倍?
10.输出三位数中所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数,如:153 =13+53+33。
课后练习答案
题号 答案 题号 答案 题号 答案 题号 答案 题号 答案
1 D 2 A 3 B 4 D 5 B
6 D 7 A 8 A 9 D 10 D
课后练习答案:
专题综合练习:
一、单项选择题
题号 答案 题号 答案 题号 答案 题号 答案 题号 答案
1 D 2 B 3 A 4 A 5 B
6 D 7 B 8 A 9 A 10 C
11 D 12 B 13 C 14 B 15 C
16 B 17 C 18 D 19 B 20 C
课后练习答案
二、完善程序题1.①int ②(a-10*b)/b 或a/b-10 2.①p<=1000 ②m=20+(p-1000)*0.25 3.①yf in [1,2,3] ② else 4.①1 ②p=p*(1/i) 5.①k<=61 ②k=k+36.① x=y ②print7.① import turtle ②circle(60)8.① t.forward(120)或t.fd(120) ②t.left(90)或t.lt(90)
三、程序设计题
1.
a=float(input("请输入隧道长(单位为米):"))
b=float(input("请输入动车速度(单位为米/秒):"))
t=(a+300)/b
print("动车完全通过隧道所需要的时间:",t,"秒")
课后练习答案
2.
n=int(input("请输入一个三位数:"))
a=n//100
b=n%100//10 #或 b=n//10%10
c=n%10
s=c*100+b*10+a
print("新生成的三位数是:",s)
3.
n=int(input("请输入一个整数:"))
if n%2==0 and n%3==0: #或 n%6==0
print("yes")
else:
print("no")
课后练习答案
4.
a=float(input("请输入一个数:"))
b=float(input("请输入另一个数:"))
if a>b:
s=(a-b)**2
else:
s=(a+b)**2
print("s=",s)
5.
t=float(input("请输入停车时间(单位为小时):"))
if t<1:
f=0
elif t<2:
f=10
else:
f=10+(t-2)*2
print("停车费用是:",f,"元")
课后练习答案
6.
s=1
for i in range(2,11):
s=s+1/i
print("1+1/2+1/3+…+1/10=",s)
7.
s=0
for i in range(5,101,5):
s=s+i
print("5+10+…100=",s)
8.
s=input("请输入一个字符串:")
a=len(s)
count=0
for i in range(a):
if s[i]>='a' and s[i]<='z' or s[i]>='A' and s[i]<='Z':
count=count+1
print("字符串中包含的字符个数是:",count)
课后练习答案
9.
year=0
money=10
while money<20:
money=(1+0.0425)*money
year=year+1
print(year,"年后资金翻倍")
10.
for i in range(100,1000):
a=i//100
b=i%100//10
c=i%10
if a**3+b**3+c**3==i:
print(i)

展开更多......

收起↑

资源预览