程序设计方法601_第1页
程序设计方法601_第2页
程序设计方法601_第3页
程序设计方法601_第4页
程序设计方法601_第5页
已阅读5页,还剩596页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计方法

(Python)1要求21.做好预习,认真听讲,课后复习,勤于思考,独立完成作业。

2.听课时,一定要认真,用心,尤其是你预习中比较困难的地方。学习建议3多看编程实例,多分析、写注解多练、多想、多问第1章程序设计基础1.1程序和程序设计语言1.2程序设计1.3程序示例4计算机程序是指用某种计算机程序设计语言编写的解决某个问题或完成某项任务的指定序列。程序语言分类5按对机器依赖性、接近自然语言的程度、语言的发展过程机器语言

汇编语言

高级语言1.1程序和程序设计语言CPU能理解且能直接执行的指令集合。用机器语言编写的程序形式:能由计算机直接执行占存储空间小执行速度快机器语言61011000000001101001011000000010111110100依赖于具体计算机难记忆易出错阅读理解困难编程者需了解特定计算机的硬件及指令系统汇编语言是一种符号化的机器语言,用助记符号代替指令操作码、操作数。用汇编语言编写的程序形式:7MOVAL,13DSUBAL,5DHLT汇编语言高级语言接近于自然语言和数学语言,在一定程度上与具体计算机无关的符号化语言。用高级语言编写的程序形式(以Python语言为例):8r=eval(input("pleaseinputradiusofacircle:"))s=3.14*r*rprint("Theareaofthecircleis:",s)高级语言9不支持对硬件的直接操作代码需要翻译后才能执行易学易用代码易理解易调试、修改和移植,并与机器无关高级语言高级语言的翻译方式解释方式编译方式10口译笔译高级语言就程序本质而言刻画计算(数值计算与非数值计算,与处理同义)过程的处理对象(数据)与处理规则(算法);程序设计语言是编写计算机程序所用的语言,是人和计算机交流的工具;常用计算机语言有:Python、C、C++、Java等。11程序设计语言121.2程序设计

计算机程序设计是根据特定问题,用计算机语言设计、编制、调试和运行程序的过程。131.程序设计的步骤(1)分析问题和建立模型(2)算法设计(3)编制程序(4)调试运行程序(5)编写程序文档14

研究如何将复杂问题的求解转换为计算机能执行的简单操作的方法。常用的程序设计方法:结构化程序设计、面向对象的程序设计。2.程序设计方法15(1)结构化程序设计

是一种功能分解,模块化设计的方法,它采用自顶向下、逐步求精的方法,将整个系统功能逐层分解,直到每个模块具有明确的功能和适当的复杂度。

有三种基本结构:顺序、选择和循环。

结构化的分解突出过程,强调的是如何做,代码的功能如何完成。2.程序设计方法16(2)面向对象的程序设计

面向对象的程序设计是以对象为中心来分析问题和解决问题的。其对象是指将数据和操作数据的方法封装在一起而形成的一种实体,它具有独立的功能,并隐藏了实现这些功能的复杂性。

面向对象的分解突出现实世界和抽象的对象,强调的是做什么,它将大量的工作由相应的对象来完成。2.程序设计方法17(1)数据成分数据是程序操作的对象,具有名称、类型、作用域等特征。数据是有类型的,如:整型、单精度类型等.

例如C中的定义语句:

intx;3.程序的基本组成18(2)控制成分程序的三种基本结构:顺序结构

选择结构

循环结构。

其流程图分别为:3.程序的基本组成19顺序结构选择结构3.程序的基本组成20循环结构3.程序的基本组成21三种基本结构的特点:每个结构只有一个入口和一个出口;结构内的每一个部分都有机会被执行到;顺序结构中的语句序列可以包含三种基本结构;循环结构中没有死循环。3.程序的基本组成22(3)三种基本结构的实现赋值语句;

if语句;

for语句和while语句。3.程序的基本组成23【例1-2】编程计算求1+2+…+100的和。Python程序代码:s=0foriinrange(1,101):s=s+iprint(s)赋值语句for语句3.程序的基本组成GuidovanRossumPython名称来自Guido挚爱的电视剧MontyPython'sFlyingCircus;Python第一个版本于1991年公开发行;Python是解释型、面向对象、通用的程序设计语言Python2425大数据Python提供各种库,具有极其便捷强大的数据处理和统计功能文本处理python提供的re模块能支持正则表达式Python的库——具有强大吸引力26Python的库——具有强大吸引力Web开发Python定义了WSGI标准应用接口来协调http服务器与基于Python的Web程序之间的沟通GUI开发用wxPython或者PyQt来开发跨平台的桌面软件27Python的库——具有强大吸引力操作系统大多数Linux发布版以及NetBSD、OpenBSD和MacOSX都集成了Python,Python标准库包含了多个调用作业系统功能的库多媒体用于将计算机游戏中图形渲染模块封装为Python扩展类库Python官方网站www.P28Python的开发环境PythonIDLE的下载与安装PythonIDLE窗口29Python的开发环境HelloWorld30Python的运行方式1——交互式运行Shell是交互式的解释器输入一行命令,解释器就解释运行出相应结果31Python的运行方式2——文件式运行在Python的IDLE环境中,创建一个以py为扩展名的文件32用Python解释器在Shell中运行出结果Shell交互方式和文件运行方式都是解释运行方式如果整个代码段较短,则优先考虑选择用Shell交互方式如果代码段较长,则建议使用文件执行方式33Turtle是一个非常适合初学者学习的绘图库Turtle库无需额外安装想象一个听话的小海龟在xy平面的原点(0,0)小海龟按照你给的指令行动341.3程序示例Turtle库的使用35turtle常用动作方法表turtle.circle():画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆。backward()/bk()/back()36turtle常用控制笔方法表小例子37importturtleturtle.forward(100)turtle.showturtle()#显示画笔的turtle形状

