版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计程序设计语言(高级语言)PythonCC++JavaJavaScriptSwiftGoVB课程简介Python语言由于其免费开源、简洁易懂、有丰富的扩展模块与可嵌入性等诸多优点,在大数据分析、工程计算、系统开发等方面优势突出,已成为新热点。本课程是针对非计算机专业的一门培养学生程序设计能力的技术基础课。学习方法课前预习上课认真听讲实验:设计,编程,调试动手编程多分析阅读别人写的程序多自己动手编写,调试程序(
)(
)
(
)
(
)
(
)自己教学安排总学时64(1~16周)上课40学时上机24学时课程安排:周二(一定上课)周五(主要上机:图西201,偶尔上课)主讲:马杨珲老师电话656536)办公室:小和山C1-506钉钉群:扫码进入第1章Python语言基础计算机带来的改变现代社会中无处不在的计算机计算机系统分硬件系统和软件系统程序程序就是为完成某一任务而制定的一组操作步骤。按该操作步骤执行,就完成程序所规定的任务。程序举例(优秀团员评比):第1步,发通知让同学申报或同学推荐;第2步,召开评审会议;第3步,将申报或同学推荐候选人材料交评委评阅,并投票评选出“优秀团员”。用计算机语言设计的程序,就是为计算机程序。程序设计语言机器语言10001011110000000100101010001110汇编语言MOVax,1234hADDax,bx高级语言C、Java、、C++、C#、Python、FORTRAN、Basic等低级语言程序的执行机器语言程序的执行——无需翻译,可以被机器直接执行汇编语言程序的执行高级语言程序的执行编译解释程序设计方法概述程序设计方法的发展可以划分以下三个阶段:1.早期的程序设计2.结构化程序设计3.面向对象的程序设计计算思维计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。学会使用程序来解决这个问题,锻炼计算思维。认识Python1989年
创始人:Guido1991年
推出
Python的第一个公开发行版2001年开始:Python2.x2008年开始:Python3.xPython语言的特点简单,所以易学。开源,拥有众多的开发群体。完全的面向对象特性。良好的跨平台性和可移植性。可扩展性和丰富的第三方库。Python语言编写的Hello程序:
print("HelloWord")C语言的Hello程序
#include<stdio.h>
intmain(void)
{
printf("HelloWorld\n");
return0;
}Python语言的应用方向常规软件开发WEB开发科学运算数据分析图像处理人工智能网络爬虫……Python开发环境配置下载地址:/downloads/Python开发环境配置安装:确保勾选Python的集成开发环境IDLE——Python安装包内置有开发环境Python的集成开发环境PyCharm——面向专业开发Python的集成开发环境Thonny——面向初学者下载Thonny下载地址:/根据自己的环境选择对应的版本,比如Windows安装ThonnyThonny开发环境脚本文件编辑区域Shell区域助手区域运行Python程序:交互模式
(提示符>>>)脚本模式引例:已知正方形的边长,求正方形的周长。a=13c=a*4print(c)赋值语句:a是变量,等号是赋值号。该语句表示让变量a代表13这个数据对象赋值语句:a*4表达式的计算结果是创建了一个数据对象让变量c代表这个数据对象打印语句
importmatha=3b=4c=5x=(a+b+c)/2#x为三角形周长的一半s=math.sqrt(x*(x-a)*(x-b)*(x-c))
#s为三角形的面积print(s)注释:不会被执行的代码说明。(1)#引导的单行注释(2)三个连续引号括起来的多行注释变量赋值构建循环控制分支调用函数Python程序语句模块表达式创建对象以上代码,保存文件为area.py,那么这个程序就是由模块area和数学模块math组成。Python对象数据对象就是对现实世界信息的抽象。对象具有:(1)标识(identity)——用于一个对象区别于其他对象的标志(2)类型(type)——用于表示对象所属的数据类型(类)(3)值(value)——用于表示对象具体的值。可以通过赋值语句将对象绑定到变量。变量和标识符Python中,模块、函数、变量的名称必须是有效标识符:由字母、数字、下划线以及大多数非英文语言的字符组成数字不能开头有大小写之分不可以使用Python预定义标识符不可以使用Python关键字Python包含许多内置的类名、对象名、异常名、函数名、方法名、模块名、包名等的预定义名称。Python关键字andasassertbreakclasscontinuedefdelelifelseexceptFalsefinallyforfromglobalifimportinislambdanonlocalnotorNonepassraisereturnTruetrywhilewithyield
变量和赋值赋值即定义:第一次给变量赋值,就是对变量的定义importmatha=3b=4c=5x=(a+b+c)/2s=math.sqrt(x*(x-a)*(x-b)*(x-c))print(s)变量:是数据对象的引用语句是Python程序的过程构造块,用于定义函数、定义类、创建对象、变量赋值、调用函数、控制分支、创建循环等。包含简单语句和符合语句。(1)Python对缩进要求非常严格,必须严格对齐。在复合语句中,通过缩进来控制语句的层次(2)使用换行符分隔,一般情况下,一行一条语句。(3)在行尾使用续行符反斜杠“\”表示下一行代码仍属于本条语句。(4)分号(;)用于在一行书写多条语句。语句的层次缩进(复合语句)importmatha=3b=4c=5ifa+b>canda+c>bandb+c>a:x=(a+b+c)/2s=math.sqrt(x*(x-a)*(x-b)*(x-c))print(s)头部语句构造体语句块输入输出语句importmatha=3b=4c=5x=(a+b+c)/2s=math.sqrt(x*(x-a)*(x-b)*(x-c))print(s)输出函数print()基本语法格式:
print(value,…,sep='',end='\n’)上述参数的含义如下:(1)value是用户要输出的信息列表,逗号分隔。(2)sep用于设置多个要输出信息之间的分隔符,其默认的分隔符为一个空格。(3)end是一个print()函数中所有要输出信息之后添加的符号,默认值为换行符。输入函数input()基本语法格式:变量=input([prompt])eval()函数——以Python表达式的方式解析与执行该字符串,并将执行结果返回参数可选,表示提示信息a=input()b=input()c=a+bprint(c)a=eval(input())b=eval(input())c=a+bprint(c)IPO程序设计方法Input:输入——input()函数Process:计算处理——具体处理Output:输出——print()函数importmatha=eval(input())b=eval(input())c=eval(input())x=(a+b+c)/2s=math.sqrt(x*(x-a)*(x-b)*(x-c))print(s)Python中的模块标准库——安装的python后自带的功能模块。第三方库——是由其他的第三方机构,发布的具有特定功能的模块,需要安装才能使用自定义模块——编程员自行编写,然后使用的模块包——功能相近的模块可以组成包turtle简介turtle(海龟)库是Python语言中一个很流行的绘制图形的函数库,用于绘制线、圆及其他形状。turtle绘图就像海龟在沙滩上爬行,留下的轨迹。这个绘图的海龟有三个属性:位置、方向和画笔导入模块:importturtle绘制图形:turtle.forward(200)创建窗口:
turtle.setup(width,height,startx,starty)widthheightstartxstarty画笔的控制方法功能penup()/pu()/up()提起画笔,用于移动画笔位置,与pendown()配合使用pendown()/pd()/down()放下画笔,移动画笔将绘制图形pensize()/width()设置的画笔的宽度,若为None或者为空,则返回当前画笔宽度pencolor(colorstring)/pencolor(r,g,b)设置画笔颜色,若无参数则返回当前画笔颜色speed(speed)设置画笔移动速度,取值为0到10的整数begin_fill()开始填充end_fill()结束填充turtle运动控制的方法方法功能fd(distance)/forward(distance)向前移动distance距离,单位为像素backward(distance)/bk(distance)/back(distance)向后移动distance距离left(angle)向左转动,参数degree用于指定画笔向右与向左的角度right(angle)向右转动circle(radius,extents,steps)绘制圆弧,参数radius用于设置半径,extent(可选)用于设置弧的角度,steps(可选)确定绘制正多边形,若steps=3,绘制正三角形turtle坐标系统(0,0)xy(50,150)和坐标系统相关的方法方法功能goto(x,y)移动到指定位置,可以使用x、y分别接收表示目标位置的横坐标和纵坐标seth(angle)/setheading(angle)转动到某个方向,参数angle用于设置画笔在坐标系中的角度setx(x)将当前x轴移动到指定位置,x单位为像素sety(y)将当前y轴移动到指定位置,y单位为像素turtle库的使用绘制三角形
importturtle
turtle.fd(200)
turtle.seth(120)
turtle.fd(200)
turtle.seth(-120)
turtle.fd(200)120°120°水平方向导入模块导入模块:import模块名
importturtle使用模块:模块名.函数名
turtle.forward(100)导入模块:import模块名as别名
importturtleast使用模块:别名.函数名t.forward(100)importturtleturtle.pensize(5)turtle.pencolor('blue')turtle.forward(100)…importturtleastt.pensize(5)t.pencolor('blue')t.forward(100)…导入模块导入模块:form模块名import* fromturtleimport*使用模块:函数名
forward(100)导入模块:form模块名import函数名1,函数名2,…
fromturtleimportforward使用模块:函数名
forward(100)importturtleturtle.pensize(5)turtle.forward(100)…fromturtleimportpensize,forwardpensize(5)forward(100)…导入模块fromturtleimport*pensize(5)pencolor('blue')forward(100)…importturtleastt.pensize(5)t.pencolor('blue')t.forward(100)…导入模块中的函数和本程序中其他自定义函数可能会因为同名造成冲突。如果导入好几个库,也有可能发生库之间函数方法重名的情况。使用“模块.函数”的形式,就不会出现同名的情况。基本数据类型与表达式什么是数据?计算机数据是计算机能理解和接受的信息表现形式。准考证考生编号2020123456789001考生姓名程一菲性别女证件类型身份证年龄12证件编号33012345678901234X考场浙江科技学院小和山校区A1教学楼302教室数据类型描述现实对象大小,轻重等特性的数值型数据描述对象专有特性的一些文本类数据描述对象时间特性的日期时间类型复杂数据类型Python中的数据类型基本数据类型:整数(int)浮点数(float)复数类型(complex)字符串类型(str)布尔类型(bool)组合数据类型:列表(list)元组(tuple)集合(set)字典(dict)数值类型整数类型(int)Python中的整数类型和数学中的整数概念是一致的:它可正可负没有取值范围的限制。数的进制:进制引导符举例十进制无100,-23二进制0b或0B0b100,0B111八进制0o或0O0o1354,0O10十六进制0x或0X0x9A8B,0X10浮点数类型(float)
复数类型(complex)Python中的复数类型和数学中的复数概念是一致的:复数:
3.2+4.5i复数形式:a+bj实部虚部虚数单位j字符串类型(str)字符串是用两个引号括起来的任意个字符例如:'HelloWorld',
'你好','A',''表现形式:单引号:'Hegotan"A+".'双引号:"I'mgood."三引号:'''HelloWorld
HelloPython'''转义字符转义字符描述转义字符描述\\反斜杠符号\t横向制表符\’单引号\n换行\”双引号\(在行尾)续行符\a响铃\f换页\b退格\OOO
(如:\101)八进制数代表的字符\r回车\xXX
(如:\x0a)十六进制数代表的字符布尔类型(bool)这种类型的数据只有True(真)和False(假)两个值表示真假的逻辑值可以用于条件的判断,用于:选择结构循环结构基本概念运算符——对数据进行不同运算处理时运用的一些符号。Python常用的运算符
算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、成员运算符、身份运算符…表达式——用运算符和括号将运算对象组合在一起的式子。算术运算符(设a为2,b为5)运算符描述举例-a取
负结果为-2a+b相加结果为7a-b相减结果为-3a*b相乘结果为10a/b相除结果为0.4a//b整除结果为0a%b取余结果为2a**b求幂结果为32关系运算符运算符描述a>ba大于b,返回True,否则返回Falsea>=ba大于等于b,返回True,否则返回Falsea<ba小于b,返回True,否则返回Falsea<=ba小于等于b,返回True,否则返回Falsea==ba等于b,返回True,否则返回Falsea!=ba不等于b,返回True,否则返回False关系运算符整型数据、浮点数数据、字符串和布尔类型数据可以进行所有的关系运算,而复数类型只能进行是否相等的运算。如果要把布尔类型的数据当成数值型数据,True代表1,False代表0.,数值型数据和布尔类型数据可以相互进行关系运算。可以使用连续关系运算,如:1<=x<=3浮点数相等运算的操作方式逻辑运算abaandbaorbnotaTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrueTrueTrueTrue——andornot赋值运算用一个“=”表示使用左侧的变量去代表右侧的数据对象可以一次只给一个变量赋值,也可以同时给多个变量赋值还有一种复合赋值的运算,结构是:
变量 运算符=表达式
等同于:
变量=变量运算符表达式内置函数Python将一些常用的功能设计成了内置函数供用户使用。所谓内置函数,就是不需要导入库就可以使用的函数。内置函数:输入函数input输出函数print字符串解析函数eval相关内置函数——数学运算类函数描述abs(x)计算x的绝对值。divmod(x,y)分别计算x除以y得到的商和余数。pow(x,y[,z]) 计算x的y次幂(z为可选参数,结果再除以z的得到余数)round(x[,n])四舍五入取整(n为可选参数,结果四舍五入保留n为小数)max(x1,x2,…xn)计算x1,x2,…xn中的最大值min(x1,x2,…xn)计算x1,x2,…xn中的最小值abs(9.5)的结果为9.5,abs(-9.5)的结果为9.5divmod(9,4)的结果为(2,1)pow(2,10)的结果为1024round(3.1415)的结果为3max(1,9,7,8)的结果为9min(1,9,7,8)的结果为1,pow(2,10,100)的结果为24,round(3.1415,3)的结果为3.142相关内置函数——创建对象类函数描述int([x[,base]])创建一个整数float([x])创建一个浮点数complex([real[,imag]])创建一个复数str([object])创建一个字符串bool([x])创建一个布尔类型数据int()的结果为0int(True)的结果为1,int(False)的结果为0float()的结果为0.0,float(3)的结果为3.0float(True)的结果为1.0,float('3.14')的结果为3.14complex(2.5)的结果为(2.5+0j)complex(2.5,3)的结果为(2.5+3j)
str()的结果为'',str(123)的结果为'123'str(3.14)的结果为'3.14',str(True)的结果为'True'bool()、bool(0)、bool('')的结果都为Falsebool(2.5)、bool('ok')的结果为True,int(3.68)的结果为3相关内置函数——转换类函数描述ord(x)返回字符x对应的Unicode编码chr(x)返回Unicode编码x对应的字符bin(x)返回整数x对应的二进制数字符串oct(x)返回整数x对应的八进制数字符串hex(x)返回整数x对应的十六进制数字符串ord('A')的结果为65ord('中')的结果为20013chr(65)的结果为'A'chr(20013)的结果为'中'bin(123)的结果为'0b1111011'oct(123)的结果为'0o173'hex(123)的结果为'0x7b'math库math库能够支持包括整数和浮点数在内的数值型数据的运算。(不能处理复数)包括正弦、余弦、正切等三角函数运算、开平方、乘方、对数等运算。使用方法:导入math库:importmath使用math库中的常量和函数。Math库中的函数和常量函数和常量描述math.sqrt(x)返回x的平方根math.exp(x)返回自然对数底e的x次方math.log(x)返回x的自然对数,即lnxmath.sin(x)返回sin(x)math.cos(x)返回cos(x)math.radians(x)角度x转换为弧度math.pi常量π=3.141592…math.e自然对数底e=2.718281…math库例:已知一个圆和一个正方形面积相等,输入圆半径,计算输出正方形的边长。importmathr=eval(input(‘请输入圆半径:'))s=math.pi*r*ra=math.sqrt(s)print('正方形边长为:',round(a,2))字符串的基本操作操作符描述x+y连接字符串x和yx*n或n*x将字符串x复制n次xins若字符串x是字符串s的子串,返回True,否则返回Falselen(s)获取字符串的长度str[i]索引,返回字符串str中第i个字符str[m:n]切片,返回字符串str中第m个到第n-1个字符的子串字符串的索引和切片Hello
World-11-10-9-8-7-6-5-4-3-2-1012345678910ss[6]s[-5]'W's[0:5]'Hello's[6:]'World'起始索引值结尾索引值字符串的方法字符串类型判断s.isalpha()、s.isdigit()、s.islower()、s.isupper()、s.title()大小写字母转换s.lower()、s.upper()、s.title()、s.swapcase()去空格s.strip()、s.lstrip()、s.rstrip()其他方法s.find()、s.replace()、s.split()、s.count()字符串格式化f-string格式化方法:形式:f'字符串'字符串中可以包含{字段}例:name='Fiona'print(f'Mynameis{name}.')f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式f-string字符串格式化字段的格式控制:
{表达式:<格式控制标记>}格式控制标记包括:
<填充><对齐><宽度><,><.精度><类型>输出的字符宽度<>^填充宽度的字符,默认空格整数:b,c,d,o,x,X浮点数:e,E,f,%保留小数位数输出字符个数千分位分隔符程序的控制结构程序控制流程——下一条语句?顺序结构选择结构循环结构BABACBADC程序的基本结构程序由三种基本结构组成:顺序结构分支结构循环结构设计好算法,充分利用三种程序的结构,编写出解决问题的程序。程序流程图用一系列图形、流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式。传统流程图基本符号三种基本结构:顺序结构起止框I/O框判断框处理框流程线连接点语句A语句B传统流程图选择结构(分支结构)条件语句1语句2YN(a)条件语句1YN(b)传统流程图循环结构条件YN语句组程序的分支结构(选择结构)例子:两个数比较大小判断是否是闰年判断密码的正确与否注意判断条件的确立(结论是True或False)关系运算符:<<=>=>==!=注意:Python中:0<=x<=10可以表示数学中的:0≤x≤10逻辑运算:andornot条件语句1语句2YN单分支结构:if语句语法格式:
if<条件>:
语句块例:输入任意两个整数,比较后,大的数为a,小数的数为b,再输出。解题思路:输入a,b如果a<b的话,交换a,b打印a,b注意冒号的使用缩进代表层次关系二分支结构:if-else语句语法格式:
if<条件>:
<语句块1>
else:
<语句块2>例:猜数字游戏,固定一个数字,范围1~10之间,让用户猜,根据用户输入,给出游戏结果。注意冒号和缩进条件表达式语法格式如下:
<表达式1>if<条件>else<表达式2>如:"对"ifb==aelse"错"ifb==a:print('***你猜对啦***')else:print('***你猜错啦***')print(f"***你猜{'对'ifb==aelse'错'}啦***")多分支结构:if-elif-else语句语法格式:
if<条件1>:
<语句块1>
elif<条件2>:
<语句块2>
...
else:
<语句块N>注意:适用于一个问题的多种情况出现多个判断条件区别两个递进问题的判断
实例:温度转换输入摄氏温度,输出对应的华氏温度:分析:(IPO程序设计方法)Input:输入摄氏温度
c=eval(input("输入摄氏温度:"))Process:计算对应的华氏温度
f=c*1.8+32Output:输出计算的结果
print("f"华氏温度是{f:.2f}")实例:温度转换问题:如何实现摄氏温度和华氏温度的相互转换?——如果用户输入的是摄氏温度,输出华氏温度;如果输入是华氏温度,输出摄氏温度。(选择结构)如何判断用户输入的是摄氏温度还是华氏温度?——输入格式和输出格式的确定程序编写的基本方法步骤1:分析问题:采用公式转换方式解决计算问题步骤2:确定功能输入:华氏或摄氏温度值、温度标识
(82F表示华氏82度,28C表示摄氏28度)处理:温度转化算法输出:华氏或摄氏温度值、温度标识步骤3:设计算法C=(F–32)/1.8F=C*1.8+32例:已知百分制成绩x,显示对应的五级制成绩,下列哪些正确。ifx>=90:y="A"elifx>=80:y="B"elifx>=70:y="C"elifx>=60:y="D"else:y="E"ifx>=60:y="D"elifx>=70:y="C"elifx>=80:y="B"elifx>=90:y="A"else:y="E"ifx<60:y="E"elifx<70:y="D"elifx<80:y="C"elifx<90:y="B"else:y="A"循环结构让计算机完成一些重复性的任务构成循环:(1)循环条件(2)循环体循环条件的类型:(1)用于判断的表达式——TrueorFalse
(while语句)(2)从数据集中逐一获取其中的单个数据项
(for语句)BAD循环条件循环体for语句语法格式for<循环变量>in<遍历结构>:
<语句块>例:打印单词中字母对应的大写字母。foriin'hello':print(f'{i}---{i.upper()}')h---He---El---Ll---Lo---O运行结果range()字符串列表文件…range函数用于产生指定的整数序列格式:range(<终值>)产生:区间为[0,<终值>)的整数序列。格式:range(<初值>,<终值>)产生:区间为[<初值>,终值>)的整数序列。格式:range(<初值>,<终值>,<步长>)产生:区间为[<初值>,终值>)的每几个取一个的整数序列。——range(5)——range(10,100)——range(10,100,2)——range(98,9,-2)求平均成绩例:使用Turtle库实例
斐波纳契数列:1
1
2
3
5
8
13
21
34
……+=穷举法把所有的情况列举一遍,把符合条件的情况挑选出来。水仙花数(各位数字的立方和等于它本身的三位数):foriinrange(100,1000):a=i//100b=i//10%10c=i%10ifi==a**3+b**3+c**3:print(i)把所有的三位数列举一遍把符合条件的情况打印出来程序结构的嵌套选择结构的分支中可以嵌套:另一个选择结构或另一个循环结构循环结构的循环体中可以额嵌套另一个循环结构或另一个选择结构注意:书写时的缩进,Python中使用缩进来代表层次结构搬砖问题:男人一次搬3块砖,女人一次搬2块砖,小孩两人搬1块砖,n人搬n块砖。又一个水仙花数while语句单分支选择结构:
if<条件>:
<语句块>语法格式:
while<条件>:
<语句块>条件表达式(布尔型)条件只计算判断一次,根据结果决定是否执行语句块。计算并判断条件为True,执行循环体。反复操作,直到判断条件为false,退出循环。例:输入5个同学的成绩,计算他们的平均成绩,并打印出来。n=1s=0whilen<=5:x=float(input(f'请输入第{n}个同学的成绩:'))s=s+xn=n+1print(f'平均成绩是{s/5:.1f}')循环条件循环体while语句whileTrue:
<语句块>
if<条件>:
break
<语句块>语法格式:
while<条件>:
<语句块>退出循环的条件循环执行的条件例:输入若干个同学的成绩,以-1结束。计算他们的平均成绩,并打印出来。n=0s=0whileTrue:x=float(input(f'请输入第{n+1}个同学的成绩:'))ifx==-1:breaks=s+xn=n+1ifn>0:print(f'平均成绩是{s/n:.1f}')循环条件退出循环的条件修改猜数游戏break语句whileTrue:
<语句块>
if<条件>:
break
<语句块>——跳出当前的循环while<循环条件>:
<语句块>
if<退出条件>:
break
<语句块>else:
<语句块>for<循环变量>in<遍历结构>
<语句块>
if<退出条件>:
break
<语句块>else:
<语句块>修改猜数游戏判断一个数是不是素数continue语句foriin'Tom123':print(i)if'0'<=i<='9':continueprint(f'---{ord(i)}')T---84o---111m---109123运行结果ifnot'0'<=i<='9’:print(f'---{ord(i)}')break语句和continue语句的异同循环If<条件>:breakbreak用于跳出本循环continue用于结束本次循环循环If<条件>:continue相似之处:在循环体中使用一般配合if语句伪随机数计算机不可能产生随机数据,它都是根据各种条件来生成一个确定的值。计算机只能产生伪随机数,随机数函数按照一定的算法来模拟产生一系列数据。算法确定,随机函数的结果也是确定的。random库seed函数——用于设置随机数种子。random函数——用于产生随机数,范围[0,1)之间。随机数种子——是随机数产生算法中参数,随机数种子确定了,那么后面利用算法产生的随机数序列就固定了例:importrandomrandom.seed(8)foriinrange(5):print(random.random())运行结果:0.22670585938104880.96229503583438280.126330898650859560.70481692287160790.08518526805075266是否需要主动设置随机种子呢?如果你在编程过程中设置了随机数种子:那么程序多次运行,只要种子相同,随机数也是相同的。可以利用相同的数据,重现程序运行的过程和结果。如果编程中没有设置随机数种子:默认使用系统当前时间作为随机数种子。多次运行时,使用的种子肯定不同,随机数序列也不同。程序运行的结果就会不同,更体现随机的效果。扩展随机函数函数描述uniform(x,y)产生一个[x,y]范围内的随机浮点数randint(x,y)产生一个[x,y]范围内的随机整数randrange(x,y[,z])随机从range(x,y[,z])产生的整数序列中选取一个整数getrandbits(x)产生x位二进制范围内的随机整数choice(x)从序列类型数据x中随机返回其中一个元素sample(x,y)从序列类型数据x中随机选择其中y个元素,以列表形式返回shuffle(x)将可变序列x中的元素重修随机排列random库的使用所有函数都是基于最基本的random.random()函数扩展而来引用:importrandom
使用函数:y=random.randint()随机库可以对随机事件进行模拟修改猜数游戏第4章组合数据类型生活中的容器Python中的容器0123456Python3box——字符串box[2]Python中的容器01234561003.142+3j'ok'Truebox——元组123(1,2,3)(100,3.14,2+3j,'ok',True,(),(1,2,3))Python中的容器2+3j'ok'Truebox——列表1231003.143512120262005000123456[12,26,35,100,120,200,500]组合数据类型组合数据类型序列类型字符串(str)元组(tuple)列表(list)集合类型集合(set)映射类型字典(dict)序列类型(有序)字符串(str)——"Helloworld!"元素是字符内容不可变列表(list)——[1,9,7,8,10,17]元素可以是各种不同类型(包括组合类型)内容可以改变元组(tuple)——("Tom",20,'M',99.5,65)元素可以是各种不同类型(包括组合类型)内容不可变若有s="Helloworld!"则s[1]="A"是错误的修改,画彩色螺旋序列操作(1)操作描述(s代表一个序列)s1+s2连接两个序列,必须同类型。s*nor
n*s将序列s重复n次,生成一个新的序列。xinsxnotins判断x是否为序列s的元素,如果是字符串则是子串的判断。加上not得到相反的结果。len(s)计算序列s的元素个数。s[i]引用序列s中索引为i的元素。s[m:n]切片。序列操作(2)操作描述(s代表一个序列)forxins遍历序列s。min(s)计算序列s的最小元素。max(s)计算序列s的最大元素。sum(s)计算序列s的元素和,元素必须为数值型。s.index(x)在序列s中查找元素x第一次出现的位置s.count(x)计算元素x在序列s中出现的次数s.copy()复制序列s,创建一个新的序列。序列类型的操作遍历序列:
forxins:索引 foriinrange(len(s)):s为序列类型,x得到序列的元素i得到0~len(s)-1的整数,表示元素的索引序列类型的操作列表和元组的多级索引:如:s=[1,2,3,(5,6,7)]则len(s)为4,一共4个元素s[0]s[1]s[2]s[3]123(5,6,7)s
S[3][0]S[3][1]S[3][2]567s[3]
s[3]元素的类型是元组例:输入一个整数金额,输出汉字表示的大写金额。假设输入的金额数为正整数,且最大为12位数字。切片序列[起始索引值:结尾索引值]起始索引值1357911130123456-7-6-5-4-3-2-1结尾索引值已知这个列表:
s=[1,3,5,7,9,11,13]进行切片操作:
s[1:4]得到结果:
[3,5,7]例:编程设计一个周值班表。切片注意的问题省略索引值:省略结尾索引值,切片范围会包含最后一个元素
s[-n:]可获取序列s的最后n个元素。省略起始索引值,切片范围包含首个元素
s[0:5]等同于s[:5]两个索引值都省略,相当于复制整了个原列表
s[:]复制整个列表带步长的切片序列[起始索引值:结尾索引值:步长]已知这个列表:
s=[1,3,5,7,9,11,13]进行切片操作:
s[1:6:2]得到结果:
[3,7,11]步长为21357911130123456-7-6-5-4-3-2-1结尾索引值起始索引值默认步长为1,可省略步长为负数已知这个列表:s[1,3,5,7,9,11,13,15,17,19,21,23,25,27]进行切片操作:s[12:3:-3]得到结果:
[25,19,13]步长为-3012345678910111213-14-13-12-11-10-9-8-7-6-5-4-3-2-1结尾索引值起始索引值13579111315171921232527元素提取方向列表(list)类型创建列表1.使用列表的字面量来创建列表s1=[1,3,5,7,9]s2=[] s3=[[1,2,3],[4,5,6],[7,8,9]]x=3
y=4
s4=[x,y+1][3,5]s[0][1,2,3]s[0][1]2创建列表2.使用list()函数将其他数据类型的数据转换成一个列表语法格式:
x=list(<组合类型>)
用于生成序列。x=list(("Tom","Jerry"))x=list("apple")x=list(range(1,10,3))x=list()x=input().split()无参数生成空列表,同:x=[]
["Tom","Jerry"]
['a','p','p','l','e']
[1,4,7]
[]可以配合map函数修改列表内容1.元素赋值利用索引值选择特定的元素进行赋值操作,可以修改列表中某一个元素的值。s=[1,3,5,7,9,11,13]s[2]=10不可以对不存在的元素进行赋值。当元素的索引值超出其取值范围时,就会产生一个错误。s[7]=99
[1,3,10,7,9,11,13]切片内容修改列表内容2.切片赋值创建列表:
s=[1,3,5,7,9,11,13]修改列表:
s[1:-1]=[0]*10修改后列表:
[1,0,0,0,0,0,0,0,0,0,0,13]13579111301234560000000000替换内容替换1000000000013-7-6-5-4-3-2-1得到切片内容修改列表内容带步长的切片赋值s[1:-1:3]=[2,4,6,8]修改后列表:
[1,2,0,0,4,0,0,6,0,0,8,13]100000000001324681200400600813替换内容得到替换列表的操作添加元素列表.append(元素值)列表.extend(可迭代对象)列表.insert(索引值,元素值)删除元素del列表[索引值]或
del切片列表.remove(元素值)列表.pop(<索引值>)列表.clear()例:随机产生10个数,排序后输出列表.sort()例:评委评分程序,去掉最高分和最低分,求平均分。复制列表:列表.copy()135aa=[1,3,5]b=ac=[2,4,6]d=c.copy()246c246dbb[1]=9910d[1]=10效果等同:
d=c[:]列表的操作列表推导式,用于生产列表
[<值>for<项>in<可迭代对象>if<条件>]例:x=[i*2foriin[1,2,3,4]][2,4,6,8]x=[1/iforiinrange(1,5)ifi%2==0]
[0.5,0.25]列表推导式的优势例:扑克牌发牌程序创建元组直接使用元组的字面量来创建元组s1=() s2=(1,3,5,7,9)s3=1,3,5,7,9s4=(x,y+1)#注意:x和y变量已经赋值过。使用tuple()函数将其他数据类型的数据转换成一个元组s1=tuple() s2=tuple([1,3,5,7,9]) s3=tuple(range(1,10,2)) s4=tuple('Python程序设计') 注意与(78,)和(78)的区别无参数生成空元组,同:x=()元组是不可修改的s=[1,2,3]t=(0,s)print(t)#t[1]和s代表同一个列表t[1][0]=8s[2]=9print(t)123s0t89(0,[1,2,3])(0,[8,2,9])序列的封包和解包序列封包——把多个值赋值给一个变量时,Python会自动的把多个值封装成元组,称为序列封包。>>>s=1,3,5,7,9 >>>s(1,3,5,7,9)>>>type(s)<class'tuple'>序列的封包和解包序列解包——把一个序列(列表、元组、字符串等)直接赋给多个变量,此时会把序列中的各个元素依次赋值给每个变量,但是元素的个数需要和变量个数相同,这称为序列解包。s=('哪吒','M',3,100)name,sex,age,energy=sname,*other=sprint(*s)集合(set)类型s={"red","orange","yellow","green"}元素无序,不可以使用索引访问元素没有重复内容可变元素可以是各种不可变类型,可不同类型
(数字类型、字符串、元组等)元素不可以是列表、集合等创建集合直接使用集合的字面量来创建集合
s1={'red','green','blue','orange','yellow'} s2={1,7,3,2}s3={1,2,1,3,2,7}#s2和s3是创建的相同的集合使用set()函数将其他数据类型的数据转换成一个集合s4=set() s5=set([1,3,5,7,9]) s6=set('Python程序设计')
集合的运算1.关系运算。==!=>>=<<=子集、超集、真子集、真超集若s={1,2,3,4,5,6},t={1,3,5}则:t是s的子集(t<=s),s是t的超集(s>=t)若s={5,1,3},t={1,3,5}则:t和s相等(s==t为True)2.数学中的集合运算ABABABAB并集:A|B差集:A-B交集:A&B对称差:A^BA={1,2,3,4,5}B={4,5,6,7,8}{1,2,3,4,5,6,7,8}{4,5}{1,2,3}{1,2,3,6,7,8}集合的应用元素唯一性、实现快速去重函数或方法(集合s):
s.add() s.clear() s.copy()
s.pop() s.remove(x)例:随机产生20个互不相同的100以内自然数映射类型——字典(dict)d={'中国':13.9,'法国':0.7,'美国':3.3}元素无序,不可以使用索引访问元素是键值对:<键>:<值>内容可变元素的键不可以重复元素的键可以是各种不可变类型,可不同类型(数字类型、字符串、元组等)元素的值可以是任何类型,没有互不相同的要求字典使用举例:通讯录、棋盘状态创建字典直接使用字典的字面量来创建集合
s1={} s2={'中国':960,'美国':937,'日本':38}s3={'中国':960,'美国':930,'日本':38,'美国':937}#s2和s3是创建的相同的集合使用dict()函数将其他数据类型的数据转换成一个字典s1=dict()s2=dict({'c':45,'m':41,'f':10})s3=dict([('c',45),('m',41),('f',10)])s4=dict(c=45,m=41,f=10) 字典的操作d={'中国':13.9,'法国':0.7,'美国':3.3}访问元素格式:<字典变量>[<键>]t=d['中国’]d['美国']=2.3d['英国']=6.6deld['法国']t为13.9{'中国':13.9,'法国':0.7,'美国’:2.3}{'中国':13.9,'法国':0.7,'美国':2.3,'英国':6.6}{'中国':13.9,'美国':2.3,'英国':6.6}字典的操作字典不能比较大小,但可以使用==或!=比较相不相等,两个字典相等的条件:
所有的元素(键值对)都相等遍历字典:
for<变量名>in<字典名>:
语句块如:forconind:
print(con)可使用d[con]得到值字典.get(key值,[默认值])字典.items()字典.keys()字典.values()打印的是元素中的键第5章函数引例:
abcd
efgS1S2S3无函数用函数函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名进行完成功能调用。使用函数函数,是一段能够完成一定任务的、相对独立的,可以重用的语句组。也可以被看作是一段具有名字的子程序。使用函数的优点:(1)简化程序设计,实现代码复用。(2)模块化程序设计,方便调试和维护。
使用函数进行程序设计,一个完整的Python程序由两种代码组成:(1)程序主体(2)若干个函数函数的定义语法格式:
def<函数名>(<参数列表>):
<函数体>
return<返回值列表>defarea(x,y,z):
c=1/2*(x+y+z)
return(c*(c-x)*(c-y)*(c-z))**0.5形参:需要向函数传递的信息返回值:函数的最终结果若函数的功能不是计算结果,可以没有返回值若没有信息需要传递,可以没有参数,括号不能省函数的调用语法格式:函数名(实参)…s1=area(a,b,c)…函数名实参defarea(x,y,z):c=1/2*(x+y+z)return(c*(c-x)*(c-y)*(c-z))**0.5函数的调用
defarea(x,y,z):c=1/2*(x+y+z)return(c*(c-x)*(c-y)*(c-z))**0.5a,b,c,d,e,f,g=9,11,18,13,14,7,8s1=area(a,b,c)s2=area(c,d,e)s3=area(e,f,g)s=s1+s2+s3print("五边形面积为{s:.2f}")defarea(x,y,z):c=1/2*(x+y+z)return(c*(c-x)*(c-y)*(c-z))**0.5a
xb
yc
zc
xd
ye
ze
xf
yg
z实参形参实参和形参按其位置顺序一一传递函数的返回值函数的返回值——函数在执行完成后,将向调用者返回运算的结果(数据)。return语句的两个功能:(1)将函数运算的结果返回到调用该函数的语句中(2)结束函数的执行defarea(x,y,z):c=1/2*(x+y+z)return(c*(c-x)*(c-y)*(c-z))**0.5例:编程计算20以内素数的个数设计prime函数:函数的功能:判断一个数是否为素数函数的形参:接收判断对象数据函数的返回值:判断结果,布尔类型程序主体中:
使用穷举法,穷举20以内的所有大于等于2的整数,判断整数是否为素数,进行计数。代码实现:importmathdefprime(n):foriinrange(2,int(n**0.5)+1):ifn%i==0:returnFalsereturnTruem=0foriinrange(2,21):ifprime(i):m+=1print(f'20以内的素数有{m}个')编程思路:在2~sqrt(n)的区间中不存在可以整除n的数,则n为素数。程序主体:使用穷举法测试区间内各个数是否是素数(调用函数测试)。是素数就计数器加1。最后打印计数结果return的注意事项:defprime(n):foriinrange(2,int(n**0.5)+1):ifn%i==0:returnFalsereturnTruem=0foriinrange(2,21):ifprime(i):m+=1print(f'20以内的素数有{m}个')(1)一个函数中可以有多条return语句,执行到哪一条return语句,哪一条就起作用。(2)return语句一旦被执行,不论其后是否还有语句未执行,都将立即结束所在函数的执行,并将结果返回给调用者。(3)带return语句的函数调用时,一般出现在语句中的一部分,将计算的结果使用起来。无返回值函数deftag(a):n=len(a)+2print('*'*n)print(f'*{a}*')print('*'*n)print('Wecanmakenametagslikethis:')tag('name')x=input('Pleaseinputyourname:')tag(x)如果一个函数没有return语句,或者return语句后没有数据,该函数的返回值就是None。None是Python中一个特殊的值,它不表示任何数据。返回值是None的函数,在被调用时一般都单独作为一行。它们的功能是完成特定的任务,而不是计算一个结果。lambda函数使用形式:lambda形参:返回值
函数名=lambda形参:返回值该定义完全等价于:
def函数名(形参):
return返回值勾股定理求斜边长函数:
deff(a,b):
return(a*a+b*b)**0.5等价于:
f=lambdaa,b:(a*a+b*b)**0.5例:输入直角三角形两条直角边的长度,计算斜边的长度。f=lambdaa,b:(a**2+b**2)**0.5x,y=map(eval,input('请输入两条直角边:').split())z=f(x,y) print('直角三角形的斜边长为:{:.2f}')函数的定义函数的调用函数的参数参数是调用函数的语句和函数之间信息交互的载体:(1)形式参数
——定义函数时的参数,又称为形参。(2)实际参数
——调用函数时的参数,又称为实参。函数调用的时候,实参会把值传递给形参,就实现了参数的传递。形参的设计1.有参数函数为了实现函数的功能,需要向函数传递必要的信息。2.无参数的函数无需向函数传递信息,就可以实现函数的功能。例:设计一个随机产生6位密码的程序,要求密码由6个字符组成,字符包括大写字母和数字字符。无参数的函数——随机打印一个字符importrandomdefpassword():t='ABCDEDFHIJKLMNOPQRSTUVWXYZ0123456789's=''foriinrange(6):s=s+random.choice(t)returnsprint(password())有参数的函数——求解一元二次方程ax2+bx+c=0defequation(a,b,c):dt=b*b-4*a*cifdt<0:return'Nosolution.'else:x1=(-b+dt**0.5)/(2*a)x2=(-b-dt**0.5)/(2*a)returnx1,x2print(equation(2,11,-6))equation(a,b,c):equation(2,11,-6))关键字参数定义函数:
equation(a,b,c):调用函数:
equation(2,11,-6)调用函数:
equation(b=11,c=-6,a=2)定义函数:
equation(a,b,c):关键字参数的设计importmathdefcv(r,h):returnmath.pi*r*r*hprint(cv(1,2))print(cv(r=1,h=2))print(cv(h=2,r=1))cv(r,h):cv(1,2)cv(r,h):cv(r=1,h=2)cv(r,h):cv(h=2,r=1)默认值参数定义函数:
equation(a,b,c=1):调用函数:
equation(1,-2,1)
equation(1,-2)定义函数:
equation(a=1,b=-2,c=1):调用函数:
equation()
equation(b=2.5)
equation(c=6)形参设计时,把默认值参数放在形参列表的最后。实参可以使用关键字参数。任意选择想省略的实参。如果多个形参都有默认值可变数量参数defave(name,*n):m=0foriinn:m+=im/=len(n)returnf'{name:>4}:{m}'print('选修课平均分:')print(ave('张三',99))print(ave('李四',95,78,97,84))当函数的参数个数不确定时使用,通过在形参前面加星号(*)实现。例:设计一个计算选修课平均分的函数。选修课程的数目因人而异,至少选修一门课。函数获取姓名和若干个选修课分数,返回字符串,包含姓名和平均分。可变数量参数只有一个,且放在最后。剩余的实参被当成一个整体,以元组的形式传递到可变形参中。两次调用形参n分别
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026深圳能源春季校园招聘备考题库附参考答案详解【预热题】
- 2026江西九江庐山市人才集团招聘行政辅助人员1人备考题库及参考答案详解(突破训练)
- 2026浙江嘉兴市海宁市儿童福利院招聘2人备考题库【能力提升】附答案详解
- 2026贵州红星电子材料有限公司招聘6人备考题库(预热题)附答案详解
- 2026广东河源市妇幼保健院招聘合同制专业技术人员25人备考题库及参考答案详解(a卷)
- 2026福建泉州石狮市祥芝镇人民政府招聘编外工作人员3人备考题库附参考答案详解(轻巧夺冠)
- 2026上半年四川成都大学考核招聘高层次人才5人备考题库附参考答案详解(b卷)
- 工业厂房地面涂装施工方案
- 社会公德及行业规范遵守承诺书4篇范文
- 太阳能光伏系统施工方案
- 2026湖南张家界市桑植县招聘城市社区专职工作者20人考试参考试题及答案解析
- 2025年国家保安员资格证考试题库+答案
- 2026年温州永嘉县国有企业面向社会公开招聘工作人员12人考试备考试题及答案解析
- 工艺报警考核制度
- 2025年泰州职业技术学院单招职业倾向性考试题库带答案解析
- 保密要害部门部位课件
- (新教材)2026年春期人教版三年级下册数学教学计划+教学进度表
- 涉密机房培训
- (正式版)DB61∕T 2103-2025 《砖瓦用页岩矿资源储量核实技术规范》
- 智能笔的行业分析报告
- 蜡疗课件教学
评论
0/150
提交评论