第四册第二单元 Python 程序设计
[复习简要题纲]
Python 语言的特点、启动Python、Python 编程模式
变量、数据类型及其运算
关系运算符和逻辑运算符、算法、选择结构、if 语句的一般格式
for 循环的常用格式、for 循环的应用、for 循环的嵌套
while 语句的一般格式、while 循环的应用
内置函数、自定义函数
[复习详细提纲]
Python语言的特点:①语法简洁,简单易学;②免费、开源;③使用范围广;(可以进行Web 开发、游戏编程、数据分析等,如国内的豆瓣网、知乎网和果壳网等很多大型网站都是用Python语言搭建起来的。)
④可移植性强(几乎可以在目前所有的主流操作系统平台上运行,比如Windows、Mac OS、Linux 等)
在Python的IDLE集成开发环境中,Python 编程有两种模式:交互模式和文件编辑模式。
二者区别:①交互模式下编写的代码无法保存;若要将程序保存下来,需要进入IDLE 的文件编辑器中编写,可将程序保存为以.py 为扩展名的文件。②交互模式的代码是输入一行,执行一行,而文件编辑模式下直接运行.py文件是一次性执行该文件内的所有代码。
7.3计算机语言分为三类:机器语言(计算机能够直接识别和执行的唯一语言)、汇编语言(符号语言,相对于机器语言易于识别和记忆)、高级语言(Python、C、C++、Java)
变量:在编程语言中,变量是指某个数据存储空间的名称,其中的值是可以改变的。一个程序中可能会用到多个变量,为了区分不同的变量,必须给每个变量(存储空间)取一个名字,即变量名。
变量的命名规则:
①必须以字母或下划线开头②区分大小写③禁止使用Python的关键字作为变量名。变量的赋值:
在Python 中,给变量赋值一般由赋值语句来完成。无论是数字型变量,还是字符串变量,都可以参与运算。Python 中的表达式是数值、变量和操作符的组合,单独的一个值或变量也可以看作表达式,例如a=3、b=2*a+4、c=b。
数据类型及其运算:最常用的数据类型有数字型和字符串型。
①数字型数据:常用的数字型包括整数(int)和浮点数( oat)。
Python 中的“+”、“-”、“*”、“/”运算符与数学中的加、减、乘、除号一一对应,运算法则也与数学运算一样,“%”、“//”、“**” 运算符为取模、取整除、乘方。(8%3余数为2,8//3商为2,2**3结果8。2*3**3结果为54,6%4**2结果为6,乘方优先级高。)遵循“先算括号内,再算括号外”“先算乘除,后算加减”的顺序。
②字符串型数据:在Python中,字符串用一对单引号’ ’或一对双引号” ”引起来。字符串类型数据可以进行“+”(拼接)、“*”(重复)运算。例如:’富强 ’+’ 民主’,结果为’ 富强民主’;’诚信 ’*3,结果为’ 诚信诚信诚信’。
常用函数:
print()输出函数
input()输入函数,括号中可以使用字符串作为提示信息。执行此输入函数时,获得一个字符串型数据。 int() 强制类型转换函数,能把input()获得的字符串型数据转换为整数数据。
float()强制类型转换函数,能把input()获得的字符串型数据转换为浮点数据。str()强制类型转换函数,能把input()获得的数据转换为字符串数据。
例题8.3.1:为了避免自己乱花钱,小智决定把过年长辈给的压岁钱存到银行,假定年息为2.5%,请问一年 后的利息是多少?
例题8.3.2:实现数据的交换
8.4 *Python中的标准数据类型
数字型(number)、字符串型(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)列表(list) 定义“列表名=[元素1,元素2,…,元素n]”,是有序的数据类型,下标从左到右编号0、
1、2…n-1,下标从右到左编号-n、-(n-1)、…-2、-1,使用“列表名[下标]”
元组(tuple)定义“元组名=(元素1,元素2,…元素n)”,如同不可修改的列表。使用“元组名[下标]” 字典(dictionary) 定义“字典名={键1:值1,键2:值2,…键n:值n}”也叫关联数组,每个元素由键(key)
和值(value)两部分组成。使用“字典名[键?]”
集合(set) 定义“集合名={元素1,元素2,…元素n}”,集合元素是唯一、无序和不可改变的。
9.1 关系运算符和逻辑运算符
比较两个量的运算称为关系运算。
关系运算符:小于<、大于>、小于等于<=、大于等于>=、等于==、不等于!=
例如:0 and 0 结果为:0。False and True 结果为:False。
10 and 20 and 40结果为:40。
10 or 20 结果为:10。0 or 10 or 20 结果为:10。
逻辑运算符:逻辑非(not)、逻辑与(and)、逻辑或(or)。根据以上操作可以看出:
①逻辑与:a and b,若a为False,a and b为False,若a为0,a and b为0, 否则返回b的值。
and:找到并返回第一个False(假)或最后一个True(真) (从左往右找)
②逻辑或:a or b,若a 为True 或非0,则返回a 的值,否则返回b 的值。
or:找到并返回第一个True(真)或最后一个False(假) (从左往右找)
③逻辑非:若a 为True 或非0,则not a 返回False,否则返回True。考试中,可以到IDLE交互模式进行测试验证。
9.2.算法:是在有限步骤内求解某一问题所使用的一组定义明确的规则,即解决问题的方法。
五个特征:有穷性、确切性、输入项(0 或多个输入)、输出项(一个算法有一个或多个输出)和可行性。描述方法:自然语言法、流程图法、伪代码法和 PAD 图等,其中最普遍的是流程图法。
程序是算法的代码实现,程序设计有三种基本结构:顺序结构、选择结构和循环结构。
选择结构:
if语句的一般格式:
if 条件表达式: 语句块 1
else:
语句块 2
多分支if语句的一般格式:
if 条件表达式 1: 语句块 1
elif 条件表达式 2: 语句块 2
……
elif 条件表达式 n: 语句块 n
else:
语句块 n+1
例题9.3.1:
单分支if语句:为了防盗, 小智家的门锁最近换成了智能密码锁, 他家的密码是“xy#123”,小智想设计一个验证密码的程序请你帮帮他。
节日期间,某商场推出购物优惠活动:消费不超 100 元的,
按 85 折优惠,超过 100 元的,超过部分按 6 折付费。请完善下面的程序,完成商场的自动计费工作。
如果条件表达式的条件不止一个,就需要用到逻辑运算。 例题9.3.2:
多分支if语句:小智学校里的考试成绩都是以等级制呈现给学生的,学校规定:85 分及以上为A等级,75 分及以上为B 等级,60 分及以上为C 等级,60分以下为D 等级。请编写程序实现该操作。
在现实生活中,有时遇到的问题会很复杂,我们要面对的可能不止两种选择, 需要更多的分支,这就需要用到多分支if 语句。第2题的代码用多分支if 语句就可以改为如下图所示的形式。
例题9.3.3:
多分支if语句:小智想编写一个猜数游戏,让妹妹猜。妹妹说一个数, 如果妹妹说的数大, 则输出“猜大了!”,如果妹妹说的数小,则输出“猜小了!”,如果正好相等,则输出“猜对了!”,请帮小智编写程序实现该操作。
*常见错误及原因:
①语法错误:如果把关键字、数字、括号、单引号、双引号漏输或输错,系统就会报错,这属于语法错误。 例如,下面的程序第 2 行最后缺少一个右括号,运行时会弹出语法错误提示,如图所示。
②运行错误:在程序运行过程中出现的错误属于运行错误。比如内存用尽、除数为零的除法等都可能导致异常。Python 为了把错误的影响降到最低,提供了专门的异常处理语句。
③语义错误:也叫逻辑错误,如果你编写的程序完全符合Python 的语言规范,不会出现语法错误,但是在逻辑上有错误,程序结果也会是错误的。
循环结构可分为:计数循环(for循环)和条件循环(while循环)
for循环的常用格式
for 循环的常用格式:
for 循环变量 in range(初值,终值,步长):语句块
range()函数一般用在for循环中,用来生成多个连续的整数,其基本格式如下: range(终值) 生成的整数范围为0~终值-1
range(初值,终值,步长)
for循环的应用
例题10.2.1:输出0到100 之间的偶数。
分析:用for 循环从0数到100,用if 语句对每个数进行奇偶判断。
例题10.2.2:输出1到100 之间的偶数。分析:
方法1 用for 循环从1数到100,用if 语句对每个数进行奇偶判断。
方法2 用for 循环从2 数到101,用步长控制循环次数。
例题10.2.3:,计算n!(0< = n <= 20)。
注:阶乘是一种运算符号,自然数n 的阶乘写作n!。一个正整数n 的阶乘等于1 乘以2 乘以3 乘以4 一直乘到n,亦即n!=1×2×3×...×n,并且规定0!=1。
例题10.2.3:国际象棋放麦粒
在印度有这样一个古老的传说:宰相达依尔向印度舍罕王进献了非常好玩的国际象棋游戏,国王非常高兴,准备赏赐他,宰相说:“陛下,我想向您要一些粮食,将它们分给贫困的百姓。请您派人在这张棋盘上按规律放一些麦粒,第一格放1粒,第二格放2粒,第三格放4粒……以后每一格的数量都比前一格增加一倍,摆满64格就够了。”。你能算出这些麦粒的数量吗?4000 粒麦子的重量大约为1公斤,你能算出宰相请求的麦子大约是多少公斤吗?
分析:第1格放1粒麦粒,第2格放2粒麦粒,第3格放4粒,第4格放8粒,以后每一格都是前一格的2倍,则第i格需放 粒麦子,将每个格子内的麦粒数累加在一起,则可得到麦粒总数。用总数除以 4000,则可求出麦子的公斤数。
在循环语句中,有时需要提前中断当前循环。Python 提供了两种中断循环的语句:break 和continue。break语句可跳出当前循环,即提前结束当前循环;continue 语句可跳过当前循环体剩余语句,回到循环开始处进行下一轮循环。
例题10.2.4:判断一个整数是否为质数,是则输出“yes”,不是则输出“no”。
分析:质数又称为素数。在正整数中,除了 1 和它本身外,不能被其他自然数整除的数,称为素数。对于任何一个正整数n,若2 至n-1 之间的数均不能被n整除,则可判断n 为素数。
代码注释用于为程序添加说明性文字。在Python 中,单行注释用“#”开始,“#”之后的内容在程序运行时不会被执行。单行注释可放在语句末尾,也可单独占一行。
例题10.2.5:利用for 循环,计算输出s=1+2+3+…+100 的值。
for 循环的嵌套
如果在一个循环语句中包含另一个循环语句,则称为二重循环。若在第二重循环中又包含一个循环, 则称为三重循环,……,继续一层套一层,称为多重循环语句,也叫循环嵌套。利用循环的嵌套可以解决一些更复杂的问题。
例题10.3.1:输出九九乘法表。
分析:九九乘法表由 9 行 9 列组成,编写程序时,需用外层循环控制行数, 内层循环控制列数, 所以需要用到循环的嵌套。
外层循环一次,内层循环最多执行(9)次,当i=9时。
例题10.3.2:百钱买百鸡问题出自我国古代数学家张丘建的《算经》,用 100 文钱买100 只鸡,公鸡5 文钱一只,母鸡3 文钱一只,小鸡1 文钱3 只,问可以买公鸡、母鸡和小鸡各多少只
例题10.3.3:猜测真实数据:某单据因日久破损,一数据变得残缺不全,看不清千位数和十位数,只能推测为 14x9x1,已知该数据是 77 的倍数,请设计一个程序,输出所有满足条件的数据。
*for循环可以遍历任何一个序列中的元素,如列表、字符串或字典。
while循环
执行while循环时,先判断条件,若条件成绩则执行循环语句块。
例题11.2.1:小智学校每年植树节都有志愿者服务,规定每人第一年种1棵,第二年种 2棵,依次类推,编程计算需要连续几年才能种够10 棵树。
分析:因为不知循环次数,所以用while 循环。
例题11.2.2:求正整数a 和b 的最大公约数。
分析:欧几里得算法。欧几里得算法也叫辗转相除法,具体做法如下:先求a 除以b 的余数r,然后除数作为被除数,余数作为除数,继续相除,直到余数为零,除数即为两数的最大公约数。
例题11.2.3:利用倍增法,求两个数的最小公倍数。(倍增法是指两数之一不停自加,直到能被另一数整除)。
函数random.randint(m,n)可以随机产生一个值在m与n 之间的整数。若要使用random 模块中的函数, 需要在程序中使用import random 语句导入random 模块。
例题11.2.4:让计算机随机生成一个规定范围内的数字 a,用户去猜这个数字是多少?用户猜测的数据b 通过键盘输入,程序将a 和b 进行比较,如果a 大于b,输出“猜小了!”;如果a 小于b,输出“猜大了!”;如果a 等于b,输出“猜对了!”,并展示你猜了多少次猜中了!
分析:a 和b 有三种情况:(1)a>b;(2)a例题11.2.5:小智受猜数游戏的启发,又编写了一个数字密码游戏,数字密码满足下面的规律: 0,1,1,2,3,5,8,…,请编程输出前20 个数字密码分别是什么?
分析:观察数字找规律,可发现,从第3个数字开始,以后的每个数字均为其前面两个数字的和(著名的斐波那契数列)。
例题11.3.1:角谷猜想:所谓角谷猜想,是指一个自然数如果为奇数,就将它乘 3 再加 1,如果是偶数, 就将它除以 2,经过若干次操作后一定能变为 1。给定一个自然数n,请你输出n 变为1 的过程。
11.4* 功能强大的模块
Python中模块是一个包含变量、函数或类的定义的程序文件。
Python中模块按照来源不同,分为:系统自带模块、第三方模块和用户自定义模块。 例如:
import time
for i in range(10,0,-1):#每隔1秒输出1个数,实现倒数10个数print(i)
time.sleep(1)
from math import * #导入math模块中的全部函数ceil(3.3) #向上去整
fabs(-6.5) #求绝对值
代码复用调函数
12.1.1内置函数中的数学函数和字符串函数。
数学函数:绝对值函数abs(x)、求乘方函数pow(x,y) 字符串函数:
len(str)函数:返回字符串长度
isdigit()函数:检测字符串是否只由数字组成,是则返回True lower():转换字符串中所有大写字母为小写
upper():转换字符串中所有小写字母为大写max(str):返回字符串str中最大的字母min(str):返回字符串str中最小的字母
find(str,beg,end):返回字符串在指定的beg和end范围内是否包含子字符串str,如果包含str返回开始的索引值,否则返回-1。
12.2.认识自定义函数(def) 格式:
def 函数名(参数列表): 函数体
return 返回值
注:函数名命名规则和变量一样。参数列表可以没有或有多个,用“,”号间隔,return语句可省略。
12.3函数的应用
例题12.3.1请利用函数编写程序,在屏幕上打印输出如下的图形。
分析:我们可以定义一个函数triangle(),用于打印输出一个由字母A组成的三角形。重复调用这个函数, 即可打印输出上面的图形。
例题12.3.2求n!(n!=1*2*3*…n)
分析:由n!定义可知,n!=(n-1)!*n,例如:3!=1*2*3=2!*3。
在这个程序中,fac(m) 函数的参数是 m,称为形式参数(简称形参),语句“jiec=fac(n)”中的参数 n 是实际参数(简称实参)。在程序运行时, 运行到本条语句时,进行函数调用,实参 n 传值给形参 m,利用return 语句传递执行结果 sum 给其所调用程序的变量 jiec。
在 fac(m) 函数中的变量 sum,它的作用范围是 fac(m) 函数内部,不能在 fac(m) 函数外使用,称为局部变量。相对应的,函数外定义的变量可以被多个函数引用,被称为全局变量。利用全局变量,n!的程序代码如下:
例题12.3.3写一个判断素数的函数。
例题12.3.4已知b1,b2,b3,b4,b5,b6,b7各边长,求多边形的面积。
分析:计算多边形的面积,一般做法是先将其划分为多个三角形,然后利用海伦公式计算每个三角形的面积,将所有三角形的面积加起来即为多边形的面积。 海伦公式:p=(a+b+c)/2(a,b,c为三角形的三条边,p为三角形周长的一半)
S=
自定义函数必须先定义才能被调用,否则会出错。
例题12.4.1自定义函数判断字符串是否为回文(回文字符串是指顺读和倒读都一样的字符串,如“aba”)。
例题12.4.2如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数。试求出所有 两位数中的绝对素数。
12.5* 文件操作
利用内置函数open()用来打开文件,基本格式:myfile=open("文件名","打开方式")