turtle.write(“WelcomtoPython”)听话的小海龟38turtle.right(90)turtle.color("red")turtle.forward(50)turtle.right(90)turtle.color("green")turtle.forward(100)turtle.right(45)turtle.forward(80)39importturtleturtle.color("blue")turtle.penup()turtle.goto(120,10)turtle.pendown()turtle.circle(50)听话的小海龟【例1-3】绘制小蟒蛇4041【例1-4】绘制一朵花42【例1-4】绘制一朵花43【例1-4】绘制一朵花44【例1-4】绘制一朵花【例1-5】绘制正多边形45学会使用帮助(Help->PythonDocs)46学会使用帮助(Help->TurtleDemo)47小结程序和程序设计语言程序设计Python开发环境与运行方式程序示例(turtle库)48Python程序设计第2章数据的计算机表示与操作第2章数据的计算机表示与操作2.1程序基本构成2.2标识符2.3编程语言中的数据类型2.4运算符与表达式2.5格式化输出2.6程序示例学习目标掌握常量和变量的概念和使用掌握input()和print()函数掌握编程语言中的数据类型的使用方法熟悉常用内置函数熟悉math库常用函数学习重点常量和变量输入和输出函数的使用数值数据类型及其运算序列数据类型及其操作方法常用内置函数math库常用函数2.1程序基本构成数据数据是对客观事物的符号表示,是指所有输入到计算机中并被计算机程序处理的符号的总称。例如:3.1415926、hello、[88,90,69,100]、新冠2.数据类型数据是程序中参与运算(计算或其他操作)的对象。程序中每个数据都归属于某种特定的数据类型。数据类型的专业解释是一个值的集合和定义在这个值集合的一组操作的总称。思考:为什么会有不同的数据类型呢?2.1程序基本构成计算BMI的算法描述:①提示用户输入体重和身高;使用公式BMI=体重/身高2,计算BMI;输出结果。【例2-1】编写程序,输入体重和身高,计算身体质量指数BMI。2.1程序基本构成weight=eval(input("请输入您的体重(千克):"))#提示用户输入体重height=eval(input("请输入您的身高(米):"))BMI=weight/(height*height)print("BMI值:",BMI)请输入您的体重(千克):60(回车)请输入您的身高(米):1.62(回车)BMI值:22.862368541380882.1程序基本构成①变量程序代码中的weight,height和BMI是变量。weight存储用户输入的体重height存储用户输入的身高BMI是存储用户的身体质量指数计算结果2.1程序基本构成

②input函数(实现从键盘输入数据)参数,可以省略返回值,字符串数据类型weight=eval(input("请输入您的体重(千克):"))height=eval(input("请输入您的身高(米):"))2.1程序基本构成

②input函数(实现从键盘输入数据)2.1程序基本构成>>>r1=input("请输入圆的半径:")请输入圆的半径:5>>>r1'5'③eval()函数input函数从键盘接收的是字符串数据类型;eval函数是把字符串数据类型转换成数值型数据类型,数值型数据能够参与数学运算。>>>x=input()12>>>x'12'>>>x=eval(input())12>>>x122.1程序基本构成>>>a,b,c=eval(input("请输入三角形三条边的边长:"))请输入三角形三条边的边长:3,4,5>>>a3>>>b4>>>c52.1程序基本构成input()函数可以一次输入多个数据print的语法格式:print(对象1,对象2,…,对象n,sep='',end='\n')参数end的默认值为'\n'

,表示print()函数输出完成后自动换行,可省略sep表示输出对象之间的分隔符,默认为空格,可省略必须要熟练掌握④print函数(实现输出数据)2.1程序基本构成print(1,2,3)print(1,2,3,sep="和")例题:创建py文件1231和2和3print(1,2,3,sep=",",end="**")print(4,5,6)1,2,3**456结果下页练习小题④print函数(实现输出数据)2.1程序基本构成File练习题1.print(1,2,3,end="**")的结果是___。123**2.print(1,2,3,end='*',sep="#")的结果是___。1#2#3*3.print(1,2,3,'*',"#")的结果是___。123*#⑤

注释注释内容不会被执行,只起到解释说明的作用单行注释以井号“#”为标志多行注释以三个连续的单引号(''')开始,以三个连续的单引号(''')结束#提示用户输入体重2.1程序基本构成⑥缩进030102增加缩进表示语句块的开始Python用相同的缩进表示同级别语句块减少缩进表示语句块的退出num=[1,2,3,4,5] prog=int(input())

