第四阶段 组合数据类型
实验一 列表的基本操作
第1关:列表增删改:客人名单的变化
任务描述
列表是由按一定顺序排列的元素组成,其中的元素根据需要可能会发生变化。其中,列表元素的添加、删除或修改等是最常见的操作。下面以一则请客的故事来说明列表元素操作的应用场景。
有个人邀请几个朋友吃饭,初步拟定了一个客人名单列表guests=['Zhang san','Li si','Wang wu','Zhao liu']。后面因为一些临时情况,这个客人名单不断变化:
Zhao liu说要带他的朋友Hu qi一起来。
Zhang san因临时有事不能来了。
Wang wu说由他的弟弟Wang shi代他赴宴。
最终的客人名单列表如下:
['Li si','Wang shi','Zhao liu','Hu qi']
本关要求对一个给定的列表进行增、删、改等操作,并输出变化后的最终列表。
第2关:排序:给客人排序
任务描述
一般情况下我们创建的列表中的元素可能都是无序的,但有些时候我们需要对列表元素进行排序。
例如,对参加会议的专家名单,我们需要根据专家姓名按照首字母从小到大或者从大到小的顺序进行排序。例如我们想将如下的客人guests列表中的五个名字元素['zhang san','li si','wang wu','sun qi','qian ba']分别按照首字母从小到大的顺序和从大到小的顺序分别排序。排序后的输出分别为:
['li si','qian ba','sun qi','wang wu','zhang san']
['zhang san','wang wu','sun qi','qian ba','li si']
本关要求就是学会列表排序相关操作的使用方法,实现对列表元素的排序。
第3关:数值列表:用数字说话
任务描述
在数据可视化的背景下,数字列表在Python列表中的应用十分广泛,列表十分适合存储数字集合。本关目标是让读者掌握一些处理数字列表的基本方法,主要包括数字列表的创建、对数字列表进行简单的统计运算等。
例如我们要创建一个从2到10的偶数的数字集合,然后计算出该集合的数值之和。
本关要求能够利用合适方法快速创建数字列表,并能够对列表中的元素数值进行简单的统计运算。
第4关:列表切片:你的菜单和我的菜单
任务描述
我们在前三关中学习了如何处理单个列表元素和所有列表元素,在这一关中我们还将学习如何处理部分列表元素——中称为切片。
例如,当我们去餐馆吃饭点菜时,你的菜单和我的菜单有些时候是一模一样,也有些时候是部分菜名一样。那么如何根据我已经点好的菜单生成你的菜单呢?
本关通过菜名列表的部分复制,让读者了解并掌握列表切片的基础知识。
实验二 列表的应用
第1关:欧拉筛法求素数
任务描述
本关任务:编写一个欧拉筛法求素数的小程序。
相关知识
为了完成本关任务,你需要掌握:1.了解欧拉筛法,2.如何处理列表。
第2关:统计文档中诗人列表
任务描述
本关任务:编写一个程序,将文档《中学诗词》中作者的头歌java多线程基础答案姓名加入一个列表,按作者的姓名排序。显示列表中作者的序号和姓名。 如图所示,标题行显示诗名(或词名空格词牌名)、空格、作者 注意:其他行也可能包含空格,但标题行不包含逗号、句号、感叹号
相关知识
为了完成本关任务,你需要掌握:1.如何打开文件,2.如何遍历文件。 3.如何处理字符串 4.如何向列表中添加信息 5.如何对列表排序。
第3关:使用列表求解约瑟夫环
任务描述
本关任务:编写一个使用列表求解约瑟夫环的问题
约瑟夫问题可以这样描述:n个人按1,2,3,… ,n编号,并顺序围坐一圈。开始按照1,2,3,… ,m 报数,凡报到 m 的出列。直到所有人出列为止。 下图模拟n为8m为4的出列顺序
相关知识
为了完成本关任务,你需要掌握:1.约瑟夫环的算法2.列表的操作
约瑟夫环的算法
建立一个列表lb存放n个值 遍历该列表,从1开始计数,到第m个值将其从列表删除。然后继续从1开始计数,数到第m个值将其从列表删除。 以此类推,直到列表中没有元素为止
第4关:两数之和
任务描述
本关任务: 对于一个不包含重复数字的有序列表 从键盘输入n,查找是否有两数之和等于n,若有则返回两数的下标(找到一组即可且要求其中的一个数尽量小),若所有数均不满足条件则输出“not found”。
第5关:用户数据的增加、删除、查询
任务描述
用户列表和密码列表如下所示 补充程序,实现对用户和密码列表进行增加、删除、查询。 程序显示菜单如下 请选择 1 用户增加 2 用户删除 3 用户查询 4 退出系统
当用户输入1 输入用户姓名和密码后,若用户在列表中,显示用户已存在 无法增加。 若不存在,则将用户名和密码追加到相应的列表中。并显示用户已增加。
当用户输入2 输入用户姓名后, 若用户不在列表中,显示用户不存在 不能删除。若在列表中,则将用户名和密码删除,并显示用户已删除。
当用户输入3 输入用户姓名后, 若用户不在列表中,显示用户不存在 不能查询。若在列表中,则显示密码。
当用户输入4,则退出循环
实验三 元组
第1关:日期格式转换
任务描述
本关任务:编写一个能转换日期格式的小程序。 输入一个数字的日期格式 2020/1/23 转换为美式格式和英式格式
相关知识
为了完成本关任务,你需要掌握:日期格式
日期格式
英式日期格式:日,月,年 美式日期格式:月,日,年 具体举例如下: 8 March,2004(英式) March 8,2004(美式)
第2关:计算购买饮品金额
任务描述
本关任务:编写一个计算购买饮品金额的小程序。
相关知识
为了完成本关任务,你需要掌握:1.如何对元组的各值循环 2.访问二维元组的值
对元组的各个值循环
for 变量 in 元组: 循环体 变量依次取出元组的各个值,执行循环体
访问二维元组的值
访问元组的i行j列的值
第3关:判断句子是否每个英文字母起码出现一次
任务描述
本关任务:编写一个判断输入的英文句子是否个每个英文字母起码出现一次的小程序。 英文中有一种句子,句子中所有英文每个字母至少出现一次,例如The quick brown fox jumps over the lazy dog. 编写一个程序,用来检查一个英文句子是否是符合这个条件.是则显示True 否则显示False(提示 利用集合)
相关知识
为了完成本关任务,你需要掌握:集合的操作
集合的操作
设置集合为空集合 jh=set()
集合jh增加一个元素x jh.add(x)
集合元素的个数 len(jh)
第4关:集合的运算
任务描述
本关任务: 商场举办双节答谢活动,有两项活动可以参加 报名参加活动1的会员编号放在集合1中 报名参加活动2的会员编号放在集合2中 将同时参加两项活动的会员编号,只参加活动1的会员编号,只参加活动2的会员编号分别显示出来
相关知识
为了完成本关任务,你需要掌握:集合的运算
集合的运算
差 S –T 返回一个新集合,包括在集合S中但不在集合T中的元素 交 S & T 返回一个新集合,包括同时在集合S和T中的元素 并 S|T 返回一个新集合,包括集合S和T中所有元素 补 S^T 返回一个新集合,包括集合S和T中元素,但不包括同时在其中的元素
实验四 字典
第1关:元组的使用:这份菜单能修改吗?
任务描述
元组看起来犹如列表,但元组使用圆括号而不是来标识,而且列表的元素可以修改,但元组的元素不能修改。本关介绍元组的常见使用方法以及元组和列表的使用区别。下面用饭店菜单的例子来说明列表和元组使用的应用场景:
现在有一个餐馆要向每个包厢都投放两份菜单,菜单上有4种菜名。我们想将两个菜单上最后一道菜名互换一下,也想快速知道改变后的两份菜单上单词首字母最大的菜名。而我们首先需要判断该用列表的方法还是元组的方法实现这个目标。为了实现这个目标,我们需要先学习元组的相关使用知识以及元组与列表的区别。
相关知识
元组与列表
元组与列表很相似,两者之间的差别在于:
- 列表在初始化后其中的元素还可以进行增删改等操作,但是元组在初始化后其中的元素不能进行更改;
- 列表在赋值时使用方括号,而元组在赋值时使用小括号。
因为元组具有不可变的特性,所以在能用元组替代列表的地方最好都使用元组,这样代码更安全。
第2关:字典的使用:这份菜单可以修改
任务描述
字典和列表一样,都是 Python 中十分重要的可变容器模型,都可以存储任意类型元素。我们将以菜单的例子来说明字典使用的基本知识,餐馆的菜单上不仅包含菜名,菜名后面还必须包含该道菜的价格。如果要用列表实现,就需要两个列表,例如:
给定一个菜名,要查找相应的价格,就先要在中找到相应的位置,再在中找到相应的价格。这种方式效率低下,那么我们是否可以将菜名和价格都存储在一个可变容器中呢?答案是可以的。
在本关中,我们将学习和掌握能够将相关信息关联起来的 Python 字典的相关知识,并完成对包含菜名和价格的菜单的处理操作。
第3关:字典的遍历:菜名和价格的展示
任务描述
Python 字典中包含大量数据,它和列表一样,支持遍历操作。Python有多种遍历字典的方式,可以遍历字典的所有键-值对、键或值。例如,餐馆的菜单包含了菜名和价格等信息,餐馆需要将菜名和价格都展示给顾客,但也有些时候只需要将菜名都展示给厨师,还有些时候只需要将价格展示给收银员,这三种情况就用到了字典不同的遍历方式。
本关的目标是让学习者掌握字典遍历的相关知识和用法,并基于这些知识实现对菜单不同的查找和展示处理。
第4关:嵌套 - 菜单的信息量好大
任务描述
Python 的列表和字典可以存储任意类型的元素,所以我们可以将字典存储在列表中,也可以将列表存储在字典中,这种操作称为嵌套。例如,餐馆中的菜单不仅仅包含菜名和价格,可能还会包含很多其他信息,这时候我们可能就需要采取嵌套的存储方式。
本关任务是让学习者利用嵌套方式存储菜单,让读者掌握 Python 嵌套的基本操作。
实验五 字典的应用
第1关:统计文档中作者作品数量
任务描述
本关任务:编写一个能计算文档《中学诗词.txt》中各位作者作品数量的程序。 遍历文档中每一行,提取作者的姓名,将其作为键加入到字典中,字典的值为作品数量。 然后将字典转换为二维列表,按作品数量的降序排列。
相关知识
为了完成本关任务,你需要掌握:1.字典的操作,2.字典转换为列表。
第2关:候选人票数统计
任务描述
本关任务:编写一个能统计候选人票数的小程序。
多人对若干个候选人投票。 循环输入候选人的名字,将其存入到列表tp中,直到输入end为止 计算每个候选人的得票数,按从高到低显示名次、姓名、票数
例如输入 li zhang wang li li zhang zhang wang li li end
显示结果为 第1名姓名li票数5 第2名姓名zhang票数3 第3名姓名wang票数2
第3关:会员会费计算
任务描述
本关任务:编写一个能计算会员会费的小程序。 某网站可以充值影视会员和体育会员。 影视会员为影视黄金会员(会费199)和影视星钻会员(会费399) 体育会员为体育大众会员(会费98)和体育专业会员(会费198) 会员名单.txt文件如下所示,计算并显示每人的姓名和会费
注意:使用字典来存放不同的会费标准
第4关:职工工资计算
任务描述
编写一个计算职工工资的小程序 列表zg中存储了员工的姓名、基本工资、分公司和部门信息 格式如下(逗号分隔) mike,9200,北京,销售部 各分公司的津贴标准如下:北京5000上海4000广州3000) 各部门的津贴标准如下:销售部2000经理室3000财会部1000 计算每位员工的工资:基本工资加上分公司津贴和部门津贴 提示:可以分别用两个字典存放津贴。
将每位员工的姓名和工资存放到列表yfgz中。再按工资的降序排列,并显示出来。每行的显示格式为 姓名harry工资16700
例如,输入mike,9200,北京,销售部。harry,8700,北京,经理室。 henry,4300,北京,财会部。 tony,6600,上海,销售部。 tom,7400,上海,财会部。 rachel,5200,上海,财会部 。jerry,6500,广州,销售部 。andy,7600,广州,销售部 。rose,6700,北京,财会部
结果为:姓名harry工资16700 ;姓名mike工资16200 ;姓名rose工资12700; 姓名tony工资12600 ;姓名andy工资12600 ;姓名tom工资12400 ;姓名jerry工资11500; 姓名henry工资10300 ;姓名rachel工资10200
第5关:文件币种兑换计算
任务描述
本关任务:编写一个根据汇率兑换文件的汇率进行外币兑换人民币的小程序。 sy9文件夹下《汇率兑换.txt》文件如下图所示 每行显示1外币名称(外币编码)=汇率人民币
根据这些信息建立一个字典,键为外币编码,值为汇率(数值) 例如,第一项为{"HKD":0.9036} 循环输入需要兑换的外币代码和金额 例如hkd1000(可以是小写或大写代码) 显示转换后的人民币金额 人民币903.60(保留两位小数) 如果输入的外币代码错误或数字不对,给出相应的提示 循环输入,直到输入0为止。
第6关:饮品销售计算
任务描述
本关任务:编写一个计算购买饮品金额的小程序。
第7关:统计文件词语的词频
任务描述
本关任务:编写一个能统计文档中词语词频小程序。 宋词文件如下所示:
统计文件中词频最高的15个词语(除了词牌名和作者) 注意:标题行的空格是全角空格" "(可复制此空格) 由于有一个词牌名为东风第一枝,需要将文件中的词牌名删除。(否则会多一个东风)
相关知识
为了完成本关任务,你需要掌握:jieba库分词
jieba库分词
jieba是Python中一个重要的第三方中文分词函数库 Jieba库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组。 jieba.lcut(s) 精确模式对字符串s分词,产生一个列表
第8关:宋词文件词云图片
任务描述
本关任务:根据宋词文件生成一个词云图片文件,存放在sy9文件夹的pict文件夹下的sc1.png 要求图片宽1000高700背景颜色白色最多300个词 注意:字体使用sy9文件夹下的simhei.ttf字体文件
相关知识
为了完成本关任务,你需要掌握:生成词云图片
第六阶段 类与对象
实验一 类的基础语法
第1关:类的声明与定义
任务描述
Python 是一门面向对象的语言。面向对象编程 - Object Oriented Programming(简称 OOP)是一种编程思想,在面向对象编程中,把对象作为程序的基本单元,把程序视为一系列对象的集合。一个对象包括了数据和操作数据的方法,消息传递成为联系对象的方法。
对象可按其性质划分为类,对象也就是类的实例。类是用来描述具有相同的属性和方法的对象的集合,即抽象的集合。例如书这个类,它代表着所有书,它具有书所共有的属性:书名、版本、作者和出版日期,它也具有所有书都共有的方法:销售。本关的任务是让学习者掌握类的定义与声明。
第2关:类的属性与实例化
任务描述
属性就是对类和对象特征的描述,外部以属性来区分不同的类,类具有数据属性和方法。而由类创建出来的实例-对象,具有它所属的类的数据属性和方法。
例如,书本是一个类,它具有作者、书名、出版社等数据属性,它还具有销售这一个方法。《 Python 核心编程》就是书本类的一个对象,它也具有作者、书名、出版社等数据属性和销售这一个方法。本关的任务是让学习者掌握类的属性与实例化。
第3关:绑定与方法调用
任务描述
在 Python 中,如果用实例去调用方法,这种限制就被称为 Python 中的绑定(binging)。没有创建实例时,方法就是未绑定的。本关的任务就是让学习者理解什么是绑定,并学会如何调用方法。
相关知识
调用绑定方法
在定义方法时,总是作为第一个参数传递的。代表实例本身,代表调用此实例的变量,代表调用实例的方法。因为声明方法时已经传入,所以在调用时就不用明确传入了,此时实例是隐含的。调用绑定方法的代码如下:
调用非绑定方法
当调用非绑定方法的时候,因为没有创建实例,所以需要用类去调用方法。在调用的时候需要显式地传入一个实例参数。例如:
如果您想了解更多绑定与方法调用的相关知识,请参考:第十三章。
第4关:静态方法与类方法
任务描述
Python 中的实例方法由实例调用,且隐含传入的参数为实例本身。而静态方法在类中定义,无需参数,直接由类调用。类方法由实例调用,传入的参数为类本身,通常用作为参数名字。本关的任务是让学习者掌握静态方法与类方法的声明与使用。
第5关:类的导入
任务描述
当我们在写代码时,经常会遇到一种情况:我们要用到的一些功能已经在别的模块里定义过了,如果我们重新写一遍这个功能必然会使得代码冗长且效率低下。于是我们使用导入的方法将其它模块里的功能导入到自己的代码里,让我们在编写代码时能够使用。本关的任务就是让学习者者掌握如何导入类。
实验二 类的继承
第1关:初识继承
任务描述
在面向对象编程中,有一种机制叫做继承。通过继承,子类可以继承其父类所有的属性和方法,这在很大程度上增强了代码的重用。以下场景便模拟了继承的现实场景:在自然界中存在着许多的动物,动物间有许多的共性。比如:呼吸、奔跑、觅食等,但是它们之间也存在着不同之处,比如鱼会游泳、豹子会爬树……
在上面这个场景里,动物就是父类,它具有着所有动物都有的共性,而鱼和豹子是子类,它们不仅具有共性:呼吸、奔跑、觅食,还有着自己独特的特征:游泳、爬树。本关的任务是让学习者掌握 Python 中类的继承机制。
相关知识
父类
父类也称基类,其声明方法与一般的类的声明方法一样。父类中存在着一些公共的属性和方法,子类继承于父类。
子类
子类继承于父类,拥有父类中的属性和方法,它自己也可根据实际情况声明一些属于自己的属性和方法。
第2关:覆盖方法
任务描述
在子类继承父类的方法时,若子类需要这个方法具有不同的功能,那么可以通过覆盖(overriding)来重写这个方法。本关的任务是让学习者掌握通过继承覆盖方法。
第3关:从标准类派生
任务描述
在 Python 中有6种标准数据类型,分别为:(数字)、(字符串)、(列表)、(元组)、(集合)和(字典)。而根据内存中的内容是否可变,分为可变类型与不可变类型。其中,数字、字符串、元组和集合被称为不可变类型,列表和字典称为可变类型。
对标准类型的子类化是一个很重要的知识点,本关的任务就是要让学习者掌握标准类型子类化的方法。
第4关:多重继承
任务描述
在 Python 中,多重继承就是允许子类继承多个父类,子类可以调用多个父类的方法和属性。但是,当多个父类拥有相同方法名的方法时,我们通过方法名调用父类方法就有一定的顺序。本关的任务就是让学习者掌握多重继承。
实验三 类的其它特性
第1关:类的内建函数
任务描述
对于类、实例和其它对象而言,存在着一些内建函数,这些内建函数无需定义,可直接调用。本关的任务就是让学习者掌握并能使用这些内建函数。
第2关:类的私有化
任务描述
在默认的情况下,Python 中的属性都是公开的(public),这就意味着此类所在的模块和导入了这个类的模块都可以访问到这个类中的属性和方法。但有时我们不希望外界直接访问某方法或属性,此时我们可以将这个方法和属性私有化。本关的任务就是让学习者掌握类的私有化。
第3关:授权
任务描述
包装在 Python 中经常用到,包装就是把已存在的程序重新打包,使这个程序更加适合当前应用环境。而授权是包装特有的一个属性,通过授权,可以使当前类调用传入对象已存在的属性。本关的任务就是让学习者掌握 Python 中的包装与授权。
第4关:对象的销毁
任务描述
对象销毁也称垃圾回收,很多语言都有自己的垃圾回收机制。Python 的垃圾回收机制使用了引用计数这一机制来追踪内存中的对象。本关的任务让学习者掌握 Python 的对象销毁机制。
实验四 面向对象编程应用
第1关:按揭贷款——定义抽象类
任务描述
本关主题是利用 面向对象编程技术,对按揭贷款的问题进行面向对象建模与编程。请仔细阅读下面“相关知识”中的内容,理解每个函数的所需完成的操作,补全 函数和 类中定义的 、 和 三个函数。
第2关:三种贷款方式建模
任务描述
基于上一关实现的 类,利用继承机制,为三种贷款方式建模。分别补全三个子类 、 、 中的 函数以及 子类中的 函数。
相关知识
基于上一关介绍的三种贷款方式:
- 固定利息率,不支付任何点;
- 固定利息率,支付一定的点;
- 可变利息率,低引诱利率,随后高利息率。
以 为父类,定义三个子类 、 和 ,这三个子类都利用基类 的 函数进行初始化,然后在 属性上填上自己的贷款类型描述。
类有两个利率,新增了 和 两个属性,在 到期后按 利率支付利息。此外, 在还贷之前已经支付了一定比例的首付,其每月还贷金额是不同的。
中的 即为首次支付的比例,例如 ,则 初始化为 。 的每月还贷金额分为两个时期,请注意这两个时期的利率是不一样的。其初始化函数中的 和 。
第3关:比较各种贷款的利弊
任务描述
本关利用上一关实现的三个类,比较三种贷款方式在各自利率,同等额度贷款、同等时限下,最后还给银行的总金额。
相关知识
请补全 函数。 函数的各参数说明如下:
:贷款总额; :贷款年限; :固定利息率,不预付点数贷款方式的利息率; :预付点数; :固定利息率,但预付一定点数贷款方式的利息率; :可变利息贷款的引诱利率; :可变利息贷款的第二种利息率; :引诱利息月份
第五阶段 函数与模块
实验一 Python函数(一)
第1关:内置函数 - 让你偷懒的工具
任务描述
我们在编程过程中会用到很多函数,但我们不需要每个函数都需要自己去编写,因为内置了很多十分有用的函数,我们在编程过程中可以直接调用。
本关目标是让读者了解并掌握一些常用的内置函数的用法。
第2关:外置函数numpy-科学计算工具※
任务描述
本关目标是让读者通过了解一些三角函数的使用,来理解外部库与函数。
相关知识
我们在进行科学公式计算编程过程中会用到很多科学函数,但是我们不用担心不会用,因为在中存在一个非常强大的工具,下面过程中使用三角函数作为引子,带领大家了解库与中的画图工具。
第3关:函数正确调用 - 得到想要的结果
任务描述
函数被定义后,本身肯定不会自动执行的,只有在被调用后,函数才会被执行,得到相应的结果。
本关的目标是让读者了解并掌握函数调用的相关知识。
第4关:函数与函数调用 - 分清主次
任务描述
我们一般将字符串、列表等变量作为参数进行函数调用。但函数本身也是一个对象,所以我们也可以将函数作为参数传入另外一个函数中并进行调用。
本关的目标是让读者了解并掌握函数作为参数传入另外一个函数中并进行调用的相关知识。
相关知识
我们要学习函数与函数之间的调用,就应该对函数调用的顺序与参数有清晰的认识,我们将会从五种情况让读者了解并掌握函数与函数之间的调用的基本关系和联系。
实验二 Python函数(二)
第1关:函数的参数 - 搭建函数房子的砖
任务描述
当我们需要在程序中多次执行同一类型的任务时,不需要反复编写代码段来完成任务,而是可以利用函数工具来大大方便我们的编程工作。函数是可重复使用的,用来实现相关联功能的代码段。
本实训的目标是让读者了解并掌握函数结构的相关知识,本关的小目标则是让读者先了解并掌握函数参数的有关知识。
第2关:函数的返回值 - 可有可无的return
任务描述
函数在进行运算处理后,返回的值被称为返回值。函数返回的值是通过语句执行。返回值能够让我们直接得到函数处理的结果,而不必关心函数内部复杂繁重的运算过程,大大提高了编程效率。
本关的主要目标是让读者了解并掌握函数返回值的相关知识。
相关知识
语句将值返回到调用函数的出口,函数中一定要有返回值才是完整的函数。如果我们没有在函数中定义函数返回值,那么程序会自动让函数返回一个结果,该结果是对象,而对象表示没有任何值。
第3关:函数的使用范围:Python作用域
任务描述
函数是有使用范围的,在一个模块中,我们可以定义很多函数和变量,但我们希望有的函数和变量别人可以使用,有的函数和变量仅仅可以在模块内部使用。这就是作用域的相关问题。
本关的目标就是让读者了解并掌握函数的使用范围,即作用域的相关知识。
第4关:函数综合训练※
任务描述
本关任务:利用函数的知识完成如下习题。
实验三 函数的应用
第1关:定义判断质数的函数
任务描述
本关任务:编写一个能判断质数的函数。若参数是质数,返回true;否则返回false。 主程序输入一个数n,然后调用该函数判断其是否是质数,是则显示n是质数,否则显示n不是质数。
相关知识
为了完成本关任务,你需要掌握:如何定义函数。
第2关:绝对质数
任务描述
本关任务:编写一个输出所有两位数的绝对质数的小程序。 每行显示3个数,每个数后面四个空格 注意:isprime函数已经定义在本文件夹的程序isprime.py中
相关知识
为了完成本关任务,你需要掌握:1.什么是绝对质数,2.如何调用函数。
第3关:验证哥赫巴德猜想
任务描述
本关任务:验证100之内大于2的偶数符合哥赫巴德猜想。 哥赫巴德猜想是任一大于2的偶数都可写成两个质数之和。 注意:调用isprime函数(在isprime.py文件中)判断是否质数 每行显示五个式子。每个式子的整数显示两位,每个式子后面显示tab( )
第4关:判断三角形类型
任务描述
本关任务:编写一个根据三条边长判断三角形类型的函数。 若不能构成三角形,返回0. 若构成等边三角形,返回1. 若构成等腰三角形,返回2 若构成直角三角形,返回3. 若是其他三角形,返回4.
在主程序中,根据函数的返回值,显示对应的三角形类型
相关知识
为了完成本关任务,你需要掌握: 1.如何定义函数 2.如何调用函数
第5关:成语字典精确查询
任务描述
本关任务:编写一个能查询成语字典的小程序。 sy10文件夹的成语.txt的图片如下图所示
第6关:成语字典模糊查询
任务描述
本关任务:编写一个能查询成语字典的小程序。
sy10文件夹的成语.txt的图片如下图所示
第7关:成语接龙小游戏
任务描述
本关任务:编写一个成语接龙小游戏。
在sy10文件夹下,有一个成语.txt文件,如下所示
在上述成语字典程序中,增加一个成语接龙的选项。
游戏规则如下:
用户输入一个成语,若用户输入的不是文件中的成语,则显示“非法成语,你输了”
若输入正确成语,系统会到成语文件中找到以你输入成语的最后一个字开始的成语。
若系统没有找到,则显示“你赢了。”退出接龙。
若系统找到了,则显示该成语。
用户继续输入以该成语结尾的字开始的成语,若输入的成语符合要求,则系统继续接龙。
若成语没有接龙,系统提示“没有接龙"
实验四 特殊函数
第1关:递归函数 - 汉诺塔的魅力
任务描述
在 Python 函数内部,我们可以去调用其他函数。所以如果一个函数在内部调用自身,这个函数我们就称为递归函数。本关我们将以汉诺塔的例子来感受递归函数的方法与应用。
图 1
本关目标就是通过对汉诺塔问题的探讨,让学习者了解并掌握递归函数的相关知识。
第2关:lambda 函数 - 匿名函数的使用
任务描述
在 Python 编程中我们除了可以用def语句来定义函数之外,还可以使用lambda来定义。我们用def语句来定义函数时需要指定函数名字,而使用lambda来定义函数时则不需要。lambda函数是 Python 中一个非常独特的函数类型。本关目标就是让学习者了解并掌握lambda函数的相关知识。
相关知识
lambda函数又称匿名函数,匿名函数顾名思义就是没有名字的函数。可能我们现在还无法接受,函数没有名字怎么能行?但实际上是可以的。当我们在编程过程中只是临时使用某些函数,而且这些函数的逻辑功能也很简单时,就没有必要非给这些函数取个名字不可。
第3关:Map-Reduce - 映射与归约的思想
任务描述
Python 中有两个非常常见的内置函数:map()和reduce()函数。这两个函数都是应用于序列的处理函数,map()用于映射,reduce()用于归并。本关目标就是让学习者了解并掌握map()和reduce()函数的相关知识。
实验五 模块
第1关:模块的定义
任务描述
在 Python 程序的开发过程中,为了代码维护的方便,我们可以把函数进行分组,分别放到不同的.py文件里。这样,每个文件包含的代码就相对较少,这个.py文件就称之为一个模块(Module)。本关的目标是让学习者了解并掌握 Python 模块定义的相关知识。
相关知识
模块能够让我们有逻辑地组织 Python 代码段,模块中能够定义函数、类和变量,模块里也可以包含可执行的代码。
第2关:内置模块中的内置函数
任务描述
我们在安装好了 Python 配置文件后,也将 Python 本身带有的库也安装好了, Python 自带的库也叫做 Python 的内置模块。Python 的内置模块是 Python 编程的重要组织形式,内置模块中的内置函数也极大方便了编程过程中对函数等功能的使用。本关的目标是让学习者了解并掌握 Python 内置模块和内置函数的相关知识。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18852.html