版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
函数和代码的复用函数的定义微实例:生日歌。过生日时要为朋友唱生日歌,歌词为:Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dear<名字>Happybirthdaytoyou!编写程序为Mike和Lily输出生日歌。最简单的实现方法是重复运用print()语句函数的根本运用函数的定义函数是一段具有特定功能的、可重用的语句组,用函数名来表示并经过函数名进展完胜利能调用。函数也可以看作是一段具有名字的子程序,可以在需求的地方调用执行,不需求在每个执行地方反复编写这些语句。每次运用函数可以提供不同的参数作为输入,以实现对不同数据的处置;函数执行后,还可以反响相应的处置结果。函数是一种功能笼统函数的定义Python定义一个函数运用def保管字,语法方式如下:def<函数名>(<参数列表>): '''注释'''<函数体>return<前往值列表>函数的定义1234print("Happybirthdaytoyou!")print("Happybirthdaytoyou!")print("Happybirthday,dearMike!")print("Happybirthdaytoyou!")最简单的实现方法是反复运用print()语句,如下:函数的定义微实例5.1m5.1HappyBirthday.py12345678910defhappy():print("Happybirthdaytoyou!")defhappyB(name):happy()happy()print("Happybirthday,dear{}!".format(name))happy()happyB("Mike")print()happyB("Lily")>>>Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dearMike!Happybirthdaytoyou!Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dearLily!Happybirthdaytoyou!函数调用的过程程序调用一个函数需求执行以下四个步骤:〔1〕调用程序在调用途暂停执行;〔2〕在调用时将实参复制给函数的形参;〔3〕执行函数体语句;〔4〕函数调用终了给出前往值,程序回到调用前的暂停处继续执行。函数调用的过程微实例5.1中happyB()的被调用过程函数调用的过程函数调用的过程lambda函数Python的有33个保管字,其中一个是lambda,该保管字用于定义一种特殊的函数——匿名函数,又称lambda函数。匿名函数并非没有名字,而是将函数名作为函数结果前往,如下:<函数名>=lambda<参数列表>:<表达式>lambda函数与正常函数一样,等价于下面方式:def<函数名>(<参数列表>):return<表达式>lambda函数简单说,lambda函数用于定义简单的、可以在一行内表示的函数,实例如下。>>>f=lambdax,y:x+y>>>type(f)<class'function'>>>>f(10,12)22函数的参数传送可选参数和可变数量参数在定义函数时,有些参数可以存在默许值。默许值参数必需出如今函数参数列表的最右端,且任何一个默许值参数右边不能有非默许值参数。>>>defdup(str,times=2):print(str*times)>>>dup("knock~")knock~knock~>>>dup("knock~",4)knock~knock~knock~knock~可选参数和可变数量参数在函数定义时,可以设计可变数量参数,经过参数前添加星号〔*〕实现>>>defvfunc(a,*b):print(type(b))forninb:a+=nreturna>>>vfunc(1,2,3,4,5)<class'tuple'>15参数的位置和称号传送Python提供了按照形参称号输入实参的方式,调用如下:result=func(x2=4,y2=5,z2=6,x1=1,y1=2,z1=3)由于调用函数时指定了参数称号,所以参数之间的顺序可以恣意调整。变量的前往值return语句用来退出函数并将程序前往到函数被调用的位置继续执行。return语句同时可以将0个、1个或多个函数运算完的结果前往给函数被调用途的变量,例如。>>>deffunc(a,b):returna*b>>>s=func("knock~",2)>>>print(s)knock~knock~变量的前往值函数可以没有return,此时函数并不前往值,如微实例5.1的happy()函数。函数也可以用return前往多个值,多个值以元组类型保管,例如。>>>deffunc(a,b):returnb,a>>>s=func("knock~",2)>>>print(s,type(s))(2,'knock~')<class'tuple'>函数对变量的作用一个程序中的变量包括两类:全局变量和部分变量。全局变量指在函数之外定义的变量,普通没有缩进,在程序执行全过程有效。部分变量指在函数内部运用的变量,仅在函数内部有效,当函数退出时变量将不存在。变量的前往值>>>deffunc(a,b):c=a*b#c是部分变量,a和b作为函数参数也是部分变量returnc>>>s=func("knock~",2)>>>print(c)Traceback(mostrecentcalllast):File"<pyshell#6>",line1,in<module>print(c)NameError:name'c'isnotdefined这个例子阐明,当函数执行完退出后,其内部变量将被释放。假设函数内部运用了全局变量呢?变量的前往值>>>n=1 #n是全局变量>>>deffunc(a,b):n=b #这个n是在函数内存中新生成的部分变量,不是全局变量returna*b>>>s=func("knock~",2)>>>print(s,n) #测试一下n值能否改动knock~knock~1函数func()内部运用了变量n,并且将变量参数b赋值给变量n,为何全局变量n值没有改动?变量的前往值假设希望让func()函数将n当作全局变量,需求在变量n使用前显式声明该变量为全局变量,代码如下。>>>n=1 #n是全局变量>>>deffunc(a,b):globalnn=b #将部分变量b赋值给全局变量nreturna*b>>>s=func("knock~",2)>>>print(s,n) #测试一下n值能否改动knock~knock~2变量的前往值假设此时的全局变量不是整数n,而是列表类型ls,会怎样样呢?了解如下代码。>>>ls=[] #ls是全局列表变量>>>deffunc(a,b):ls.append(b) #将部分变量b添加到全局列表变量ls中returna*b>>>s=func("knock~",2)>>>print(s,ls) #测试一下ls值能否改动knock~knock~[2]变量的前往值假设func()函数内部存在一个真实创建过且称号为ls的列表,那么func()将操作该列表而不会修正全局变量,例子如下。>>>ls=[] #ls是全局列表变量>>>deffunc(a,b):ls=[] #创建了称号为ls的部分列表变量列ls.append(b) #将部分变量b添加到全局列表变量ls中returna*b>>>s=func("knock~",3)>>>print(s,ls) #测试一下ls值能否改动knock~knock~[]变量的前往值Python函数对变量的作用遵守如下原那么:对于简单数据类型变量无论能否与全局变量重名,仅在函数内部创建和运用,函数退出后变量被释放;简单数据类型变量在用global保管字声明后,作为全局变量;对于组合数据类型的全局变量,假设在函数内部没有被真实创建的同名变量,那么函数内部可直接运用并修正全局变量的值;假设函数内部真实创建了组合数据类型变量,无论能否有同名全局变量,函数仅对部分变量进展操作。案例精选例:编写函数模拟猜数游戏。系统随机产生一个数,玩家最多可以猜5次,系统会根据玩家的猜测进展提示,玩家那么可以根据系统的提示对下一次的猜测进展适当调整。案例精选fromrandomimportrandintdefguess(maxValue=100,maxTimes=5):value=randint(1,maxValue)#随机生成一个整数foriinrange(maxTimes):prompt='StarttoGUESS:'ifi==0else'Guessagain:'#运用异常处置构造,防止输入不是数字的情况try:x=int(input(prompt))except:print('Mustinputanintegerbetween1and',maxValue)else:ifx==value:#猜对了print('Congratulations!')breakelifx>value:print('Toobig')else:print('Toolittle')else:#次数用完还没猜对,游戏终了,提示正确答案print('Gameover.FAIL.')print('Thevalueis',value)小练习:运用turtle绘制阴阳图形datetime库的运用datetime库概述以不同格式显示日期和时间是程序中最常用到的功能。Python提供了一个处置时间的规范函数库datetime,它提供了一系列由简单到复杂的时间处置方法。datetime库可以从系统中获得时间,并以用户选择的格式输出。datetime库概述datetime库以类的方式提供多种日期和时间表达方式:类datetime.date:可以表示年、月、日等类datetime.time:可以表示小时、分钟、秒、毫秒等类datetime.datetime:日期和时间表示的类,其很多功能覆盖date和time类类datetime.timedelta:时间间隔有关的类类datetime.tzinfo:与时区有关的信息表示类datetime库解析运用datetime.now()获得当前日期和时间对象,运用方法如下:fromdatetimeimportdatetimedatetime.now()作用:前往一个datetime类型,表示当前的日期和时间,准确到微秒。>>>fromdatetimeimportdatetime>>>today=datetime.now()>>>todaydatetime.datetime(2021,9,20,10,29,43,928549)datetime库解析运用datetime.utcnow()获得当前日期和时间对应的UTC〔世界规范时间〕时间对象,运用方法如下:datetime.utcnow()作用:前往datetime类型,表示当前日期和时间的UTC表示,准确到微秒。>>>today=datetime.utcnow()>>>todaydatetime.datetime(2021,9,20,2,35,1,427954)datetime库解析datetime.now()和datetime.utcnow()都返回一个datetime类型的对象,也可以直接运用datetime()构造一个日期和时间对象,运用方法如下:datetime(year,month,day,hour=0,minute=0,second=0,microsecond=0)作用:前往一个datetime类型,表示指定的日期和时间,可以准确到微秒。datetime库解析调用datetime()函数直接创建一个datetime对象,表示2021年9月16日22:33,32秒7微秒,执行结果如下:>>>someday=datetime(2021,9,16,22,33,32,7)>>>somedaydatetime.datetime(2021,9,16,22,33,32,7)程序曾经有了一个datetime对象,进一步可以利用这个对象的属性显示时间,为了区别datetime库名,采用上例中的someday替代生成的datetime对象datetime库解析属性描述someday.min固定返回datetime的最小时间对象,datetime(1,1,1,0,0)someday.max固定返回datetime的最大时间对象,datetime(9999,12,31,23,59,59,999999)someday.year返回someday包含的年份someday.month返回someday包含的月份someday.day返回someday包含的日期someday.hour返回someday包含的小时someday.minute返回someday包含的分钟someday.second返回someday包含的秒钟someday.microsecond返回someday包含的微秒值datetime库解析datetime对象有3个常用的时间格式化方法,如表所示>>>someday=datetime(2021,9,16,22,33,32,7)>>>someday.isoformat()'2021-09-16T22:33:32.000007'>>>someday.isoweekday()5属性描述someday.isoformat()采用ISO8601标准显示时间someday.isoweekday()根据日期计算星期后返回1-7,对应星期一到星期日someday.strftime(format)根据格式化字符串format进行格式显示的方法isoformat()和isoweekday()方法的运用如下:datetime库解析strftime()方法是时间格式化最有效的方法,几乎可以以任何通用格式输出时间>>>someday.strftime("%Y-%m-%d%H:%M:%S")'2021-09-1622:33:32'datetime库解析格式化字符串日期/时间值范围和实例%Y年份0001~9999,例如:1900%m月份01~12,例如:10%B月名January~December,例如:April%b月名缩写Jan~Dec,例如:Apr%d日期01~31,例如:25%A星期Monday~Sunday,例如:Wednesday%a星期缩写Mon~Sun,例如:Wed%H小时(24h制)00~23,例如:12%I小时(12h制)01~12,例如:7%p上/下午AM,PM,例如:PM%M分钟00~59,例如:26%S秒00~59,例如:26datetime库解析strftime()格式化字符串的数字左侧会自动补零,上述格式也可以与print()的格式化函数一同运用>>>fromdatetimeimportdatetime>>>now=datetime.now()>>>now.strftime("%Y-%m-%d")'2021-09-20'>>>now.strftime("%A,%d.%B%Y%I:%M%p")'Tuesday,20.September202101:53PM'>>>print("今天是{0:%Y}年{0:%m}月{0:%d}日".format(now))今天是2021年09月20日七段数码管绘制七段数码管绘制七段数码管〔seven-segmentindicator〕由7段数码管拼接而成,每段有亮或不亮两种情况,改良型的七段数码管还包括一个小数点位置,如下图。七段数码管绘制七段数码管能构成27=128种不同形状,其中部分形状能够显示易于人们了解的数字或字母含义,因此被广泛运用。图5.5给出了十六进制中16个字符的七段数码管表示。七段数码管绘制每个0到9的数字都有一样的七段数码管款式,因此,可以经过设计函数复用数字的绘制过程。进一步,每个七段数码管包括7个数码管款式,除了数码管位置不同外,绘制风格一致,也可以经过函数复用单个数码段的绘制过程。七段数码管绘制实例代码7.1e7.1DrawSevenSegDisplay.py123456789101112131415#e7.1DrawSevenSegDisplay.pyimportturtle,datetimedefdrawLine(draw): #绘制单段数码管turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)turtle.right(90)defdrawDigit(d):#根据数字绘制七段数码管drawLine(True)ifdin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)
ifdin[0,1,3,4,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,6,8]elsedrawLine(False)turtle.left(90)drawLine(True)ifdin[0,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,1,2,3,4,7,8,9]elsedrawLine(False)七段数码管绘制实例代码7.1e7.1DrawSevenSegDisplay.py1617181920212223242526272829turtle.left(180)turtle.penup()turtle.fd(20)defdrawDate(date): #获得要输出的数字foriindate:drawDigit(eval(i)) #注意:通过eval()函数将数字变为整数defmain():turtle.setup(800,350,200,200)turtle.penup()turtle.fd(-300)turtle.pensize(5)drawDate(datetime.datetime.now().strftime('%Y%m%d'))turtle.hideturtle()main()七段数码管绘制实例代码定义了drawDigit()函数,该函数根据输入的数字d绘制七段数码管,结合七段数码管构造,每个数码管的绘制采用图所示顺序。七段数码管绘制绘制起点在数码管中部左侧,无论每段数码管能否被绘制出来,turtle画笔都按顺序“画完〞一切7个数码管。对于给定数字d,哪个数码段被绘制出来采用if…else…语句判别。8drawLine(True)ifdin[2,3,4,5,6,8,9]elsedrawLine(False)七段数码管绘制七段数码管绘制七段数码管绘制实例代码7.2 e7.2DrawSevenSegDisplay.py123456789101112131415161718192021222324#e7.2DrawSevenSegDisplay.pyimportturtle,datetimedefdrawGap():#绘制数码管间隔turtle.penup()turtle.fd(5)defdrawLine(draw): #绘制单段数码管drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawDigit(d):#根据数字绘制七段数码管drawLine(True)ifdin[2,3,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,1,3,4,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,6,8]elsedrawLine(False)turtle.left(90)drawLine(True)ifdin[0,4,5,6,8,9]elsedrawLine(False)drawLine(True)ifdin[0,2,3,5,6,7,8,9]elsedrawLine(False)drawLine(True)ifdin[0,1,2,3,4,7,8,9]elsedrawLine(False)turtle.left(180)turtle.penup()turtle.fd(20)七段数码管绘制实例代码7.2e7.2DrawSevenSegDisplay.py25262728293031323334353637383940414243444546defdrawDate(date):turtle.pencolor("red")foriindate:ifi=='-':turtle.write('年',font=("Arial",18,"normal"))turtle.pencolor("green")turtle.fd(40)elifi=='=':turtle.write('月',font=("Arial",18,"normal"))turtle.pencolor("blue")turtle.fd(40)elifi=='+':turtle.write('日',font=("Arial",18,"normal"))else:drawDigit(eval(i))defmain():turtle.setup(800,350,200,200)turtle.penup()turtle.fd(-350)turtle.pensize(5)drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))turtle.hideturtle()main()函数的递归递归的定义函数作为一种代码封装,可以被其他程序调用,当然,也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。就像一个人站在装满镜子的房间中,看到的影像就是递归的结果。递归在数学和计算机运用上非常强大,可以非常简约的处理重要问题。递归的定义数学上有个经典的递归例子叫阶乘,阶乘通常定义为:n!n(n1)(n2)...(1)这个关系给出了另一种方式表达阶乘的方式:n0n!1n(n1)!otherwise
递归的运用方法微实例5.21:阶乘的计算。根据用户输入的整数n,计算并输出n的阶乘值。微实例5.21m5.1CalFactorial.py1234567deffact(n):ifn==0:return1else:returnn*fact(n-1)num=eval(input("请输入一个整数:"))print(fact(abs(int(num))))递归的运用方法递归的运用方法微实例5.32:字符串反转。对于用户输入的字符串s,输出反转后的字符串。处理这个问题的根本思想是把字符串看作一个递归对象。12defreverse(s):returnreverse(s[1:])+s[0]递归的运用方法察看这个函数的任务过程。s[0]是首字符,s[1:]是剩余字符串,将它们反向衔接,可以得到反转字符串。执行这个程序,结果如下>>>defreverse(s):returnreverse(s[1:])+s[0]>>>reverse("ABC")...RecursionError:maximumrecursiondepthexceeded科赫曲线绘制科赫曲线绘制自然界有很多图形很规那么,符合一定的数学规律,例如,蜜蜂蜂窝是天然的等边六角形等。科赫(Koch)曲线在众多经典数学曲线中非常著名,由瑞典数学家冯·科赫(H·V·Koch)于1904年提出,由于其外形类似雪花,也被称为雪花曲线。科赫曲线绘制科赫曲线绘制科赫曲线属于分形几何分支,它的绘制过程表达了递归思想,绘制过程代码。实例代码8.1e8.1DrawKoch.py12345678910111213141516171819#e8.1DrawKoch.pyimportturtledefkoch(size,n):ifn==0:turtle.fd(size)else:foranglein[0,60,-120,60]:turtle.left(angle)koch(size/3,n-1)defmain():turtle.setup(800,400)turtle.speed(0) #控制绘制速度turtle.penup()turtle.goto(-300,-50)turtle.pendown()turtle.pensize(2)koch(600,3) #0阶科赫曲线长度,阶数turtle.hideturtle()main()科赫曲线绘制实例代码8.2e8.2DrawKoch.py123456789101112131415161718192021222324#e8.2DrawKoch.pyimportturtledefkoch(size,n):ifn==0:turtle.fd(size)else:foranglein[0,60,-120,60]:turtle.left(angle)koch(size/3,n-1)defmain():turtle.setup(600,600)turtle.speed(0)turtle.penup()turtle.goto(-200,100)turtle.pendown()turtle.pensize(2)level=5koch(400,level)turtle.right(120)koch(400,level)turtle.right(120)koch(400,level)turtle.hideturtle()main()科赫曲线的雪花效果小练习:绘制谢宾斯基三角形汉诺塔游戏小练习:汉诺塔游戏defhoniMove(self,k,x,y,z):
#turtle.Screen().clear()
ifk>1:
self.honiMove(k-1,x,z,y)
z.push(x.pop())
self.honiMove(k-1,y,x,z)
else:
z.push(x.pop())Python内置函数Python内置函数〔BIF〕Python解释器提供了68个内置函数,其中大部分会经常用到abs()id()round()compile()locals()all()input()set()dir()map()any()int()sorted()exec()memoryview()asci()len()str()enumerate()next()bin()list()tuple()filter()object()bool()max()type()format()property()chr()min()zip()frozenset()repr()complex()oct()getattr()setattr()dict()open()globals()slice()divmod()ord()bytes()hasattr()staticmethod()eval()pow()delattr()help()sum()float()print()bytearray()isinstance()super()hash()range()callable()issubclass()vars()hex()reversed()classmethod()iter()
import()
常用内置函数内置函数不需求导入任何模块即可运用执行下面的命令可以列出一切内置函数>>>dir(__builtins__)Python规范库turtleforward()pencolor()……input()print()str()range()……time……………………………………函数功能简要说明abs(x)返回数字x的绝对值或复数x的模all(iterable)如果对于可迭代对象中所有元素x都等价于True,也就是对于所有元素x都有bool(x)等于True,则返回True。对于空的可迭代对象也返回Trueany(iterable)只要可迭代对象iterable中存在元素x使得bool(x)为True,则返回True。对于空的可迭代对象,返回Falseascii(obj)把对象转换为ASCII码表示形式,必要的时候使用转义字符来表示特定的字符bin(x)把整数x转换为二进制串表示形式bool(x)返回与x等价的布尔值True或Falsebytes(x)生成字节串,或把指定对象x转换为字节串表示形式callable(obj)测试对象obj是否可调用。类和函数是可调用的,包含__call__()方法的类的对象也是可调用的compile()用于把Python代码编译成可被exec()或eval()函数执行的代码对象complex(real,[imag])返回复数chr(x)返回Unicode编码为x的字符常用内置函数函数功能简要说明delattr(obj,name)删除属性,等价于deldir(obj)返回指定对象或模块obj的成员列表,如果不带参数则返回当前作用域内所有标识符divmod(x,y)返回包含整商和余数的元组((x-x%y)/y,x%y)enumerate(iterable[,start])返回包含元素形式为(0,iterable[0]),(1,iterable[1]),(2,iterable[2]),...的迭代器对象eval(s[,globals[,locals]])计算并返回字符串s中表达式的值exec(x)执行代码或代码对象xexit()退出当前解释器环境filter(func,seq)返回filter对象,其中包含序列seq中使得单参数函数func返回值为True的那些元素,如果函数func为None则返回包含seq中等价于True的元素的filter对象float(x)把整数或字符串x转换为浮点数并返回frozenset([x]))创建不可变的字典对象getattr(obj,name[,default])获取对象中指定属性的值,等价于,如果不存在指定属性则返回default的值,如果要访问的属性不存在并且没有指定default则抛出异常续表1常用内置函数函数功能简要说明globals()返回包含当前作用域内全局变量及其值的字典hasattr(obj,name)测试对象obj是否具有名为name的成员hash(x)返回对象x的哈希值,如果x不可哈希则抛出异常help(obj)返回对象obj的帮助信息hex(x)把整数x转换为十六进制串id(obj)返回对象obj的标识(内存地址)input([提示])显示提示,接收键盘输入的内容,返回字符串int(x[,d])返回实数(float)、分数(Fraction)或高精度实数(Decimal)x的整数部分,或把d进制的字符串x转换为十进制并返回,d默认为十进制isinstance(obj,class-or-type-or-tuple)测试对象obj是否属于指定类型(如果有多个类型的话需要放到元组中)的实例iter(...)返回指定对象的可迭代对象len(obj)返回对象obj包含的元素个数,适用于列表、元组、集合、字典、字符串以及range对象和其他可迭代对象续表2常用内置函数函数功能简要说明list([x])、set([x])、tuple([x])、dict([x])把对象x转换为列表、集合、元组或字典并返回,或生成空列表、空集合、空元组、空字典locals()返回包含当前作用域内局部变量及其值的字典map(func,*iterables)返回包含若干函数值的map对象,函数func的参数分别来自于iterables指定的每个迭代对象,max(x)、min(x)返回可迭代对象x中的最大值、最小值,要求x中的所有元素之间可比较大小,允许指定排序规则和x为空时返回的默认值next(iterator[,default])返回可迭代对象x中的下一个元素,允许指定迭代结束之后继续迭代时返回的默认值oct(x)把整数x转换为八进制串open(name[,mode])以指定模式mode打开文件name并返回文件对象ord(x)返回1个字符x的Unicode编码pow(x,y,z=None)返回x的y次方,等价于x**y或(x**y)%z续表3常用内置函数函数功能简要说明print(value,...,sep='',end='\n',file=sys.stdout,flush=False)基本输出函数quit()退出当前解释器环境range([start,]end[,step])返回range对象,其中包含左闭右开区间[start,end)内以step为步长的整数reduce(func,sequence[,initial])将双参数的函数func以迭代的方式从左到右依次应用至序列seq中每个元素,最终返回单个值作为结果。在Python2.x中该函数为内置函数,在Python3.x中需要从functools中导入reduce函数再使用repr(obj)返回对象obj的规范化字符串表示形式,对于大多数对象有eval(repr(obj))==objreversed(seq)返回seq(可以是列表、元组、字符串、range以及其他可迭代对象)中所有元素逆序后的迭代器对象续表4常用内置函数函数功能简要说明round(x[,小数位数])对x进行四舍五入,若不指定小数位数,则返回整数sorted(iterable,key=None,reverse=False)返回排序后的列表,其中iterable表示要排序的序列或迭代对象,key用来指定排序规则或依据,reverse用来指定升序或降序。该函数不改变iterable内任何元素的顺序str(obj)把对象obj直接转换为字符串sum(x,start=0)返回序列x中所有元素之和,要求序列x中所有元素必须为数字,允许指定起始值start,返回start+sum(x)type(obj)返回对象obj的类型zip(seq1[,seq2[...]])返回zip对象,其中元素为(seq1[i],seq2[i],...)形式的元组,最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个续表5常用内置函数常用内置函数dir()函数可以查看指定模块中包含的一切成员或者指定对象类型所支持的操作。help()函数那么前往指定模块或函数的阐明文档。importtimedir(time)help(time)常用内置函数ord()和chr()是一对功能相反的函数,ord()用来前往单个字符的序数或Unicode码,chr()用来前往某序数对应的字符str()那么直接将其恣意类型参数转换为字符串。>>>ord('a')97>>>chr(65)'A'>>>chr(ord('A')+1)'B'>>>str(1)'1'>>>str(1234)'1234'>>>str([1,2,3])'[1,2,3]'>>>str((1,2,3))'(1,2,3)'>>>str({1,2,3})'set([1,2,3])'常用内置函数max()、min()、sum()这三个内置函数分别用于计算列表、元组或其他可迭代对象中一切元素最大值、最小值以及一切元素之和,sum()要求元素支持加法运算,max()和min()那么要求序列或可迭代对象中的元素之间可比较大小。>>>importrandom>>>a=[random.randint(1,100)foriinrange(10)]#列表推导式>>>a[72,26,80,65,34,86,19,74,52,40]>>>print(max(a),min(a),sum(a))8619548假设需求计算该列表中的一切元素的平均值,可以直接这样用:>>>sum(a)*1.0/len(a)#Python2.7.1254.8>>>sum(a)/len(a)#Python3.5.254.8常用内置函数内置函数max()和min()的key参数可以用来指定比较规那么>>>x=['21','1234','9']>>>max(x)'9'>>>max(x,key=len)'1234'>>>max(x,key=int)'1234'常用内置函数内置函数type()和isinstance()可以判别数据类型。>>>type([3])#查看[3]的类型<class'list'>>>>type({3})in(list,tuple,dict)#判别{3}能否为list,tuple或dict类型的实例False>>>isinstance(3,int)#判别3能否为int类型的实例True>>>isinstance(3j,(int,float,complex))#判别3能否为int,float或complex类型True常用内置函数range()是非经常用的内置函数,语法格式为range([start,]end[,step])。该函数前往具有惰性求值特点的range对象,其中包含左闭右开区间[start,end)内以step为步长的整数。参数start默以为0,step默以为1。>>>range(5)#start默以为0,step默以为1range(0,5)>>>list(_)[0,1,2,3,4]>>>list(range(1,10,2))#指定起始值和步长[1,3,5,7,9]>>>list(range(9,0,-2))#步长为负数时,start应比end大[9,7,5,3,1]常用内置函数sorted()对列表、元组、字典、集合或其他可迭代对象进展排序并前往新列表,reversed()对可迭代对象〔生成器对象和具有惰性求值特性的zip、map、filter、enumerate等类似对象除外〕进展翻转〔首尾交换〕并前往可迭代的reversed对象。>>>x=['aaaa','bc','d','b','ba']>>>sorted(x,key=lambdaitem:(len(item),item))#先按长度排序,长度一样的正常排序['b','d','ba','bc','aaaa']>>>reversed(x)#逆序,前往reversed对象<list_reverseiteratorobjectat0x0000000003089E48>>>>list(reversed(x))#reversed对象是可迭代的[5,1,9,3,8,7,10,6,0,4,2]常用内置函数内置函数map()把一个函数func依次映射到序列或迭代器对象的每个元素上,并前往一个可迭代的map对象作为结果,map对象中每个元素是原序列中元素经过函数func处置后的结果。>>>list(map(str,range(5)))#把列表中元素转换为字符串['0','1','2','3','4']>>>defadd5(v):
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高考物理考前20天冲刺讲义(二)(原卷版)
- 企业管理制度文件汇编(建筑类)
- 军训服装回收活动方案
- 冀教版五年级英语下册教案
- 2026 自闭症课堂适配课件
- 2026 学龄前自闭症教师策略应用课件
- 2026 学龄前自闭症小组游戏训练课件
- 家长会课代表发言稿汇编15篇
- 工地电工个人工作总结
- 2025水库(清淤工程)合同
- 对外投资合作国别(地区)指南-马来西亚(2025年版)
- 单基因遗传病的分子生物学检验-医学院课件
- 华为智慧化工园区解决方案-
- 定量分析化学第六章重量分析法
- GB/T 37942-2019生产过程质量控制设备状态监测
- GB/T 2672-2017内六角花形盘头螺钉
- 电工巡视记录表(施工单位存放)
- 餐饮安全管理规章制度
- 装配钳工技能大赛实操试卷
- 配怀舍饲养管理操作流程
- 《马克思主义与社会科学方法论》课件第一讲马克思主义与社会科学方法论导论
评论
0/150
提交评论