for

numberinnum:

prog=prog*numberprint("Theprogis:",prog)Python中,缩进可以通过Tab键控制,也可以使用空格键控制。2.1程序基本构成2.1.2赋值语句单一赋值语句链式赋值语句同步赋值语句变量名=表达式一、单一赋值语句>>>num=5>>>salary=3450.7>>>tax=salary*5*0.15Source1个表达式赋值给1个变量2.1.2赋值语句3.例题:下列程序的输出结果>>>x=5>>>x=6>>>y=2>>>z=x+y>>>print(z)>>>x=1>>>x=x+1>>>print(x)82>>>k=k+1NameError:name'k'isnotdefined>>>k=0>>>print(k)12.1.2赋值语句1.链式赋值:把同一个值赋予多个不同变量

变量1=变量2=⋯⋯=变量n=表达式2.链式赋值语法:3.例题二、链式赋值语句>>>x=y=z=1>>>

x=1>>>

y=1>>>

z=1等价2.1.2赋值语句1.同步赋值:用于把不同的值同时赋予多个不同的变量变量1,变量2,…,变量n=表达式1,表达式2,…,表达式n2.同步赋值语句三、同步赋值语句2.1.2赋值语句例2-2:编程实现x和y值的互换三、同步赋值语句x,y=7,8t=xx=yy=tprint("x是:",x)print("y是:",y)x,y=y,xx是:8y是:7x,y=8,72.1.2赋值语句下列表达中,___________是正确的赋值语句。A.a,b,c=100B.a=b=c=100C.100=aD.a=b=(c=100)练习题B例题2-3输入圆的半径,求圆的周长和面积并输出。

r=eval(input("输入圆的半径:"))c=2*3.14*rs=3.14*r*rprint("半径为",r,"的圆的周长等于:",c,sep="")print("半径为",r,"的圆的面积等于:",s,sep="")编程题课堂练习2.1end2.2.1标识符1.标识符概念

标识符是程序中使用到的各种对象的名字。如:weight、bmi2.命名规则①只能由字母、数字、下划线(_)、汉字字符组成;②必须由字母、汉字或者下划线开头,不能以数字开头;③用户自定义的标识符不能是关键字;

④标识符可以是任意长度;

⑤标识符大小写敏感;大小写字母是不同的字符2.2.1标识符>>>importkeyword>>>keyword.kwlist

['False','None','True','and','as','assert','async','await','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']>>>keyword.iskeyword('in')#判断是否为标识符True以下哪一个是python中合法的标识符?C.name_123D.1nameA.stu-nameB.C练习题以下四个选项中,均是合法的标识符的是哪一组?A.temp、_temp、a.b.cB.sum、schoolName、_xyzC.1_a、sum1、abcD.123、fx、result78练习题B2.2.2常量在计算机的高级语言中,数据有两种表现形式:常量和变量。在程序执行过程中,其值不会变化的量称为常量。Python中没有命名常量的特殊语法,通常可以简单地创建一个变量来表示常量。为了区分常量和变量,通常使用大写字母来命名常量。>>>PI=3.1415#创建常量PI>>>area=PI*5*5>>>print(area)78.53750000000001思考:使用常量的好处在哪里?2.2.2常量常量的意义:①如果需要多次使用某个固定的量(比如圆周率),就不需要重复的输入同一个值,比如多次输入3.14;②如果需要修改某常量(比如把PI的精度从3.14修改为3.14159),只需要修改初始化常量的那一行赋值语句,而不需要把程序中所有用到此量的语句都修改一遍。2.2.3变量在程序运行过程中,其值可能会变化的量称为变量。变量代表内存中具有特定属性的存储单元,它用来存放数据。变量名实际上是以一个名字代表内存单元地址。变量必须创建和赋值后使用>>>aTraceback(mostrecentcalllast):File"<pyshell#0>",line1,in<module>

aNameError:name'a'isnotdefined>>>b=8>>>b82.2.3变量num表示人数salary表示薪酬tax表示税额变量命名要见名识义>>>num=5>>>salary=3450.7>>>tax=salary*5*0.152.2.3变量Python语言中,允许使用汉字字符作为变量名。>>>古诗='离离原上草'>>>print(古诗)离离原上草2.2.3变量2.2end数据类型数值类型序列类型整数类型浮点类型字符串列表元组复数类型布尔类型其他类型集合字典2.3编程语言中的数据类型Python语言2.3.1数值型数据1.整型2.浮点类型3.

复数类型4.布尔类型四种进制表示——引导符十进制:默认二进制:“0b”或者“0B”八进制:“0o”或者“0O”十六进制:“0x”或者“0X”1.整型2.3.1数值型数据思考:如何使用不同的进制表示整数20?>>>a=0b10100#二进制>>>b=0o24#八进制>>>c=20#十进制>>>d=0x14#十六进制>>>print(a,b,c,d)202020201.整型2.3.1数值型数据

