? 图书在版编目(CIP)数据
? 信息技术教师用书.??八年级.??上册?/?陈仲光编.??—2版.??—广州:新世纪出
版社,2016.8(2017.7重印)
ISBN??978-7-5405-9640-8
Ⅰ.①信…? Ⅱ.①陈…? Ⅲ.①计算机课—初中—教学参考资料
Ⅳ.①G633.673
中国版本图书馆CIP数据核字(2015)第206437号
出 版 人:孙泽军
策? ? 划:黄春青
责任编辑:李彩莲
封面设计:高豪勇
责任技编:许泽璇
教育部中小学信息技术教育实验区实验教材
信息技术教师用书
XINXI JISHU JIAOSHI YONGSHU
八年级? 上册
陈仲光 编
出版发行:新世纪出版社
经? ? 销:广东教育书店有限公司
印? ? 刷:虎彩印艺股份有限公司
规? ? 格:787mm×1092mm 1/16 4印张 字数52千
版? ? 次:2015年9月第1版? 2016年8月第2版
印? ? 次:2017年7月第3次印刷
书? ? 号:ISBN??978-7-5405-9640-8
定? ? 价:2.52元
质量监督电话:020-83797655? 购书咨询电话:020-83792970
1
按照教育部《基础教育课程改革纲要(试行)》(教基〔2001〕17 号)文件
精神,从小学至高中应该设置综合实践活动课并作为必修课程,其内容主要包
括:信息技术教育、研究性学习、社区服务与社会实践以及劳动与技术教育。
按照广东省教育厅教学研究室下发的《义务教育信息技术教学指导意见》的要
求,在我省信息技术教育以独立课程的形式开课。小学阶段信息技术课在四至
六年级开设,初中阶段在七至九年级开设,每周 1 课时。部分地区可以根据本
地学生的认知水平和教学条件提前至三年级开课。为减轻初中学生升中考试的
负担,初中信息技术课可在九年级上学期末结束。各地要保证信息技术课正常
开设,并开足课时。
本套教材就是为义务教育阶段开设信息技术必修课而编写的,起始年级是
三年级。全套书共 12 本,其中三、四、五、七、八年级分上下册,六、九年
级为全一册。三至六年级的学习内容如下:
三年级上册:打字及电脑的基本操作技能。
三年级下册:电脑绘画,主要是用 Windows 画图软件进行绘画。
四年级上册:编辑作文集,用 Word 进行排版。
四年级下册:制作演示文稿,用 PowerPoint 进行制作。
五年级上册:Logo 编程。
五年级下册:Scratch 编程。
编者的话
2
六年级全一册:完成两个主题任务,“我想去旅游”和“制作毕业相册”。
学生通过完成“我想去旅游”主题任务,学会熟练地在网上查找并整理资料;
通过完成“制作毕业相册”主题任务,学会制作多媒体作品。
八年级上册的教材主要学习电子表格和数据库的相关知识,需要学生有一
定的电脑操作基础和数学统计知识,对于小学没有开设信息技术的地区则把学
习的重心放在操作层面,对于学生有一定信息技术基础的地区则把学习的重心
放在解决实际问题的层面。其中,第三单元“用数据库管理数据”为选讲内容,
学生信息技术基础特别好的地区选讲这一内容,让学生经历用数据库管理数据
的过程。
按照《中小学信息技术课程指导纲要(试行)》的精神,信息技术课程以
培养学生的信息素养为目标,怎样来落实呢?编者认为可以从下面三个方面来
落实:
(1)让学生掌握必需的信息技术知识和技能。
我们的社会信息化程度越来越高,信息技术的应用越来越广泛。不管是着
眼现在还是未来,学生都应该掌握必要的信息技术知识和技能。
八年级主要要求学生掌握 Excel 电子表格的操作技巧,初步了解 Access 数
据库是如何管理数据的,进而提高学生的数据加工处理能力和统计分析能力,
为高中阶段的信息技术学习打下坚实的基础。
(2)让学生运用所学的信息技术解决实际问题。
Excel 电子表格在日常工作和生活中得到广泛的应用,人们普遍用它来对
数据进行统计分析,本教材以一个小商贩运用 Excel 电子表格进行数据的统计
分析为例,让学生学会运用 Excel 电子表格知识与技巧帮助商贩进行数据的统
计分析,进而提高学生运用所学的信息技术解决实际问题的能力。
3
(3)让学生养成良好的信息技术学习习惯。
Excel 电子表格功能非常强大,想用十几节课的时间完全掌握是不太现实
的,课堂教学只能是让学生体验一下基本的操作技巧,感受一下电子表格在数
据加工处理方面的功能。而要真正达到熟练掌握则需要学生利用课余时间自行
摸索、反复操练,这就要求我们在课堂教学中注重培养学生良好的学习习惯,
指导学生学会运用 Excel 电子表格的帮助功能拓展提升,学会运用网络开展自
主学习和终身学习。
例 如: 教 材 中 只 介 绍 了 SUM、AVERAGE、MAX、COUNTIF、SUMIF、
AVERAGEIF、HLOOKUP、VLOOKUP 等常用函数,而 Excel 电子表格的函数远
不止这些,这就需要老师在课堂上有意识地培养学生自主学习的方法与技巧,
以便学生更好地开展其他函数的学习与应用。
教参中写的只是编者的一家之言,希望对老师们有一点参考作用,欢迎老
师们在教材的网站上(www.xxjskc.com)发表自己对教学的建议。
编 者
2017 年 7 月 1 日
1
第一课 用Python编程序 / 1
第二课 变量与赋值 / 7
第三课 图形化编程 / 12
第四课 分支程序 / 17
第五课 函 数 / 25
第六课 计算三角形的面积 / 30
第七课 循环程序 / 35
第八课 幸运大抽奖 / 42
目 录
2
第九课 画正多边形 / 46
第十课 画彩色螺旋图 / 52
第十一课 画正多角星(一) / 56
第十二课 画正多角星(二) / 59
第十三课 电话号码簿 / 64
第十四课 凯撒密码 / 68
第 一 课用Python编程序 一 ×
1
1.了解什么是编程,什么是编程语言;
2.了解什么是 Python 命令,什么是 Python 程序;
3.掌握 print() 函数的常用格式;能区分字符串和数值;
4.掌握输入 Python 命令和输入 Python 程序的方法。?
学习要点
重点难点
掌握输入 Python 命令和输入 Python 程序的方法是本课的重点;
难点是区分“字符串”表达式和“数学”表达式。
用Python编程序
第 一 课
2
信息技术教师用书 八年级上册
教 学 建 议
Python 语言是一种简单易学、应用广泛的编程语言,世界上有很多人正在
使用 python 从事科研和软件开发。
Python 有 2 和 3 两个系列,Python 由 2 升级到 3 的时候没有兼容 2。本书
是采用 Python?3 系列编写的,老师们要安装 Python?3 才能运行书中的例子。
一、软件要求:Python 3.x(教材编写使用的是 Python3.65)。
单击【开始】→【Python3.6】,文件夹中有 4 个选项,如图 1-1 所示:
图 1-1
各选项的含义是:
? :进入 Python?shell。
在 Python?shell 的提示符“>>>”的后面输入 Python 命令并按回车,该命令
就会立即执行并显示结果。如图 1-2 所示:
第 一 课用Python编程序 一 ×
3
图 1-2 Python shell 交互式执行命令窗口
单击 python?shell 的【File】→【New?File】,进入 Python?IDLE 编辑器,在
这里输入 Python 程序,然后单击【Run】→【Run?Module?F5】运行程序,单击
【Run】→【Python?Shell】回到 Python?Shell。如图 1-3 所示:
图 1-3 Python IDLE 文本编辑器,用于编辑程序
本课的内容就是在 Python?shell 中进行操作的。
? :python 的纯命令窗口,在提示符“>>>”的后面输入
Python 命令并按回车,该命令就会立即执行并显示结果。
4
信息技术教师用书 八年级上册
图 1-4
? :显示 Python 的帮助文档。
? :显示 Python 的模块和库的列表,如图 1-5 所示:
图 1-5
上面列出了 Python3.6 内置的模块(Built-in?Modules),例如:math、sys、
time 等;还列出了在安装目录下的模块文件,例如:?
第 一 课用Python编程序 一 ×
5
图 1-6
二、教学方法
本课的重点是让学生了解什么是 python 命令、如何创建 python 程序。教材
围绕着这两个目标设计了一系列的例题和试一试,目的是让学生通过操作实践
领悟本课众多的操作细节和知识点。
由于牵涉到的知识点很多,如果逐个地讲解会很枯燥。建议先由老师示
范 Python 命令的例子,然后让学生实际操作更多的例子,在实践中掌握如下
知识点:
?◆ print命令的常用格式;
?◆ 字符串和数值,以及两者的区别;
?◆ Python的数值运算符、字符串运算符“+”;
?◆ 创建和运行程序。
教学参考资源
Python 是一种面向对象的解释型计算机程序设计语言,是纯粹的自由软
件 , 由荷兰人 Guido van Rossum 于 1989 年发明。
6
信息技术教师用书 八年级上册
Python 语法简洁清晰,强制用空白符 (white space) 作为语句缩进,利用缩
进表示语句块的开始和退出。
Python 是完全面向对象的语言。函数、模块、数字、字符串都是对象。并
且完全支持继承、重载、派生、多继承。
Python 具有丰富和强大的库。它常被称为胶水语言,能够把用其他语言制
作的各种模块(尤其是 C/C++)轻松地联结在一起。常见的一种应用情形是,
使用 Python 快速生成程序的原型,然后对其中有特别要求的部分,用更合适
的语言改写,比如 3D 游戏中的图形渲染模块,性能要求特别高,就可以用 C/
C++ 重写,而后封装为 Python 可以调用的扩展类库。
Python 拥有强大的标准库。Python 语言的核心只包含数字、字符串、列表、
字典、文件等常见类型和函数,而由 Python 标准库提供了系统管理、网络通
信、文本处理、数据库接口、图形系统、XML 处理等额外的功能。Python 标
准库命名接口清晰、文档良好,很容易学习和使用。
Python 社区提供了大量的第三方模块,使用方式与标准库类似。它们的功
能无所不包,覆盖科学计算、Web 开发、数据库接口、图形系统多个领域,并
且大多成熟而稳定。
第 二 课变量与赋值 一 ×
7
1.理解变量及其命名规则;
2.掌握变量的赋值及变量的应用;
3.掌握 input() 函数的使用方法;
4.理解 int()、float() 函数的作用和使用方法。
学习要点
重点难点
本课的重点是变量及其应用,难点是理解赋值语句,不要将赋值语句和数
学中的等式混为一谈。
变量与赋值
第 二 课
8
信息技术教师用书 八年级上册
教 学 建 议
一、变量和赋值命令
变量是内存中的一个标记,在编程的过程中,变量名就代表了内存中存储
的数据,而赋值命令就是将数据存放到变量所指的内存中:
< 变量 > = < 表达式 >
变量与数学方程中的未知数有点相似,都是用来表示某个数值的符号,但
数学方程中的未知数是一个确定的数,数学方程中的等号也与赋值命令“=”
的意义不相同,例如,下面的赋值语句:
x=5
x=x+1
它的含义是:将变量 x 所代表的内存中的数据增加 1,其结果是,变量 x
所指的内存位置存储的数据变成了 6。如果把 x=x+1 看成是一个数学方程,显
然是错误的。
为了强化赋值命令的功能,不要将“=”读成“等于”,而要读成“赋
值”。
可以将变量比喻为日常生活中的“盒子”、“袋子”等等,给变量赋值,就
相当于将物品放入盒子中。
还有以下几点需要注意:
1.可以给变量重复赋值,赋了新值后,新值替换了旧值:
例如:a=10
a=30
运行以上两个语句后,变量 a 的值为 30。
第 二 课变量与赋值 一 ×
9
2.可以用表达式给变量赋值,变量可以作为表达式的元素进行计算:
例如:a=1
b=a+1
c=a+b
二、input() 函数
input() 函数可以接收键盘的输入,从而实现程序的交互。学了 input() 函数
之后,就可以做一些有趣的程序了。
为了让学生尽快地掌握编程的基础知识,本节先安排学生在 python?shell 的
交互模式下熟悉 input() 函数的功能。
学习 input() 函数,应该让学生掌握如下两点:
1.input() 函数的值可以赋值给变量,也可以不。
2.input() 函数的值是字符串类型,如果要进行数值运算,需要将它转换
成数值。所使用的函数有 float() 和 int().
float(input()) :将键盘输入的数字转换成浮点数类型(即小数);
int(input()) :将键盘输入的数字转换成整数类型(即整数)。
教学参考资源
一、补充练习题
编写如下程序:
从键盘上分别输入姓名和语文、数学、英语的考试成绩,然后输出:
某某某同学,你的语文 XX,数学 XX,英语 XX。
平均分:XX
总分:XX
10
信息技术教师用书 八年级上册
. 代码清单
name=input(" 您的姓名:")
a=input(" 语文成绩:")
b=input(" 数学成绩:")
c=input(" 英语成绩:")
a=float(a)
b=float(b)
c=float(c)
print(name+" 同学,"," 您的语文 ",a,", 数学 ",b,", 英语 ",c)
print(" 平均分 :",(a+b+c)/3)
print(" 总分:",a+b+c)
二、【试一试】参考程序
1.编程求长方形面积。要求在程序运行的时候输入长方形的长和宽。
程序如下:
. 代码清单
a=input(" 长方形的长:")
b=input(" 长方形的宽:")
a=float(a)
b=float(b)
print(" 长方形的面积 :",a*b)
2.编写一个造句程序,程序运行过程如下:
请输入一个形容词 : 可爱的
请输入一种动物名称 : 小鸟
第 二 课变量与赋值 一 ×
11
请输入一种动作 : 飞翔
请输入一个地方 : 天空
一只 可爱的 小鸟 飞翔 在 天空
程序如下:
. 代码清单
a=input(" 请输入一个形容词 :")
b=input(" 请输入一种动物名称 :")
c=input(" 请输入一种动作 :")
d=input(" 请输入一个地方 :")
print(" 一只 ",a,b,c," 在 ",d)
12
信息技术教师用书 八年级上册
1.了解常用的 python 编辑器有哪些;
2.理解图形化编辑器的作用;
3.初步掌握图形化编程的操作方法。
学习要点
重点难点
本课的重点是使用 wood 编辑器创建 python 程序。难点是理解代码和积木
之间的关系。?
图形化编程
第 三 课
第 三 课图形化编程 一 ×
13
教 学 建 议
为了更好地实现分层教学,本书采用了同时支持代码和图形化编程的
Wood 编辑器。但是,wood 编辑器的积木命令是有限的,并不能与所有的
Python 命令形成一一对应的关系,真正的开发可能还是需要使用代码。但使
用图形化的积木命令降低了初学者的学习难度,能帮助学习者理解代码命令,
因此,老师可以利用图形化编程来提高编程的教学效果。教材中的大部分程
序可以在代码和积木之间切换。有小部分程序不能转换成积木,但可以在
wood 编辑器中运行。
图形化积木编程所形成的文件是标准的 python 程序文件(.py),Wood 只
是用积木方式显示了标准的 Python 程序文件,所以 Wood 编写的程序都可以用
其他的编辑器打开、运行。
Wood 编辑器有在线和离线版,在线版网址是:https://python.codemao.cn,
离线版可以在编程猫的官网下载(www.codemao.cn)。
一、wood 编辑器
编写程序需要使用编辑器。Python? IDLE 编辑器虽然方便,但它只支持
代码编程,对于部分学习编程有困难的学生,不容易掌握。为了让更多的
学生学会编程,我们选择了一款能支持积木编程的编辑器—wood,Wood 编
辑器是由深圳点猫科技有限公司(简称编程猫)开发的 python 编辑器,它
可以显著地降低初学者学习编程的难度,让不同层次的学生都能学会编程。
如图 3-1 所示:
14
信息技术教师用书 八年级上册
图 3-1 积木编程和代码编程相结合
Wood 编辑器有如下几大优点:
1.支持积木编程,积木程序能转换成代码程序;
2..支持代码编程,代码程序能转换成积木程序;
3.支持 micro:bit 编程。如图 3-2 所示。
图 3-2 wood 支持 micro:bit 编程
使用 wood 编辑器可以将程序文件保存到本地或云端,如果要将文件保存
到云端,需要注册、登录。
如果使用 wood 编辑器进行教学,可以使用编程猫的“未来教室”进行教
第 三 课图形化编程 一 ×
15
学管理。教师在“未来教室”注册账号后,就可以为学生批量注册账号,并对
教学进行管理。
二、编程猫教学管理平台
编程猫教学管理平台叫“未来教室”。注册后,教师可以用该平台进行编
程创作和教学管理,学生也可以利用该平台进行编程创作。
注册方法如下:
1.教师注册
注册网址:https://edu.codemao.cn
注册之后就进入了编程猫“未来教室”,这是一个集教学管理与课程资源
管理于一体的云平台。如图 3-3 所示。
图 3-3 来教室含教、学、管、评等多种功能
2.学生注册
学生账号由教师在“未来教室”中创建班级的同时批量生成,学生账号生
成后,由教师下载分发给学生。
另外,教师可以将已有编程猫账号的学生添加进班级,无需另外生成账
号。已有编程猫账号的学生被加入班级后,可用此账号进入“未来教室”。
学生登录未来教室后,可选择编程工具进行编程,作品就保存在学生名
16
信息技术教师用书 八年级上册
下,老师也可查看。
三、搭积木编程
搭积木编程降低了编程的难度,学生能很快地用搭积木的方式编出简单的
程序。由于积木仅仅是代码的图形化表示,所以积木和代码之间能相互切换,
通过这种切换,有利于学生理解代码的功能。
搭积木编程虽然降低了编程的难度,但编程的操作比写代码繁琐,建议将
搭积木编程作为代码编程的辅助手段。即当代码编程遇到困难的时候使用搭积
木编程。?
建议使用 wood 离线编辑器进行教学,学生的程序完成后,在离线编辑器
上进行登录,然后将程序上传到未来教室。
教学参考资源
未来教室网址:https://edu.codemao.cn
进入未来教师后,可以看到如下教学工具:
班级管理、学生管理、作品管理、课程中心、创作工具、离线创作工具。
创作工具:选择 wood 编辑器进行 python 编程
离线创作工具:当单位网络环境较差时,教师和学生可以下载离线创作工
具来进行作品创作,离线创作工具的素材库包含了教师和学生常用的素材。
班级管理:创建班级,生成账号
学生管理:对学生账号进行管理,对学生的课堂表现进行评价;
作品管理:查看、导出作品,操作对象包括教师自己和学生。
课程中心:教师可以在这里备课,编写教案、整合文字和视频等资源、给
学生发送课件等。
教师论坛:教师进行教学交流的地方。
第 四 课分支程序 一 ×
17
1.掌握 If 语句的书写格式及使用方法。
2.掌握条件的表达方法;
3.学会使用流程图来表达算法;
4.理解程序的缩进表示。
学习要点
重点难点
本课的重点是 If 语句的格式和使用方法,难点是理解 if…elif…else 执行
流程。?
分支程序
第 四 课
18
信息技术教师用书 八年级上册
教 学 建 议
一、条件的表达
If 语句是根据条件是否成立进行分支的。用于表达条件的表达式的值只有
两个:True 和 False。
本课用关系表达式来表达条件,关系表达式的格式如下:
< 表达式 1>??< 关系运算符 >??< 表达式 2>
其中的关系运算符有如下几种:
关系运算符 表达式 说明
== a==b 等于,检测 a 和 b 是否相等
!= a!=b 不等于,检测 a 和 b 是否不相等
> a > b 大于,检测 a 是否大于 b
< a < b 小于,检测 a 是否小于 b
>= a>=b 大于等于,检测 a 是否大于或者等于 b
<= a<=b 小于等于,检测 a 是否小于或者等于 b
以上表格中的 a 和 b 必须是同类型的表达式,例如:都是字符串表达式,
或者都是数学表达式。
若要判断 a 是否在某个范围内,可以用如下关系表达式表达:
3
或者
10>a>3
以上关系表达式用于判断 a 是否在 3 和 10 之间。
有时需要对多个条件进行判断,例如,某公司招聘保安的条件是:男性,
第 四 课分支程序 一 ×
19
身高 175cm 以上。这时就需要使用逻辑运算符对多个条件进行运算。例如:( 性
别 =”男性”)??and??( 身高 =175)
包含逻辑运算符的表达式又称为逻辑表达式,逻辑运算符有 and、or、
not :
逻辑运算符 逻辑表达式 说明
and a and b
逻辑与。当 a 和 b 都为 True 时才结
果为 True。
or a or b
逻辑或。当 a 和 b 有一个为 True 时
结果为 True。
not not a
逻 辑 非。 如 果 a 为 True,not a 就
是 False ;如果 a 为 False,not a 就是
True。
以上表格中的 a 和 b 可以是关系表达式,也可以是逻辑表达式。
if 语句中的条件可以是关系表达式,也可以是一个逻辑表达式。
二、if 语句的格式
if 语句的格式为:
if?< 条件 1> :
< 语句块 1>
elif?< 条件 2> :
< 语句块 2>
……
else :
< 语句块 n>
下面的流程图有助于理解 if 语句的执行方式。
20
信息技术教师用书 八年级上册
条件 1
条件 2
其它情况 语句块 n
语句块 2
语句块 1
……
不成立
不成立
成立
成立
图 4-1 if 语句流程图
If 语句可以根据实际情况进行简化,例如:
if?< 条件 > :
< 语句块 >
或者:
if?< 条件 > :
< 语句块 1>
else :
< 语句块 2>
三、流程图
流程图可以帮助编程者表达算法和理解算法,特别是在表达分支程序和循
环程序的算法时特别有用。
传统上,流程图所使用的图形及功能如下:
第 四 课分支程序 一 ×
21
图??形 名??称 功????能
开始 / 结束框 表示算法的开始或结束
输入输出框 表示输入或输出信息
处理框 表示计算或赋值
判断框 表示条件判断
流程线 表示程序的执行顺序
为了简化流程图的表达,教材中把“输入输出框”归入了“处理框”。
四、缩进表达
在 Python 中,缩进用于指定代码块(语句块)从哪里开始,哪里结束。将
代码块缩进多少并不重要,但要保证整个代码块缩进的程度是一样的。Python
中的惯例是将代码块缩进 4 个空格,建议遵循这个惯例,严格遵循 python 的书
写格式,可以提高程序的可读性。
教学参考资源
一、补充练习题
莱蒙托夫是俄国著名的诗人,爱好数学,有一次,他给一些军官表演猜
数游戏,他请一名军官随便想好一个数,不要说出来,然后请这位军官将想
好的数加上 25,再加上 125,再减去 37,再减去最初想好的数,把所得的数
乘以 5,最后再除以 2.这时莱蒙托夫说,我可以猜出你算出的结果,他问那
位军官是 282.5 吗?那位军官非常吃惊!其实道理很简单:若设想好的数为 x,
根据题意得
22
信息技术教师用书 八年级上册
5(x+25+125-37-x)÷2=5×113÷2=282.5
这即为其中的道理。
下面就是莱蒙托夫猜数字游戏的程序:
print(' 请你任意想一个数……记住哦! ')
N = input(' 按回车键继续…')
print(' 把这个数加上 2')
N = input(' 按回车键继续…')
print(' 再乘以 3')
N = input(' 按回车键继续…')
print(' 再减去 5')
N = input(' 按回车键继续…')
print(' 再减去你心中想的数 ')
N = input(' 按回车键继续…')
print(' 哈哈 , 你心中想的那个数一定是 ',(5 * 113) / 2)
二、【试一试】参考程序
1.用图形化编程,完成【例题 4-2】.
积木程序如图 4-3 所示:
图 4-3
第 四 课分支程序 一 ×
23
2.某市实行阶梯电价, 200 度以内每度电 0.6 元,200 度 -500 度之间电价
是每度 0.7 元,超过 500 度的每度电 0.9 元。请编写程序,操作者输入用电数,
计算机就能算出电费。
本题的分支比较复杂,建议先画流程图,然后再编程。流程图如下:
其它情况
n>500
结束
开始
是
是
否
否
输入用电数 n
n>200
t=(n-500)*0.9+300*0.7+200*0.6
t=(n-200)*0.7+200*0.6
t=n*0.6
图 4-2 流程图
代码清单
n = float(input(' 用电数:'))
t = 0
if (n >500):
t=(n-500)*0.9+300*0.7+200*0.6
elif (n >200):
t=(n-200)*0.7+200*0.6
else:
t = n * 0.6
print(" 用电数 :",n," 电费 :",t)
24
信息技术教师用书 八年级上册
积木程序如下 :
图 4-3 积木程序
第 五 课函 数 一 ×
25
学习要点
1.了解什么是函数,理解为什么要使用函数。
2.掌握创建函数的方法。
重点难点
本课的重点是创建函数,难点是理解为什么要创建函数。?
函? 数
第 五 课
26
信息技术教师用书 八年级上册
教 学 建 议
一、什么是函数
函数是可重复使用、实现某一功能的代码块。
Python 使用函数来实现模块化编程。Python 提供了许多内建函数,可以直
接使用,例如前面学过的 print()、input()、int()、float() 都是内建函数。我们也
可以自己创建函数,叫做自定义函数。
本课主要学习自己创建函数。为了加深学生对函数的理解,建议首先让
学生在 python?shell 中定义并使用函数,让学生对函数的定义和调用产生直观
的印象。
二、创建函数
函数必须先定义才能使用,内建函数之所以不需要定义就可以使用,是因
为 python 已经定义好了这些函数。
我们可以根据需要来创建函数,定义函数的规则如下:
def??< 函数名 >?( 参数 ) :
< 语句块 >
?◆ 函数代码块以?def?关键词开头,后接函数名称和圆括号(),以冒号结尾。
?◆ 任何传入参数必须放在圆括号中间。例如:
def??< 函数名 >(< 参数 1>,< 参数 2>,…) :
如果没有参数,圆括号中为空。例如:
def??< 函数名 >() :
?◆ 语句块必须缩进,默认缩进4个空格。
?◆ 如果要将表达式的值返回给调用方,函数的<语句块>中的最后一行为:
第 五 课函 数 一 ×
27
return?< 表达式 >
调用函数得到的值就是这个表达式的值。
?◆ 在调用函数时,如果函数是带参数的,必须在相应的位置写上参数值,
该参数值将传给相应位置的参数。
利用积木编写带函数的程序,操作比直接写代码要麻烦。建议老师将积木
程序用于帮助学生理解程序的结构,而学生还是直接写代码。例如,ex54.py 的
积木程序如下:
图 5-1
借助以上积木,引导学生掌握:
?◆ 定义函数的代码块必须写在调用函数的语句的前面;
?◆ 如果程序中没有调用函数的语句,函数将永远不会执行。
教学参考资源
一、python3 的内置函数
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
28
信息技术教师用书 八年级上册
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reverse() zip()
compile() hasattr() memoryview() round() __import__()
complex() hash() min() set()
delattr() help() next() setattr()
dict() hex() object() slice()
dir() id() oct() sorted()
二、【试一试】参考程序
1.编写海里与千米换算程序:
代码清单
def ntokm(n):
return n*1.852
积木程序如下:
图 5-2
第 五 课函 数 一 ×
29
2.编写程序:从键盘上输入 5 个数,然后输出其中最大的数和最小的数。
(提示:使用 python 内置函数: max() 求最大值, min() 求最小值)
程序如下:
代码清单
a=float(input(" 第 1 个数:"))
b=float(input(" 第 2 个数:"))
c=float(input(" 第 3 个数:"))
d=float(input(" 第 4 个数:"))
e=float(input(" 第 5 个数:"))
x=max(a,b,c,d,e)
y=min(a,b,c,d,e)
print(" 最大的数 :",x,",最小的数 :",y)
30
信息技术教师用书 八年级上册
学习要点
1.进一步熟悉函数的定义。
2.了解什么是逻辑表达式,什么是关系表达式。能进行简单的
逻辑运算。
3.了解什么是库和自定义模块。
4.掌握导入库和自定义模块的方法,能区分不同的导入方法对应
的函数的引用方法。
重点难点
本课的重点是掌握导入库的方法,难点是逻辑表达式及其运算。?
计算三角形的面积
第 六 课
第 六 课计算三角形的面积 一 ×
31
教 学 建 议
一、关于条件的表达
条件可以用关系表达式表达,也可以用逻辑表达式表达。
在(第四课)分支程序这一课中,使用了关系表达式来表达条件,当条件
比较复杂时,需要将几个关系表达式组合起来形成一个复合条件,这时需要使
用逻辑运算符。逻辑运算符有 and、or、not。包含逻辑运算符的表达式称为逻
辑表达式。
这一课先编程判断三个数能否组成三角形,带出了如何用几个关系表达式
来表达条件的问题,引入了逻辑表达式。
1.and 逻辑与?
使用格式:< 条件 1>??and??< 条件 2> ;?
运算结果:只有当 < 条件 1> 和 < 条件 2> 都成立时,结果才是“真”;其
余情况的结果都是“假”。因此,< 条件 1> 或 < 条件 2> 只要有一个不成立,
结果都是“假”。其计算过程是:先判断 < 条件 1> 是否成立,如果 < 条件 1>
成立,接着再判断 < 条件 2> 是否成立:如果 < 条件 2> 成立,“< 条件 1>?and?
< 条件 2>”的结果就是“真”,如果 < 条件 2> 不成立,结果就是“假”。?如果
< 条件 1> 不成立,就不会再去判断 < 条件 2> 是否成立:因为 < 条件 1> 已经
不成立了,不管 < 条件 2> 如何,“< 条件 1>??and??< 条件 2>”的结果都是“假”。
若想判断 a 的值是否在区间 (3,?5) 范围内,可以这样写:
a>3?and?a<5
也可以这样写:
332
信息技术教师用书 八年级上册
或者:
5>a>3
2.?or 逻辑或?
使用格式:< 条件 1>??or??< 条件 2>?
运算结果:两个条件中只要有一个成立时,结果就是“真”;两个条件都
不成立时,结果就是“假”。
3.?not 逻辑非
使用格式:not??< 条件 >?
运算结果:取 < 条件 > 相反的值:真变假,假变真。也就是说,若 < 条件 >
成立,结果就是“假”;若 < 条件 > 不成立,结果就是“真”。
例:4>2 的值是“True”,?not?(4>2) 的值是“False”
二、库和自定义模块
调用函数是模块化编程的重要特征,对于经常要用到的一些功能,python
已经将它们编写成内置函数了,启动 python 之后就可以直接使用,例如:
print()、input() 等就是内置函数。但并不是所有常用的函数都是内置函数,还有
一些常用函数放在了 python 的标准库中,需要将它们导入才能使用。例如开平
方的函数 sqrt() 就放在 python 的标准库 math 中。
导入函数有如下几种方法,不同的导入方法,函数的引用表述是不相同的。
1.from?< 库名 >?import?*?
将指定库中的函数全部导入到当前的程序中。还可以导入指定的函数,格
式如下:
from?< 库名 >?import?< 函数名 1>,< 函数名 2>,…
这样引用库函数,库中的函数与主程序中的函数在用一个命名空间:即在
主程序中引用库中的函数时,不需要加上库名前缀,就像引用主程序自己定义
第 六 课计算三角形的面积 一 ×
33
的函数一样。
由于存在这种可能:指定库中的函数名与主程序中的函数名同名,或者:
从不同的库中导入的函数同名。为了避免函数同名产生冲突,尽量不用这种方
式导入库。
2.import?< 库名 >
从指定的库中导入所有的函数,但在引用库中的函数的时候,需要加上库
名作为前缀。
为了简化作为前缀的库名,可以使用如下格式导入库:
import?< 库名 >?as?x
该命令也是从指定的库中导入所有的函数,但在引用库中的函数的时候,
前缀变成了 x,x 的取名要符合变量的取名规则。
自定义模块的引用方法与 python 库的引用方法相同。但对于自定义模块的
保存位置有如下要求:
1.自定义模块和主程序在同一个目录下,或者在 python 的安装目录下。?
2.如果自定义模块在主程序所在目录的子目录下,或者在 python 的安装
目录的子目录下,可以在子目录中增加一个空白的 __init__.py 文件,然后模块
名用“子目录 . 模块”指定。例如:import?< 子目录 . 模块 >?as?x
教学参考资源
一、补充练习题
将本课 ex63.py 移动到 ex64.py 所在目录的子目录下,然后运行 ex64.py
( 提示:必须在子目录下建立一个空的文件 __init__.py,然后用“import <
子目录 . 模块 > as x”对自定义模块进行引用 )
34
信息技术教师用书 八年级上册
二、【试一试】参考程序
编写程序:从键盘上输入圆的半径,然后输出圆的面积和圆的周长。
(圆的面积公式:s=πr2 ;圆的周长公式:s=2πr ;其中的圆周率 π 利用
math 库中的 math.pi 返回。)
程序如下:
代码清单
import math
r=input(" 圆的半径 :")
r=float(r)
c=2*math.pi*r
s=math.pi*r*r
print(" 圆的周长 :",c,",圆的面积 :",s)
积木程序如下:
表 6-1
第 七 课循环程序 一 ×
35
学习要点
1.进一步熟悉条件的表达;
2.了解什么是随机事件,能用随机函数来模拟随机事件;
3.理解循环语句 While 的运行流程,能灵活地使用该语句编写循
环结构的程序。
重点难点
理解循环语句 While 的运行流程是本课的重点,控制循环的次数是难点。
While 语句中隐含了条件判断,可以借助流程图来帮助学生理解该语句的使用
方法。
循环程序
第 七 课
36
信息技术教师用书 八年级上册
教 学 建 议
本课的任务是编写“掷骰子”的程序,教材巧妙地将本课的学习要点融入
到了该任务中。
如何控制循环的次数是本课的难点。
一、随机函数
生活中类似抛骰子、硬币这样的事件很多,它们的结果是不确定的,我们
称这样的事件为随机事件。可以用随机函数生成随机数,模拟随机事件。
下面是 random 模块中常用的随机数及其功能:
1.random.random()
功能:生成一个 0 到 1 之间的随机浮点数 n :0<=?n?1.0
例如:
>>>import?random
>>>random.random()
0.20166776430231348
2.random.uniform(a,b)?
功能:生成一个介于 a、b 之间的随机浮点数。
例如:
>>>import?random
>>>print(random.uniform(1,10))
1.5136825490053738
3.random.randint(a,?b)
?功能:生成一个介于 a、b 之间的整数。
第 七 课循环程序 一 ×
37
例如:
>>>import?random
>>>print(random.randint(1,10))
5
二、控制循环
While 语句的格式为:
While?< 条件 >:
????< 语句块 >
当<条件>的值为True,那么就执行<语句块>。如果<条件>永远是“真”
(True),程序就会永远循环下去。
< 条件 > 的值为 True,有很多种表达方式,例如:
True、not??False、1==1、2>1、2!=1 等等。
通过控制 < 条件 >,就可以控制循环的次数。
1.利用 < 条件 > 表达式控制循环
为了用 < 条件 > 表达式来控制循环,< 条件 > 表达式中就必须要包含一
个控制循环的变量,每次循环,while 都会检测 < 条件 > 表达式的值是不是为
True,如果不是,循环就终止了。
【例题 7-2】用变量 i 来控制循环次数,初始值为 1,每循环一次 i 的值增
加 1,每次循环 while 都会检测条件 i<=n 是否仍然成立,如果不成立,循环就
终止了。
下面是类似的控制循环的例子:
从键盘输入五个数,然后显示累加的结果。
38
信息技术教师用书 八年级上册
代码清单
s=0
i=1
while?i<=5:
???????print(" 第 ",i," 个数 ")
???????a=input(" 请输入:")
???????a=float(a)
???????s=s+a
???????i=i+1
print(" 以上 5 个数累加等于 :",s)
在上面的程序中,变量 s 用于存储累加的结果,变量 i 用于控制循环的次
数。每次循环都会检测条件 i<=5,当 i>5 时循环就结束了。
在【例题 7-3】中,用变量 tries 控制循环的次数。
2.终止或提前进入下一次循环
在循环体中,可以视情况终止或提前进入下一次循环。
终止循环:break
功能:终止循环,执行循环后面的语句
在【例题7-3】中,如果猜对了,就不需要再猜了,于是用break终止循环。
进入下一轮循环:continue
功能:跳到 while 语句,对循环的 < 条件 > 进行检测,如果 < 条件 > 为
True,执行循环体 < 语句块 >。
在上面的程序中,加上如下功能:如果输入的内容不是数值,重新输入。
程序如下:
第 七 课循环程序 一 ×
39
代码清单
s=0
i=1
while?i<=5:
???????print(" 第 ",i," 个数 ")
???????a=input(" 请输入:")
???????if?not?a.isnumeric():
??????????????continue
???????a=float(a)
???????s=s+a
???????i=i+1
print(" 以上 5 个数累加等于 :",s)
isnumeric() 用于检测字符串是否只由数字组成。使用格式:
字符串 .?isnumeric()
例如:
>>>?'12345'.isnumeric()
True
>>>?'sfs'.isnumeric()
False
教学参考资源
一、补充练习题
楠楠想把零花钱存起来买一台 1800 元的手机,她第一个月存 100 元,以
40
信息技术教师用书 八年级上册
后每月比前一个月多存 10 元,她想知道需要存多少个月才能买手机?
程序如下:
代码清单
s=0
i=1
m=100
while s<=1800:
s=s+m
i=i+1
m=m+100
print(" 存钱的月份数:",i-1)
二、【试一试】参考程序
1.编写程序:电脑随机出一百以内的加法题,答对了显示“正确”,答错
了显示“错误”,并显示总的答对和答错的次数。
程序如下:
代码清单
import random
y=0
n=0
while True:
a = random.randint(0,99)
b = random.randint(0,99)
print(" 请输入:",a,"+",b,"=?")
c = input(" 请输入:")
第 七 课循环程序 一 ×
41
if not c.isnumeric():
print(" 输入有误! ")
continue
c=int(c)
if c==a+b:
print(" 正确 !")
y=y+1
else:
print(" 错误 !")
n=n+1
print(" 答对的次数:",y," 答错的次数:",n)
2.编写程序计算:1+2+3+...,加到多少时,累加的和 total 大于 1000 ?
代码清单
total=0
i=1
while total<=1000:
total=total+i
i=i+1
print(" 加到 ",i-1," 时累加的和大于 1000")
42
信息技术教师用书 八年级上册
学习要点
1.进一步熟悉随机函数;?
2.理解对列表进行操作的常用方法。
重点难点
重点是列表的创建及对元素的操作;难点是理解对列表进行操作的函数
(或方法)。
幸运大抽奖
第 八 课
第 八 课幸运大抽奖 一 ×
43
教 学 建 议
列表是是一系列用中括号 [] 括起来的数据,这些数据可以是字符、数字等
各种类型的数据,数据之间用逗号隔开。
下面是常见的对列表进行操作的命令或函数。
命令(函数) 功能
len( 列表名 ) 返回列表中元素的个数
del 列表名 [i] 从列表中删除第 i 个元素
列表名 .append( 元素 ) 在列表的最后添加一个元素
列表名 .sort() 对列表中的元素按照升序排序
列表名 .reverse() 对列表中的元素按照降序排序
在上面的表格中,len() 是一个函数,del 是一个 python 命令(语句),而
append()、sort()、reverse() 都是列表对象的方法。由于目前还没有讲到对象,所
以简单地将方法叫做命令或函数。
虽然方法和函数的定义方式相同,但它们还是有区别的:
1.函数不依附于对象,调用方式为:函数名 ()
2.方法依附于某个对象,调用方式为:对象名 . 方法 ()
为了让学生熟悉列表的操作,本课在【试一试】中设计了一系列操作,老
师可以向学生提问,检验学生对列表操作的理解。
本课还用到了字符串的方法 strip()。但为了不让学生产生困惑,教材中仍
然称 strip() 为函数。
下面是字符串常用的方法:
■??isnumeric()?
功能:如果字符串中只包含数字则返回??True,否则返回?False
例如:
44
信息技术教师用书 八年级上册
>>>?'12345'.isnumeric()
True
■??join(seq)
功能:在 seq 中所有元素插入分隔符,形成新的字符串。
例如:
>>>?'、'.join('abcdefg')
'a、b、c、d、e、f、g'
■??lower()
功能:转换字符串中所有大写字符为小写。
例如:
>>>?'ABCD'.lower()
'abcd'
■??upper()
功能:转换字符串中的小写字母为大写
在编程的过程中,经常会遇到不知道如何用代码表达想法的情况,这时候
应该鼓励学生求助百度 , 通过关键字搜索找到答案。
教学参考资源
下面是常用的与列表有关的函数(list 为列表):
函数名 功能
len(list) 列表元素个数
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
第 八 课幸运大抽奖 一 ×
45
下面是常用的与列表有关的方法(list 为列表):
方法名 功能
list.append(obj) 在列表末尾添加新的对象
list.count(obj) 统计某个元素在列表中出现的次数
list.insert(index, obj) 将对象插入列表
list.pop()
移除列表中的一个元素(默认最后一
个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse() 反向列表中元素
list.sort() 对原列表进行排序
list.clear() 清空列表
list.copy() 复制列表
46
信息技术教师用书 八年级上册
学习要点
1.了解 turtle 库及常用的函数;
2.理解 for 循环语句的运行流程;
3.理解 range(a,b,c) 函数的功能,能灵活地将 range() 函数与 for 语
句配合使用,控制程序的循环。
重点难点
教学重点是 for 循环语句,难点是如何选用列表与 for 语句配合,控制程序
的循环。
画正多边形
第 九 课
第 九 课画正多边形 一 ×
47
教 学 建 议
海龟库是供初学者学习编程用的经典模块,它的大部分函数与 LOGO 语言
中命令类似,如果学生学习过 LOGO 语言,几乎可以直接用海龟库的函数进行
绘图。
一、tutle 库的函数
Turtle 库中的函数大部分能与 LOGO 语言中的命令对应,例如:
函数 简写 说明
forward( 长度 ) fd( 长度 ) 向当前画笔方向移动指定长度
backward( 长度 ) bk ( 长度 ) 后退移动指定长度
right( 度数 ) rt( 度数 ) 顺时针旋转指定度数
left( 度数 ) lt( 度数 ) 逆时针旋转指定度数
pendown() pd () 落笔,使画笔移动时可以画画
penup() pu () 落笔,使画笔移动时不会画画
clear() clear() 清除所画图形,画笔的位置和状态不变
建议让学生先认识函数名,这样有利于学生理解函数的功能。
使用 wood 编辑器进行图形化编程,Turtle 库中常用的函数都可以在“海龟
库”积木盒中找到。
二、for 循环语句
for 循环可以遍历任何序列,如一个列表或者一个字符串。
for 循环的语法格式如下:
for??i??in??:
?????< 语句块 >
48
信息技术教师用书 八年级上册
可以是一个列表,例如:
for??i??in??[1,2,3,4,5]:
??????print(i)
也可以是一个字符串,例如:
for?i?in?“12345”
????????print(i)
下面是 for 语句的流程图(图 9-1)
从序列中没取到数据
从序列中取了一个数据
从序列中取一个
数据赋给变量 1
for 循环体
图 9-1 for 语句运行的流程图
for 语句执行时,依次地从序列中取数据赋给变量 i(如果是列表,每次取
一个元素,如果是字符串,每次取一个字符),如果从序列中取到数据就执行
for 循环体,如果没有取到数据(遍历完毕),则跳出循环。
中有多少个列表元素,或者字符串序列中有多少个字符,那么
for 语句就循环多少次。所以,如果循环的次数固定,通常用 for 循环。
三、range() 函数
range() 函数的格式如下:
range(start,?stop[,?step])
第 九 课画正多边形 一 ×
49
功能:产生一个数字序列,这个序列从 start 开始,到 stop 结束,数字间隔
为 step。各参数含义如下:
start:?计数从?start?开始。若省略,默认是 0。例如 range(5)等价于 range?
(0,?5);
stop:?计数到?stop?结束,但不包括?stop。例如:range(0,?5)?是 [0,?1,?2,?3,?4]
没有 5
step :步长,默认为 1。例如:range(0,?5)?等价于?range(0,?5,?1)
将 range() 函数和 for 语句配合使用,可以灵活地控制循环的次数。
教学参考资源
【试一试】参考程序:
1. 选择你喜欢的编程方式编程:定义函数,然后调用该函数画出如下图形:
图 9-2
程序如下:
代码清单
import turtle
def dbx(n,d):
for i in range(n):
turtle.forward(d)
50
信息技术教师用书 八年级上册
turtle.left(360/n)
def ndbx(m,n,d):
for j in range(m):
dbx(n,d)
turtle.left(360/m)
分别用 ndbx(6,3,100)、ndbx(6,4,100)、ndbx(6,4,100) 画出对应图形。
2.用 for 语句编写累加求和程序(求:1+2+……n)。
程序如下:
代码清单
def s(n):
s=0
for i in range(1,n+1):
s=s+i
return s
print(s(100))
积木程序如下:
图 9-3
3. 古印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋的发明者),
第 九 课画正多边形 一 ×
51
问他要什么。达依尔回答:“陛下只要在棋盘的第一个格子中放 1 粒麦子,在
第二个格子中放 2 粒,在第三格放 4 粒,以后每个格子中放的麦粒数都是前一
个的两倍。如此放满 64 格,我就心满意足了。”国王心想,这不难办到。但一
袋麦子很快用完了,一个仓库的麦子也用完了……国王心里没底了,到底要多
少麦子呀?
请你编写程序计算需要多少麦子?
程序如下:
代码清单
import math
def s(n):
s=0
for i in range(n):
s=s+math.pow(2,i)
return s
print(s(64))
乘方可以用两个乘号 ** 表示,上面的程序也可以这样:
代码清单
def s(n):
s=0
for i in range(n):
s=s+2**i
return s
print(s(64))
52
信息技术教师用书 八年级上册
学习要点
1.进一步熟悉循环程序,能根据需要选择 for 或者 while 编写循环
程序;
2.进一步熟悉 turtle 库中的函数,能自主地查找并使用书中未学
过的函数进行编程;
3.理解求余运算,能熟练地使用求余操作 a%b 编程。
重点难点
本课的重点是进一步熟悉 for 循环编程,让学生理解序列和 for 是如何配合
来控制循环的。难点是求余运算。
画彩色螺旋图
第 十 课
第 十 课画彩色螺旋图 一 ×
53
教 学 建 议
for 和 while 都能控制循环,for 是用遍历序列来控制循环,而 while 是通过
检测<条件>来控制循环。大多数情况下,循环既能用for也能用while来实现。
在了解了两个循环语句的功能后,学生要学会根据任务的需要选择 for 或 while
编写循环程序。
在 ex101.py 中,为了让程序暂停一下,使用了 sleep() 函数,该函数在 time
库中。使用格式如下:
time.sleep( 时间秒 )
在掌握了一定的编程知识后,通常学生都有很强烈的编程欲望,如果无法
实现,很快就会对编程产生畏惧,影响他们的学习积极性。课堂上教授的编程
知识毕竟是有限的,老师应该鼓励学生在编程遇到困难的时候,通过百度去寻
找答案,激发他们编程的兴趣,同时也是培养学生的学习能力。
在例题 ex105.py 中,用列表和求余运算来控制画笔的颜色。表达式
c[int((i/10))%6] 有一点难懂。可以将表达式分解来解读:i 的值是按照步长 10 递
增的,例如 15,25,35,……所以 int(i/10) 就按照连续自然数递增,例如:1,2,
3,……因此 int((i/10))%6 就在 0-5 之间循环。
教学参考资源
补充练习题
1.画图 10-1 所示图形。
54
信息技术教师用书 八年级上册
图 10-1 图 10-2
程序如下:
代码清单
import turtle
turtle.speed(15)
def dbx(n,d):
for i in range(n):
turtle.forward(d)
turtle.left(360/n)
n=int(input(" 几边形? "))
x=int(input(" 画笔的粗细是多少(1-10)?"))
turtle.pensize(x)
c=["red","green"]
for i in range(20):
turtle.pencolor(c[i%2])
dbx(n,45)
turtle.left(360/20)
可以让学生修改程序中的参数,画出不同形状和效果的图形。
第 十 课画彩色螺旋图 一 ×
55
2.画图 10-2 所示同心正方形。
程序如下:
代码清单
import turtle
turtle.speed(15)
def dbx(n,d):
for i in range(n):
turtle.forward(d)
turtle.left(360/n)
step=int(input(" 间隔是多少? "))
x=int(input(" 画笔的粗细是多少(1-10)?"))
turtle.pensize(x)
c=["red","green"]
for i in range(5,200,step):
turtle.pencolor(c[int((i/step))%2])
dbx(4,i)
turtle.penup()
turtle.backward(step/2)
turtle.left(90)
turtle.backward(step/2)
turtle.right(90)
turtle.pendown()
56
信息技术教师用书 八年级上册
1.进一步熟悉已经学过的命令与函数;
2.进一步了解什么是算法;
3.学会使用百度解决编程过程中遇到的困难。
学习要点
重点难点
本课的重点是培养学生自主探究学习的能力。难点是画正多角星需要圆周
角的知识,而圆周角的知识通常在八年级或九年级才学,学生在理解算法的时
候可能会遇到困难。
画正多角星(一)
第 十 一 课
第 十 一 课画正多角星(一) 一 ×
57
教 学 建 议
本课的目的是让学生经历探究画正多角星的过程,进一步了解什么是算
法,懂得如何不断地优化算法、如何从网络获取编程知识,达到解决问题的目
的。
本课的难点是算法。学生可能不具备圆周角的知识,老师可以从分析如下
图形入手,给学生补充圆周角的知识:
正多角星的角都在圆周上,因此正多角星的内角都是圆周角。正多角星将
圆周等分,例如:正 9 角星将圆周 9 等分。如图 11-1 所示。
图 11-1
第一个图形:每个角对应 1 份圆弧,9 个角对应一个圆周(360 度),由于
圆周角的度数是它所对应的圆弧的一半,所以第一个图的正 9 角星内角和是
180 度。
第二个图形:每个角对应 3 份圆弧,?9 个角对应 3×9 份圆弧,即 3 个园周,
所以内角和是 3×180 度。
第三个图形:每个角对应 5 份圆弧,所以内角和是 5×180 度。
从以上的分析可以看出,正多角星都是等分圆弧,每个角对应多少个等分
圆弧,正多角星的内角和就是 180 度的多少倍。
本课的算法有一定的难度,学生学习的差异性较大,建议让学生自主探究
学习。通过阅读和运行程序,进一步熟悉已学的命令和函数。当学生在学习的
58
信息技术教师用书 八年级上册
过程中遇到算法的困难,老师应该鼓励学生进行小组的讨论、协助来解决问
题,而不是简单地告诉学生问题的答案,这样有利于培养学生的学习能力。如
果学生遇到的困难是知识性的内容,老师应该鼓励学生通过百度查询答案。
教学参考资源
圆周角是指顶点在圆上,且两边和圆相交的角。圆周角必然夹一段圆弧,
通常把圆周角说成是这一弧上的圆周角,或说这一圆弧所对应的圆周角。圆周
角的度数等于它所对应的圆弧的度数的一半。
通过本课的编程,学生会发现:内角和为 180 度的正多角星都是奇数正多
角星。怎么证明呢?
假设正多角星的内角之和是 180 度,正多角星将外接圆分成 n 等份,那么
1 个内角就对应 1 份圆弧,如图 11-2 所示:
A
B C
图 11-2
假设弦 AB 左侧的圆弧有 x 等份,那么弦 AC 右侧的圆弧也有 x 等份,因
此该正多角星的圆弧共有 2x+1 等份,这是一个奇数,所以内角之和为 180 度
的正多角星是奇数星。
第 十 二 课画正多角星(二) 一 ×
59
1.进一步熟悉已经学过的命令与函数;
2.进一步体验算法的优化过程。
学习要点
重点难点
本课的重点是培养学生自主探究学习解决问题的能力。难点是画正多角星
需要圆周角的知识,学生在理解算法的时候可能会遇到困难。
画正多角星(二)
第 十 二 课
60
信息技术教师用书 八年级上册
教 学 建 议
本课的算法有一定的难度,建议将编程与数学的学习相结合,让学生采用
自主探究与小组协助、小组讨论的方式进行学习。教材的设计是逐步地引导学
生发现问题、解决问题。通过探究,学生将进一步了解什么是算法,懂得如何
不断地优化算法,达到解决问题的目的。
本课的难点是让学生理解如下算法,根据下面这两个条件可以判断所画的
图形是否为我们要画的正多角星:
1.a<=n-4
正多角星是由不相邻的顶点连接而成(不相邻的顶点至少跨越 2 等份圆
弧),用 a 表示每个角对应的圆弧份数,那么 (n-a)/2>=2, 即 a<=n-4。如图 12-1
所示:
A
B C
图 12-1 正多角星的每个角对应的圆弧份数 a<=n-4
也就是说,当 a>n-4 时,所画的图形就不是多角星。检测该条件就排除
了画正多边形的可能性。因为正多边形是由相邻的顶点连接而成,那么 (n-
a)/2=1,即 a=n-2, 显然 n-2>n-4, 符合 a>n-4 的条件。
2.i在利用循环语句“for?i?in?range(n):”画正多角星的过程中,当画笔还没有画
到最后一边(第 n 条边)就回到了起点位置,(例如:画正 12 角星,画到第 8
第 十 二 课画正多角星(二) 一 ×
61
边(i=8)时就回到了起点位置,这时画的是正 8 角星,不是 12 角星。)此时
i上面两种情况只要有一种情况存在,就可以断定这不是我们要画的正多角
星。检测的条件表达式为:
in-4
教学参考资源
【试一试】的参考程序
1.修改 ex123.py :当从键盘输入正多角星的角数,计算机就能列出所有
可能的画法(即函数 djx(n,200,a) 中 a 的可能取值)。然后我们从键盘输入 a 的
值就能画出指定的正多角星。
程序如下:
代码清单
import turtle
def djx(n,d,a):
s=-1
x=int(turtle.xcor())
y=int(turtle.ycor())
for i in range(n):
turtle.forward(d)
turtle.left(180-a*180/n)
if x==int(turtle.xcor()) and y==int(turtle.ycor()):
if in-4:
62
信息技术教师用书 八年级上册
break
else:
s=a
return s
turtle.speed(10)
n=int(input(" 几个角的多角星? "))
print(" 正在推算可供选择的画法(对应的 a 值):")
a=1
while a<=n-4:
if djx(n,200,a)>0:
print(a)
turtle.clear()
a=a+1
a=int(input(" 请选择一种画法(对应的 a 值):"))
djx(n,200,a)
2.除了连笔画的多角星,还有一类多角星是通过正多边形或多角星叠加
而成的,你能说一说它们的构成方法吗?
这一题不需要编程,为了培养学生分析问题和解决问题的能力,不妨让学
生以小组为单位去探究一下这一类正多角星的特点。
(1)由正多边形叠加成正多角星
先从最简单的正三角形开始分析。
2 个正三角形叠加成正 6 角星
3 个正三角形叠加成正 9 角星
……
第 十 二 课画正多角星(二) 一 ×
63
依次类推:
2 个正四边形叠加成正 8 角星
3 个正四边形叠加成正 12 角星
……
(2)由正多角星叠加成新的正多角星
先从最简单的正五角星开始分析。
2 个正五角星叠加成正 10 角星
3 个正五角星叠加成正 15 角星
……
依次类推:
2 个正六角星叠加成正 12 角星
3 个正六角星叠加成正 18 角星
……
64
信息技术教师用书 八年级上册
1.了解什么是字典类型数据;
2.掌握字典类型数据的常用操作命令和函数;
3.理解文件操作命令。
学习要点
重点难点
本课的重点是学习字典类型数据的操作。难点是文件操作命令。
电话号码簿
第 十 三 课
第 十 三 课电话号码簿 一 ×
65
教 学 建 议
本课内容较多,建议使用 2 个课时进行教学。
本课并没有很深奥的算法,但涉及到很多新的命令和函数,建议让学生按
照教材自主探究学习。
字典类型的数据是键值对的集合,电话号码簿是人名和电话号码的集合,
人名和电话号码就是键值对,其中人名是键、电话号码是值。
本课的流程是由问题驱动的,当完成一个任务后,新的问题自然而然就产
生了:
创新电话号码簿
向已有文件追加电话号码 (ex133.py)
先打开文件,
若正常:向文件追加电话号码,
若异常:创建新文件(ex134.py)
新建文件保存电话号码簿 (ex132.py)
查询电话号码 (ex135.py)
电话号码不能保存,怎么办?
如何将电话号码追加到已有文件?
操作电话号码簿文件出错怎么办?
如何查询电话号码?
?
????????图 13-1
教学参考资源
【试一试】参考程序
66
信息技术教师用书 八年级上册
将创建和查询电话号码的程序合并成一个既能添加电话号码、又能查询电
话号码的程序。程序运行时出现如下界面,输入数字执行相应的功能程序块:
|——欢迎进入通讯录程序——|
|——1. 查询联系人资料——|
|——2.添加新的联系人——|
|——3. 退出通讯录程序——|
程序如下:
代码清单
print("|--- 欢迎进入通讯录程序 ---|")
print("|---1、 查询联系人资料 ---|")
print("|---2、 添加新的联系人 ---|")
print("|---3、 退出通讯录程序 ---|")
choice = input(" 请选择 :")
try: # 如果执行下面的语句块不出错,执行完下面的语句块
file=open("temp.txt","r+")
pb=eval(file.readline())
except: # 如果执行 try 下面的语句块出错了,执行下面的语句块
file=open("temp.txt","w")
pb={}
if choice=='1':
while True:
name = input(" 请输入联系人姓名 :")
if name.strip()=="":
第 十 三 课电话号码簿 一 ×
67
break
if name in pb:
print(" 联系人电话:",pb[name])
file.close()
elif choice=='2':
file.seek(0)
file.truncate()
while True:
name = input(" 请输入联系人姓名 :")
if name.strip()=="":
break
phone = input(" 请输入联系人电话:")
pb[name]=phone
strpb=str(pb)
file.write(strpb)
file.close()
else:
print(" 退出程序 ")
68
信息技术教师用书 八年级上册
1.进一步熟悉字典类型数据的操作;
2.进一步熟悉循环语句;
3.进一步熟悉函数的定义与调用。
学习要点
重点难点
本课的重点是进一步学习字典类型数据的操作。难点是通过键值查键。
凯撒密码
第 十 四 课
第 十 四 课凯撒密码 一 ×
69
教 学 建 议
本课可以用 1-2 课时进行教学。如果用 2 课时,加密信息和解密信息各用
一节课。
一、加密信息
利用凯撒密码对信息加密的过程,就是通过键查键值的过程(通过明文查
密文),比较简单。例题 ex141.py 中建立了一个密码本,可以对输入的信息进
行加密。但是,如果输入的信息在密码本中没有建立明文和密文的键值对,程
序将出错终止。老师可以提醒学生使用上一节课学过的 try……except 命令完善
程序,以便对不在密码本中的信息也能处理。修改后的 ex141.py 程序如下:
代码清单
book?={"?":"?","A":"D","B":"E","C":"F","D":"G","E":"H","F":"I","G":"J","H
":"K","I":"L","J":"M","K":"N","L":"O","M":"P","N":"Q","O":"R","P":"S","Q":"T
","R":"U","S":"V","T":"W","U":"X","V":"Y","W":"Z","X":"A","Y":"B","Z":"C"}
message=input(" 请输入要加密的字符串 :")
output?=?""
for?letter?in?message:
?????try:
??????????output?=?output?+?book[letter]
?????except:
??????????output?=?output?+?letter
print(" 加密后的字符串结果是 :",output)
70
信息技术教师用书 八年级上册
二、解密信息
解密就是通过键值查键的名称,由于 python 本身没有这种功能的函数,所
以要专门写一个通过键值查键的解密函数。算法如下(图 14-1):
通过函数的参数
获得密文字符 letter
从密码本的键的
序列中取一个键
该键的键值等于
变量 letter 吗?
将键的名称作为
函数的返回值
没取到
取到了
是
是
图 14-1 通过密文查明文的流程图
解密函数将单个字符解密,利用循环程序,遍历所有的密文,就可以将所
有的密文翻译成明文。
教学参考资源
【试一试】的参考程序
第 十 四 课凯撒密码 一 ×
71
1. 将加密和解密的程序合并成一个程序,运行程序时,输入 1 就进入加密,
输入 2 就进入解密,输入其他数字就退出程序。并且程序可以循环运行。
程序如下:
代码清单
def decode(letter,book):
for x in book.keys():
if book[x]==letter:
return x
book ={" ":" ","A":"D","B":"E","C":"F","D":"G","E":"H","F":"I","G":"J","H"
:"K","I":"L","J":"M","K":"N","L":"O","M":"P","N":"Q","O":"R","P":"S","Q":"T"
,"R":"U","S":"V","T":"W","U":"X","V":"Y","W":"Z","X":"A","Y":"B","Z":"C"}
while True:
print("|------------------|")
print("|---1、 信息加密 ---|")
print("|---2、 信息解密 ---|")
print("|---3、 退出程序 ---|")
print("|------------------|")
choice = input(" 请选择 :")
if choice=='1':
message=input(" 请输入要加密的字符串 :")
output = ""
for letter in message:
try:
72
信息技术教师用书 八年级上册
output = output + book[letter]
except:
output = output + letter
print(" 加密后的字符串是 :",output)
elif choice=='2':
message=input(" 请输入要解密的字符串 :")
output = ""
for letter in message:
try:
output = output +decode(letter,book)
except:
output = output + letter
print(" 解密后的字符串是 :",output)
else:
break
input(" 按任意键继续……")
2. 凯撒密码太简单了,你能设计一个不容易猜出来的密码本吗?编写加密
和解密程序。
修改密码本,让密文和明文随机地对应,这样一来只有掌握了密码本才能
加密、解密信息。
加密和解密的程序与上面的程序相同。