CH07_迷宫闯关
CH07_迷宫闯关本章目标
能够根据需求设计程序
能够选择合适的指令积木实现程序
熟练使用各模块常用的指令积木
创设情境1.利用scratch制作一款迷宫游戏
2.游戏人物通过键盘的上、下、左、右键控制移动
3.如果人物碰到迷宫墙壁则会游戏失败
4.同时,如果碰到游戏中的巡逻兵也会失败
情景分析角色闯关者、巡逻兵
场景迷宫地图
动作闯关、移动、回到入口等
问题分析1.如何设计和绘制迷宫地图
2.人物如何接收键盘指令
3.如何判断碰到迷宫墙壁则闯关失败
4.如何判定游戏胜利
5.如何让巡逻兵角色开始“巡逻”
6.如何判断碰到巡逻兵则闯关失败
脚本规划与流程设计流程
脚本
实现步骤1.新建项目、创建角色
2.绘制新背景:迷宫地图
选择“绘制新背景”按钮,使用矩形框(黑色填充)绘制迷宫地图。
3.设计闯关者脚本
4.设计巡逻官脚本
课后作业功能扩展
1.闯关过程加入计时、计分功能
2.闯关者添加生命值属性
3.重新设定闯关成功的条件
4.优化巡逻者的功能(比如非固定路线行驶)
5.将迷宫改成多角色、多关卡的复杂游戏,功能可以根据自己的想法自行设计例如:
CH08_自动驾驶
CH08_自动驾驶本章目标
能够根据需求设计程序
能够选择合适的指令积木实现程序
熟练使用各模块常用的指令积木
创设情境1.利用scratch制作一款智能巡航汽车
2.智能小汽车通过雷达检测路标
3.如果碰到障碍,就自动转弯
情景分析角色智能小汽车
场景公路
动作行驶、停止、喇叭
问题分析1.如何绘制汽车雷达
2.如何绘制公路
3.如何检测障碍物
4.如何行驶、转弯、停止、按喇叭
实现步骤1.新建项目、创建角色
2.绘制公路
圆形或其它随意形
3.设计智能汽车脚本
课后作业
CH09_迭代器
CH09_迭代器
本章目标
掌握迭代器的定义与使用
迭代器前面章节中,已经对列表(list)、元组(tuple)、字典(dict)、集合(set)这些序列式容器做了详细的介绍。值得一提的是,这些序列式容器有一个共同的特性,它们都支持使用 for 循环遍历存储的元素,都是可迭代的,因此它们又有一个别称,即迭代器。
从字面来理解,迭代器指的就是支持迭代的容器,更确切的说,是支持迭代的容器类对象,这里的容器可以是列表、元组等这些 Python 提供的基础容器,也可以是自定义的容器类对象,只要该容器支持迭代即可。
如果要自定义实现一个迭代器,则类中必须实现如下 2 个方法:
_next_(self):返回容器的下一个元素。
_iter_(self):该方法返回一个迭代器(iterator)。
例如,下面程序自定义了一个简易的列表容器迭代器,支持迭代:
1234567891011121314151617181920212223class listDemo: def __init__(self): self.__date=[] self.__step = ...
CH07_函数和Lambda表达式
CH07_函数和Lambda表达式
本章目标
掌握函数的定义与调用
掌握值传递和引用传递的区别
掌握位置参数、关键字参数、默认参数的使用
掌握局部函数与闭包函数使用
掌握lambda表达式的使用
掌握内置函数eval()和exec()的使用
Python函数概述Python 中函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如 input() 、print()、range()、len() 函数等等,这些都是 Python 的内置函数,可以直接使用。
除了可以直接使用的内置函数外,Python 还支持自定义函数,即将一段有规律的、可重复使用的代码定义成函数,从而达到一次编写、多次调用的目的。
其实,函数的本质就是一段有特定功能、可以重复使用的代码,这段代码已经被提前编写好了,并且为其起一个“好听”的名字。在后续编写程序过程中,如果需要同样的功能,直接通过起好的名字就可以调用这段代码。
下面演示了如何将我们自己实现的 len() 函数封装成一个函数:
1234567891011121314#自定义 len() 函数def my_len(str): length = 0 ...
CH08_类和对象
CH08_类和对象
本章目标
掌握面向对象的思想
掌握类的定义和使用
掌握构造函数的定义和使用
掌握static关键词的使用
面向对象概述面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭,很多初学者会因无法理解面向对象而放弃学习编程。
面向对象编程(Object-oriented Programming,简称 OOP),是一种封装代码的方法。其实,在前面章节的学习中,我们已经接触了封装,比如说,将乱七八糟的数据扔进列表中,这就是一种简单的封装,是数据层面的封装;把常用的代码块打包成一个函数,这也是一种封装,是语句层面的封装。
面向对象中,常用术语包括:
类:可以理解是一个模板,通过它可以创建出无数个具体实例。比如,前面编写的 tortoise 表示的只是乌龟这个物种,通过它可以创建出无数个实例来代表各种不同特征的乌龟(这一过程又称为类的实例化)。
对象:类并不能直接使用,通过类创建出的实例(又称对象)才能使用。这有点像汽车图纸和汽车的关系,图纸本身(类)并不能为人们使用,通过图纸创建出的一辆辆车(对象)才能 ...
CH10_异常处理
CH10_异常处理
本章目标
掌握异常处理机制
掌握异常处理的用法
异常处理概述程序运行时常会碰到一些错误,例如除数为 0、年龄为负数、数组下标越界等,这些错误如果不能发现并加以处理,很可能会导致程序崩溃。
和 C++、Java 这些编程语言一样,Python 也提供了处理异常的机制,可以让我们捕获并处理这些错误,让程序继续沿着一条不会出错的路径执行。
可以简单的理解异常处理机制,就是在程序运行出现错误时,让 Python 解释器执行事先准备好的除错程序,进而尝试恢复程序的执行。
借助异常处理机制,甚至在程序崩溃前也可以做一些必要的工作,例如将内存中的数据写入文件、关闭打开的文件、释放分配的内存等。
Python 异常处理机制会涉及 try、except、else、finally 这 4 个关键字,同时还提供了可主动使程序引发异常的 raise 语句,本章都会为你一一讲解。
开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。
总的来说,编写程序时遇到的错误可大 ...
CH11_模块和包
CH11_模块和包
本章目标
掌握模块的定义和使用
掌握包的创建和使用
模块概述前面章节中,我们已经使用了很多模块(如 string、sys、os 等),通过向程序中导入这些模块,我们可以使用很多“现成”的函数实现想要的功能。
Python 提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。
那么,模块到底指的是什么呢?模块,英文为 Modules,至于模块到底是什么,可以用一句话总结:模块就是 Python 程序。换句话说,任何 Python 程序都可以作为模块,包括在前面章节中写的所有 Python 程序,都可以作为模块。
模块可以比作一盒积木,通过它可以拼出多种主题的玩具,这与前面介绍的函数不同,一个函数仅相当于一块积木,而一个模块(.py 文件)中可以包含多个函数,也就是很多积木。模块和函数的关系如图 1 所示。
经过前面的学习,读者已经能够将 Python 代码写到一个文件中,但随着程序功能的复杂,程序体积会不断变大,为了 ...
CH12_文件操作
CH12_文件操作
本章目标
掌握文件路径的运用
掌握文件的基本操作
掌握文件的读写操作
掌握对象持久化存储
概述和其它编程语言一样,Python 也具有操作文件(I/O)的能力,比如打开文件、读取和追加数据、插入和删除数据、关闭文件、删除文件等。
除了提供文件操作基本的函数之外,Python 还提供了很多模块,例如 fileinput 模块、pathlib 模块等,通过引入这些模块,我们可以获得大量实现文件操作可用的函数和方法(类属性和类方法),大大提供编写代码的效率。
文件路径关于文件,它有两个关键属性,分别是“文件名”和“路径”。其中,文件名指的是为每个文件设定的名称,而路径则用来指明文件在计算机上的位置。例如,我的 Windows 7 笔记本上有一个文件名为 projects.docx(句点之后的部分称为文件的“扩展名”,它指出了文件的类型),它的路径在 D:\demo\exercise,也就是说,该文件位于 D 盘下 demo 文件夹中 exercise 子文件夹下。
通过文件名和路径可以分析出,project.docx 是一个 Word 文档,demo 和 e ...
CH01_初识Python
CH01_初识Python
本章目标
掌握python特性
掌握python的优缺点
掌握python的应用领域
掌握python 2.x和 3.x的区别
pythonPython简介
Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。
Python 由 Guido van Rossum (吉多·范罗苏姆) 于 1989 年底发明,第一个公开发行版发行于 1991 年。
像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。
官方宣布,2020 年 1 月 1 日, 停止 Python 2 的更新。
Python 2.7 被确定为最后一个 Python 2.x 版本。
编程语言是什么
其实,程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令。
为了有效避开所有影响给计算机传递指令的因素,计算机科学家设计了一些符号,这些符号各有其含义,且之间无二义性,通常称它们为编程语言。编程语言中的每个结构,都有固定的使用格式(称为语法) ...
CH05_字符串常用方法
CH05_字符串常用方法
本章目标
掌握字符串常用方法的运用
python字符串常用方法概述在了解字符串的基本使用之后,本章将介绍 Python 字符串类型常用的几个方法。
在 Python 开发过程中,经常需要对字符串进行一些特殊处理,比如拼接字符串、截取字符串、格式化字符串等,这些操作无需开发者自己设计实现,只需调用相应的字符串方法即可。
注意,本章所讲的字符串方法,和内置函数(如 len() )不同,它们是字符串类型(str)所特有的,因此这些字符串方法的调用方式也比较特殊。
python字符串常用方法详解1.字符串拼接在 Python 中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在一起,具体格式为:
1strname = "str1" "str2"
strname 表示拼接以后的字符串变量名,str1 和 str2 是要拼接的字符串内容。使用这种写法,Python 会自动将两个字符串拼接在一起。
【示例】以连续书写的形式拼接字符串:
1234str1 = "Python教程" "http ...