两种表示方法十进制:78.67,5.科学计数法:4.5e-2,5.8E2,-56e-1002.浮点类型(实数类型)2.3.1数值型数据思考:程序的输出结果是什么?>>>a=6.68>>>b=-5.>>>c=.9>>>d=4.72e-2>>>e=3.6E3>>>print(a,b,c,d,e)2.浮点型2.3.1数值型数据6.68-5.00.90.04723600.0中国矿业大学计算机学院浮点数间运算存在不确定尾数>>>0.1+0.30.4>>>0.1+0.20.300000000000000042.3.1数值型数据2.浮点型

复数表示方法实数部分和虚数部分必须都是浮点数,如:1+2j;虚数部分必须有后缀j或J。3.复数类型2.3.1数值型数据内置函数complex(real,imag)通过传入实部real和虚部imag的方式定义复数。对于复数a,使用a.real和a.imag获得其实部和虚部。>>>a=5+6J>>>b=complex(3,2)>>>c=complex(8)>>>print(a,b,c)(5+6j)(3+2j)(8+0j))>>>print(a.real,a.imag)5.06.02.3.1数值型数据3.复数类型也称逻辑类型,仅有True(真)和False(假)两个取值Python使用1表示True而使用0表示False内置函数int(布尔类型转换成整型),bool(整型转为布尔类型)>>>print(int(True),int(False))10>>>print(bool(0),bool(1))FalseTrue2.3.1数值型数据4.布尔类型2.3.2序列序列是一种最基本、最重要的数据结构。aStr='Hello,World!'aList=[2,3,5,7,11]aTuple=('Sunday','happy'

)x=list(range(10))pList=[(1,2,3),(4,5,6),(7,8,9)]01字符串02列表03元组单引号、双引号、三引号内的都是字符串,不可变类型强大的类型,用方括号[]界别,可变类型与列表相似,用小括号()界别,不可变类型2.3.2序列单引号双引号三单引号三双引号>>>astr='simpleisbetter'>>>astr'simpleisbetter'>>>bstr='''explicitisbetter'''>>>bstr'explicit\nis\nbetter'1.字符串(1)字符串的表示三引号表示的字符串可作注释(1)字符串的表示1.字符串【例2-4】字符串的使用。s1="\t众里寻他千百度\n\t蓦然回首\n\t那人却在灯火阑珊处"s2='\tIfwintercomes,\n\tcanspringbefarbehind?'print('s1字符串长度是',len(s1))print(s1)print('s2字符串长度是',len(s2))print(s2)\t表示横向制表符\n表示换行符len()函数功能是求字符串的长度,序列通用函数s1字符串长度是25

众里寻他千百度

蓦然回首

那人却在灯火阑珊处s2字符串长度是45 Ifwintercomes, canspringbefarbehind?1.字符串反斜杠“\”开头紧跟字符,有转义的功能。字符说明\0空字符\t横向制表符\n换行\r回车\”双引号\’单引号\\反斜杠\(在行尾时)续行符\000值为八进制数000的字符\xhh值为十六进制数hh的字符>>>fstr='\101\t\x41\n'>>>print(fstr)A A>>>gstr='d:\\python\\n.py'>>>print(gstr)d:\python\n.py转义字符字符说明\0空字符\t横向制表符\n换行\r回车\”双引号\’单引号\\反斜杠\(在行尾时)续行符\000值为八进制数000的字符\xhh值为十六进制数hh的字符>>>s='123abc\061abc'>>>print(s)123abc1abc反斜杠“\”开头紧跟字符,有转义的功能。转义字符字符说明\0空字符\t横向制表符\n换行\r回车\”双引号\’单引号\\反斜杠\(在行尾时)续行符\000值为八进制数000的字符\xhh值为十六进制数hh的字符>>>s='we\'rehappy'>>>print(s)we'rehappy>>>s='\"nopains,nogains\"'>>>print(s)"nopains,nogains"反斜杠“\”开头紧跟字符,有转义的功能。转义字符重复连接s

*

n或

n

*

s字符串1

+

字符串2(2)字符串的连接和重复1.字符串复制n次字符串,可以使用重复运算符“*”实现,语法形式为:

字符串*n

或者

n*字符串

其中:n是一个整数,表示复制的次数。>>>'apple'*3'appleappleapple'(2)字符串的连接和重复1.字符串将两个字符串连接可使用连接运算符“+”实现,语法形式为:字符串1+字符串2>>>'pine'+'apple''pineapple'(2)字符串的连接和重复1.字符串>>>print('唧'*2+'复'+'唧'*2+','+'木兰当户织')唧唧复唧唧,木兰当户织(2)字符串的连接和重复1.字符串(3)字符串索引

字符串一般是由0或多个字符组成,每个字符称为元素,每个元素可以通过索引(index)进行访问。索引值用方括号“[]”表示。如:

>>>ch="hello,world">>>ch[0]

'h'1.字符串正向索引01234慈母手中线反向索引-5-4-3-2-1元素从0开始通过下标偏移量访问一次可访问一个或多个元素可以使用正向索引号,也可使用反向索引号正向索引01234hello反向索引-5-4-3-2-1(3)字符串索引1.字符串>>>s='谁言寸草心,报得三春晖'>>>print(s[1]+s[4],s[-1]+s[-2])言心晖春>>>ss='hello,world'>>>print(ss[0]+ss[5],ss[-3]+ss[-5])h,rw(3)字符串索引1.字符串

如果访问字符串中多个元素,可以通过序列类型的切片操作实现。切片操作的形式为:功能:从“起始位置”开始,间隔“步长”,直到“终止位置”的前一个字符结束的字符串。字符串[<起始位置>:<终止位置>:<步长>](4)字符串切片1.字符串>>>astr='simpleisbetter'>>>astr[:6]'simple'>>>astr[-6:]'better'>>>astr[:]'simpleisbetter'与astr[-6:-1]的区别'bette'>>>astr[::2]'smlsbte'>>>astr[5:1:-2]'ep'>>>astr='simpleisbetter'(4)字符串切片1.字符串>>>s='人生若只如初见,何事秋风悲画扇。'>>>print(s[3],s[0:10:2],s[:10],s[10:],sep='|')只|人若如见何|人生若只如初见,何事|秋风悲画扇。设置输出数据项间的分隔符(4)字符串切片1.字符串

判断一个字符串是否为另一个字符串的子串,可以使用in和notin这两个成员运算符。语法形式为:objinsequenceobjnotinsequence>>>s='人生若只如初见,何事秋风悲画扇。'>>>'只'insTrue(5)字符串成员判断1.字符串

单个字符和数字可以使用ord()函数和chr()函数转换>>>ord('a')#返回'a'字符的ASCII值(十进制值)97>>>chr(65)#返回ASCII值为65的字符A(6)字符串与数字的转换1.字符串例:编写程序,输出字符'B'和'b'的ASCIII码值,输出ASCIII码值为100所对应的字符。小练习print(ord('B'),ord('b'))print(chr(100))附录:字符串的方法

方法是指一段封装的代码,必须通过名字来调用,实现特定功能。语法为:字符串对象.方法名(参数)>>>s="HELLO">>>s.lower()'hello'1.字符串方法功能S.center(width[,填充符号])返回一个在长度width参数规定的宽度居中的字符串S.count(sub[,start[,end]])返回子字符串sub在字符串中出现的次数S.lower()将字符串中所有大写字母改成小写S.find(sub[,start[,end]])返回在字符串S的切片中子字符串sub出现的第一个位置。若没有找到,返回-11.字符串附录:字符串的方法方法功能S.index(sub,[,start[,end]])返回找到子串出现的第一个位置,没有找到,产生异常S.join(iter)以字符串S为分隔符,将iter中的元素以字符串形式链接起来,返回新一个字符串S.replace(old,new)将字符串中的子串old替换成newS.split(sep,maxsplit)以sep为分隔符对字符串切片操作将其分成若干个元素,返回组成的列表1.字符串附录:字符串的方法>>>'love'.join(['I','Python!'])'IlovePython!'>>>''.join(['Hello,','World'])'Hello,World'>>>'->'.join(('BA','TheBoeingCompany','184.76'))'BA->TheBoeingCompany->184.76'连接join()夹塞儿连接1.字符串分割split()>>>'2021329'.split()['2021','3','29']>>>dStr='Iamastudent'>>>dStr.split()['I','am','a','student']>>>dStr.split('',2)['I','am','astudent']>>>'2021.3.29'.split('.')['2021','3','29']无参数,则以空格为分隔符进行分隔;其结果是列表。1.字符串例:给出一个字符串,不区分大小写,字符串中可能包含大写字母、小写字母、空格等字符。输出字母a(包括大小写)出现的次数。测试数据:abc&ABC。s1="abc&ABC"s=s1.lower()n=s.count("a")print(n)1.字符串—应用例:编写程序,从键盘输入一个字符串,判断(==)其是否为回文串。回文串即从左至右读入与从右往左读一样的字符串,例如aba,stts。1.字符串—应用s=input("pleaseinputastring:")print(s==s[::-1])例2-12:统计单词个数。设计程序:从键盘输入一个英文句子(句子中的标点符号有英文的句号和逗号)和一个单词,查看句子中指定的单词(不区分大小写)出现的次数。1.字符串—应用lower()replace()split()count()1.字符串—应用s1=input("pleaseinputastring:")s2=input("pleaseinputaword:")snew=s1.lower()snew=snew.replace(",","")snew=snew.replace(".","")list1=snew.split()num=list1.count(s2)print(num)pleaseinputastring::nopain,nogain.pleaseinputaword:no2BAC经典的序列类型可变的容器包含不同类型元素2.列表(1)列表的定义与访问>>>list1=[]#创建空列表>>>list2=[1,2,3]#创建含有1,2,3整型元素的列表>>>list3=['a','b','c']#创建含有a,b,c三个字符的列表>>>list4=[''red'',''yellow'']#创建含有red和yellow字符串的列表2.列表(1)列表的定义与访问>>>list1=list()#创建空列表>>>list2=list(range(1,3))

#创建含有1,2整型元素的列表>>>list3=list("abc")#创建含有a,b,c三个字符的列表>>>list2[0]1>>>list3[2]'c'2.列表列表可以直接利用list()函数创建列表可以修改元素值>>>eList=['Sun','Mon','Tue','Wed','Thu','Fri','Sat']>>>eList[0]='sun'>>>eList['sun','Mon','Tue','Wed','Thu','Fri','Sat']>>>eList[1:2]=[]>>>eList['sun','Tue','Wed','Thu','Fri','Sat']与eList[1]=[]是否一样?>>>eList[1:2]==eList[1]False>>>eList[1:2]['Tue']>>>eList[1]'

Tue'2.列表(2)列表的操作【例2-5】列表的操作。weekList=['Sun.','Mon.','Tues.','Wed.','Thur.','Fri.','Sat.']print(weekList[1:3])weekList.pop(6);print(weekList)weekList.append('Sat.');print(weekList)weekList.remove('Mon.');print(weekList)weekList.sort();print(weekList)weekList.reverse();print(weekList)append()方法:参数作为一个整体添加到列表末尾。pop方法()删除某一个位置的元素,默认最后一个。参数是索引。['Mon.','Tues.']['Sun.','Mon.','Tues.','Wed.','Thur.','Fri.']['Sun.','Mon.','Tues.','Wed.','Thur.','Fri.','Sat.']2.列表(2)列表的操作【例2-5】列表的操作。weekList=['Sun.','Mon.','Tues.','Wed.','Thur.','Fri.','Sat.']print(weekList[1:3])weekList.pop(6);print(weekList)weekList.append('Sat.');print(weekList)weekList.remove('Mon.');print(weekList)weekList.sort();print(weekList)weekList.reverse();print(weekList)sort()方法:无参数默认表示按数的大小递增排序remove()方法:删除某个数,删除第1个找到的这个数。需要删除的数要在列表中有,否则就出错。翻转列表['Sun.','Tues.','Wed.','Thur.','Fri.','Sat.']['Fri.','Sat.','Sun.','Thur.','Tues.','Wed.']['Wed.','Tues.','Thur.','Sun.','Sat.','Fri.']2.列表L.append(x)向列表尾部添加对象xL.copy()生成一个列表的(浅)拷贝L.count(x)返回x在列表中出现的次数L.extend(t)将t的每一个元素添加到列表尾部L.index(x,i,j)返回x在列表中的索引值,索引值范围在[i,j)之间附录:列表的方法2.列表附录:列表的方法L.insert(i,x)在列表中索引值为i的位置插入对象xL.pop(i)删除索引值为i的列表对象,i缺省时删除最后一个对象L.remove(x)删除第一个找到的xL.reverse()翻转列表L.sort()将列表排序2.列表>>>aList=[1,2,3]>>>aList.append(4)>>>aList[1,2,3,4]>>>aList.append([5,6])>>>aList[1,2,3,4,[5,6]]>>>aList.append('Python!')>>>aList[1,2,3,4,[5,6],'Python!']append()参数作为一个整体添加到列表末尾。2.列表>>>bList=[1,2,3]>>>bList.extend([4])>>>bList[1,2,3,4]>>>bList.extend([5,6])>>>bList[1,2,3,4,5,6]>>>bList.extend('Python!')>>>bList[1,2,3,4,5,6,'P','y','t','h','o','n','!']extend()参数是一个可迭代对象,将该对象中的每个元素一个一个依次添加到列表末尾。2.列表>>>jScores=[9,9,8.5,10,7,8,8,9,8,10]>>>jScores.sort()>>>jScores[7,8,8,8,8.5,9,9,9,10,10]sort()无参数默认表示按数的大小递增排序list.sort(key=None,reverse=False)2.列表list1=[8,9,7,9,8,10,8,9,9,8]list2=list1.sort()print(list2)sort()sort方法不可以将原列表排序后,直接拷贝给新列表;但是可以在排序后,再赋值给新列表。list1=[8,9,7,9,8,10,8,9,9,8]list1.sort()list2=list1print(list2)2.列表>>>numList=[3,11,5,8,16,1]>>>numList.sort(reverse=True)>>>numList[16,11,8,5,3,1]递减排序list.sort(key=None,reverse=False)2.列表>>>fruitList=['apple','banana','pear','lemon','avocado']>>>fruitList.sort(key=len)>>>fruitList['pear','apple','lemon','banana','avocado']按字符串中字符的个数排序list.sort(key=None,reverse=False)2.列表>>>fruitList=['apple','banana','pear','lemon','avocado']>>>fruitList.sort(key=len,reverse=True

)>>>fruitList['avocado','banana','apple','lemon','pear']>>>fruitList=['apple','banana','pear','lemon','avocado']>>>fruitList.sort(reverse=True,key=len)>>>fruitList['avocado','banana','apple','lemon','pear']list.sort(key=None,reverse=False)key和reverse的顺序没有特别的要求。2.列表例:某省组织跳水比赛,每个跳水选手的得分由10名评委决定,得分规则是去掉10名评委所打分数的一个最高分和一个最低分,其他评委分数的平均值。某选手评委打出的10个分数:8.5、9、9、10、7、8、8、9、8和10,请计算并输出该选手的最终得分。2.列表—应用sort()pop()sum()len()[7,8,8,8,8.5,9,9,9,10,10][7,8,8,8,8.5,9,9,9,10][8,8,8,8.5,9,9,9,10]Scores=[8.5,9,9,10,7,8,8,9,8,10]Scores.sort()Scores.pop()Scores.pop(0)aveScore=sum(Scores)/len(Scores)print(aveScore)2.列表—应用例:某高校举办程序设计大赛,进入程序设计大赛的决赛学生学号名单J0806,J0723,B0605,S0901,Z0403和A1010。请计算共有多少个学生进入了程序设计大赛的决赛名单。

请分别使用列表和字符串存储学号名单,计算并输出程序设计决赛人数。len()split()count()2.列表—应用lst=['J0806','J0723','B0605','S0901','Z0403','A1010']s='J0806,J0723,B0605,S0901,Z0403,A1010'num1=len(lst)print(num1)num2=s.count(',')+1num3=len(s.split(','))print(num2,num3)2.列表—应用3.元组特点:元组用圆括号()标识;元组可以存储不同类型的数据对象;>>>t1=(

)>>>t2=(1,3,5)>>>t2(1,3,5)>>>k=1,2,'a'>>>k(1,2,'a')(1)元组的定义与访问特点:元组是不可变的;元组适用于元素不需要改变或需要保护的场景。>>>aTuple=(1,2,3)>>>aTuple[1]=20TypeError:'tuple'objectdoesnotsupportitemassignment(1)元组的定义与访问3.元组(2)元组的操作3.元组【例2-6】元组的操作。tuple1=("red","green","blue");print(tuple1)tuple2=(9,8.5,10,7,8,6);print(tuple2)print("Lengthis",len(tuple2))print("Maxis",max(tuple2))print("Minis",min(tuple2))print("Sumis",sum(tuple2))print("Thefirstelement:",tuple2[0])tuple3=tuple1+tuple2;print(tuple3)tuple4=2*tuple1;print(tuple4)print(tuple1[-1])print(tuple2[2:4])print(8intuple2)print(sorted(tuple2))max(),min(),sum()是序列通用函数。sorted()函数用于所有序列类型,返回值是一个新的排好序的列表,而参数中的原序列没有任何变化。3.元组tuple1=("red","green","blue");

tuple2=(9,8.5,10,7,8,6);

print("Lengthis",len(tuple2))print("Maxis",max(tuple2))print("Minis",min(tuple2))print("Sumis",sum(tuple2))print("Thefirstelement:",tuple2[0])tuple3=tuple1+tuple2;print(tuple3)tuple4=2*tuple1;print(tuple4)print(tuple1[-1])print(tuple2[2:4])print(8intuple2)print(sorted(tuple2))lengthis6maxis10minis6sumis48.5Thefirstelement:9('red','green','blue',9,8.5,10,7,8,6)('red','green','blue','red','green','blue')blue(10,7)True[6,7,8,8.5,9,10]2.3.2序列函数功能list(iter)将可迭代对象iter转换成列表tuple(iter)将可迭代对象iter转换成表示元组str(obj)将对象obj转换成字符串附录:序列通用函数>>>list('Hello,World!')['H','e','l','l','o',',','','W','o','r','l','d','!']>>>tuple("Hello,World!")('H','e','l','l','o',',','','W','o','r','l','d','!')>>>list((1,2,3))[1,2,3]>>>tuple([1,2,3])(1,2,3)>>>str(100)'100'>>>str((1,2,3))'(1,2,3)'>>>str([1,2,3])'[1,2,3]'2.3.2序列函数功能len(s)返回序列s的长度sorted(iter,key,reverse)返回排序列表,key指定排序规则,reverse指定顺序还是逆序排列reversed(s)返回序列s翻转后的迭代器sum(iter,start)将iter中的数值和start参数的值相加2.3.2序列附录:序列通用函数>>>aStr='Hello,World!'>>>len(aStr)12>>>nList=[3,2,5,1]>>>m=sorted(nList)>>>m[1,2,3,5]>>>nList[3,2,5,1]len()sorted()比较:>>>nList=[3,2,5,1]>>>nList.sort()>>>nList[1,2,3,5]>>>ch='hello'>>>sorted(ch)['e','h','l','l','o']2.3.2序列序列类型的内建函数返回的是排序后的新列表,原列表内容不变。sorted()列表的方法对原列表排序,改变原列表内容。列表.sort()字符串和元组(字符串和元组都是不可变的)没有sort()方法2.3.2序列>>>nList=[3,2,5,1]>>>reversed(nList)<list_reverseiteratorobjectat0x0000018024361B70>>>>list(reversed(nList))[1,5,2,3]>>>nList[3,2,5,1]>>>''.join(list(reversed('12345678')))'87654321''12345678'[::-1]2.3.2序列reversed()序列类型的内建函数返回的是序列翻转后的迭代器,原列表内容不变。reversed()列表的方法在原列表上直接翻转,并得到翻转列表,改变原列表内容。列表.reverse()字符串和元组(字符串和元组都是不可变的)没有reverse()方法。2.3.2序列例:从键盘输入一个字符串,按照字符串中字母的ASCII顺序排序后,以字符串的形式输出。s=input("inputastring:")ss=sorted(s)print(''.join(ss))2.3.2序列序列通用函数举例S.join(iter)以字符串S为分隔符,将iter中的元素以字符串形式链接起来,返回新一个字符串什么是集合?

一个无序不重复的元素的组合。可变集合(set)不可变集合(frozenset)2.3.3集合与字典>>>names=['Wangdachui','Niuyun','Wangzi','Wangdachui','Lilin','Niuyun']>>>namesSet=set(names)>>>namesSet{'Wangzi','Lilin','Niuyun','Wangdachui'}>>>n=list(namesSet)>>>n['Wangzi','Lilin','Niuyun','Wangdachui']例:人事部门的一份工资信息表登记时由于工作人员的疏忽有部分姓名

重复登记了,如何快速解决这个问题??1.集合

集合用“{}”来表示,每个元素用逗号分隔;可通过赋值直接创建集合。例:>>>s2

={1,2,3}>>>s2{1,2,3}>>>type(s2)<class'set'>(1)集合的定义与访问1.集合使用set()函数创建可变集合;frozenset()函数创建不可变集合。>>>s3=set("abad")>>>s3{'d','b','a'}>>>s4=frozenset('hello')>>>s4frozenset({'h','e','l','o'})(1)集合的定义与访问字符a在字符串中出现两次,但集合中不存储重复元素1.集合(2)集合的操作1.集合【例2-7】集合的操作。s1={'万','紫','千','红','总','是'}print(s1)s1.add('春')print(s1)s1.discard('总')print(s1)s2=s1.copy()

print(s2)s2.clear()print(s2)往集合中添加元素如果元素在集合中,则删除该元素,不在集合中则不会报错返回集合的一个副本删除集合中所有元素{'万','红','总','紫','是','千'}{'万','春','红','总','紫','是','千'}{'万','春','红','紫','是','千'}{'万','是','春','红','千','紫'}set()2.字典salaries[1]>>>names=['Mayue','Lilin','Wuyun']>>>salaries=[3000,4500,8000]>>>print(salaries[names.index('Lilin')])例:某公司人事部门让技术部门用Python构建一个简易的员工信息表,

包含员工的姓名和工资信息。根据信息表查询员工Lilin的工资。4500字典是Python中唯一内建的映射类型。键(key)值(value)key-value对键是唯一的:数字字符串元组2.字典字典举例:aInfo={'Mayue':3000,'Lilin':4500,'Wuyun':8000}keyvalue'Mayue'3000'Lilin'4500'Wuyun'8000>>>sorted(aInfo)['Lilin','Mayue','Wuyun']字典中的元素是无序的2.字典>>>Addr={'张林':'zl@123.com','王方':'wf@456.com','李丽':'ll@789.com'}>>>print(Addr['李丽'])ll@789.com通过大括号{}直接创建;每个元素用逗号分隔;每个元素内使用冒号形成键值对(key-value)。(1)字典的定义与访问2.字典(2)字典的操作【例2-8】字典的操作。d1={'zhang':89,'wang':70,'li':90}print("d1的长度:",len(d1))print("d1的键列表:",d1.keys())print("d1的值列表:",d1.values())d1['chen']=78d1['li']=99print("添加和修改:",d1)print(sorted(d1.items()))keys()方法返回字典的键的列表;values()方法返回字典的值的列表;items()方法返回字典的键值对(元组)构成的列表d1的长度:3d1的键列表:dict_keys(['zhang','wang','li'])d1的值列表:dict_values([89,70,90])添加和修改:{'zhang':89,'wang':70,'li':99,'chen':78}[('chen',78),('li',99),('wang',70),('zhang',89)]2.字典排序函数获取字典的元素个数例:已知有员工姓名和工资信息表{'Wangdachui':3000,'Niuyun':2000,

'Lilin':4500,'Tianqi':8000},如何单独输出员工姓名和工资金额?>>>aInfo={'Wangdachui':3000,'Niuyun':2000,'Lilin':4500,'Tianqi':8000}>>>list(aInfo.keys())['Tianqi','Wangdachui','Niuyun','Lilin']>>>list(aInfo.values())[8000,3000,2000,4500]2.字典>>>aInfo={'Wangdachui':3000,'Niuyun':2000,'Lilin':4500}>>>bInfo={'Wangdachui':4000,'Niuyun':9999,'Wangzi':6000}>>>aInfo.update(bInfo)>>>aInfo{'Wangzi':6000,'Lilin':4500,'Wangdachui':4000,'Niuyun':9999}例:人事部门有两份人员和工资信息表,第一份是原有信息,第二份是公司

中有工资更改人员和新进人员的信息,如何处理可以较快地获得完整的

信息表?2.字典将bInfo中的键值对添加到aInfo中,如果键已经存在,则更新键对应的值2.3end2.4运算符与表达式2.4.1表达式2.4.2运算符2.4.3常用内置函数2.4.4math模块2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论