Python基础教程第3章_第1页
Python基础教程第3章_第2页
Python基础教程第3章_第3页
Python基础教程第3章_第4页
Python基础教程第3章_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

Python程序设计教程授课教师:职务:第1页,共61页。第3章Python函数课程描述函数(function)由若干条语句组成,用于实现特定的功能。函数包含函数名、若干参数和返回值。一旦定义了函数,就可以在程序中需要实现该功能的位置调用该函数,给程序员共享代码带来了很大方便。在Python语言中,除了提供丰富的系统函数(本书前面已经介绍了一下常用的系统函数)外,还允许用户创建和使用自定义函数。第2页,共61页。本章知识点3.1声明和调用函数3.2参数和返回值3.3Python内置函数第3页,共61页。3.1声明和调用函数3.1.1自定义函数3.1.2调用函数3.1.3变量的作用域3.1.4在调试窗口中查看变量的值第4页,共61页。3.1.1自定义函数可以使用def关键字来创建Python自定义函数,其基本语法结构如下:def函数名(参数列表):

函数体参数列表可以为空,即没有参数;也可以包含多个参数,参数之间使用逗号(,)分隔。函数体可以是一条语句,也可以由一组语句组成。第5页,共61页。【例3-1】

创建一个非常简单的函数PrintWelcome,它的功能是打印字符串“欢迎使用Python”,代码如下:defPrintWelcome(): print("欢迎使用Python");第6页,共61页。【例3-2】定义函数PrintString(),通过参数决定要打印的内容。defPrintString(str): print(str);变量str是函数的参数。在函数体中,参数可以像其他变量一样被使用。可以在函数中定义多个参数,参数之间使用逗号分隔。第7页,共61页。【例3-3】定义一个函数sum(),用于计算并打印两个参数之和。函数sum()包含两个参数。参数num1和num2,代码如下:defsum(num1,num2): print(num1+num2);第8页,共61页。3.1.2调用函数可以直接使用函数名来调用函数,无论是系统函数还是自定义函数,调用函数的方法都是一致的。第9页,共61页。【例3-4】defPrintWelcome(): print("欢迎使用Python");PrintWelcome();第10页,共61页。【例3-5】defPrintString(str): print(str);PrintString("传递参数");第11页,共61页。【例3-6】defsum(num1,num2): print(num1+num2);sum(1,3);第12页,共61页。3.1.3变量的作用域在函数中也可以定义变量,在函数中定义的变量被称为局部变量。局部变量只在定义它的函数内部有效,在函数体之外,即使使用同名的变量,也会被看作是另一个变量。相应地,在函数体之外定义的变量是全局变量。全局变量在定义后的代码中都有效,包括它后面定义的函数体内。如果局部变量和全局变量同名,则在定义局部变量的函数中,只有局部变量是有效的。第13页,共61页。【例3-7】a=100; #全局变量defsetNumber(): a=10; #局部变量

print(a); #打印局部变量asetNumber();print(a); #打印全局变量$a第14页,共61页。3.1.4在调试窗口中查看变量的值1.设置断点2.单步调试第15页,共61页。1.设置断点断点是调试器的功能之一,可以让程序中断在需要的地方,从而方便对其进行分析。用鼠标右击要设置断点的程序行,在快捷菜单里选择SetBreakpont菜单项,会在当前行设置断点,该行代码会显示黄色背景。第16页,共61页。2.单步调试设置断点后,运行程序,可以停在断点处,然后一条语句一条语句的单步运行。单步调试可以看到程序的运行过程,同时可以查看在某一时刻某个变量的值。下面介绍在IDLE中单步调试程序的方法。例如在IDLE中打开例3-7.py,然后在菜单中选择Run/PythonShell,打开PythonShell窗口。在PythonShell的菜单中,选择Debug/Debugger,PythonShell窗口中会出现下面文字,[DEBUGON]同时打开DebugControl窗口第17页,共61页。程序停留在第1行第18页,共61页。程序停留在断点处第19页,共61页。3.2参数和返回值3.2.1在函数中传递参数3.2.2函数的返回值第20页,共61页。3.2.1在函数中传递参数1.普通参数Python实行按值传递参数。值传递指调用函数时将常量或变量的值(通常称其为实参)传递给函数的参数(通常称其为形参)。值传递的特点是实参与形参分别存储在各自的内存空间中,是两个不相关的独立变量。因此,在函数内部改变形参的值时,实参的值一般是不会改变的。6.1.2小节介绍的实例都属于按值传递参数的情况。第21页,共61页。【例3-8】在函数中按值传递参数的例子deffunc(num): num+=1;a=10func(a);print(a);第22页,共61页。【例3-9】分别打印形参和实参的地址deffunc(num):print("形参num的地址",id(num))a=10func(a);print("实参a的地址",id(a));运行结果如下:形参num的地址1557053600实参a的地址1557053600第23页,共61页。2.列表和字典参数【例3-10】使用列表作为函数参数的例子。defsum(list): total=0; forxinrange(len(list)): print(list[x],"+"); total+=list[x]; print("=",total);list=[15,25,35,65]sum(list);第24页,共61页。运行结果15+25+35+65+=140第25页,共61页。【例3-11】使用字典作为函数参数的例子defprint_dict(dict): for(k,v)indict.items(): print"dict[%s]="%k,vdict={"a":"apple","b":"banana","g":"grape","o":"orange"}print_dict(dict);第26页,共61页。运行结果dict[o]=orangedict[g]=grapedict[a]=appledict[b]=banana第27页,共61页。【例3-12】在函数中修改列表参数的例子defswap(list):temp=list[0]list[0]=list[1]list[1]=templist=[1,2]print(list)swap(list)print(list)第28页,共61页。运行结果[1,2][2,1]第29页,共61页。【例3-13】在函数中修改字典参数的例子defchangeA(dict):dict['a']=1

d={'a':10,'b':20,'c':30}changeA(d)print(d)第30页,共61页。运行结果{'c':30,'a':1,'b':20}第31页,共61页。3.参数的默认值在Python中,可以为函数的参数设置默认值。可以在定义函数时,直接在参数后面使用“=”为其设置默认值。在调用函数时可以不指定拥有默认值的参数的值,此时在函数体中以默认值作为该参数第32页,共61页。【例3-14】设置参数默认值的例子defsay(message,times=1):print(message*times)say('hello')say('Python',3)函数say()有2个参数:message和times。其中times的默认值为1。运行结果如下:helloPythonPythonPython第33页,共61页。【例3-15】deffunc1(a=1,b,c=10): d=a+b*c;func(10,20,30)第34页,共61页。【例3-15】的运行结果第35页,共61页。4.可变长参数Python还支持可变长度的参数列表。可变长参数可以是元祖或字典。当参数以*开头时,表示可变长参数将被视为一个元祖,格式如下:deffunc(*t):在func()函数中t被视为一个元祖,使用t[index]获取每一个可变长参数。可以使用任意多个实参调用func()函数,例如:func(1,2,3,4)第36页,共61页。【例3-16】以元祖为可变长参数的实例deffunc1(*t):print("可变长参数数量如下:")print(len(t))print("依次为:")forxinrange(len(t)):print(t[x]);func1(1,2,3,4);运行结果如下:可变长参数数量如下:4依次为:1234第37页,共61页。【例3-17】使用可变长参数计算任意个指定数字之和defsum(*t):sum=0;forxinrange(len(t)):print(str(t[x])+"+");sum+=t[x];print("="+str(sum));sum(1,2);sum(1,2,3,4);sum(11,22,33,44,55);第38页,共61页。结果如下1+2+3+4+=1011+22+33+44+55+=1651+2+3+4+=10第39页,共61页。【例3-18】defsum(*t):sum=0;forxinrange(len(t)):print(str(t[x])+"+");sum+=t[x];iflen(t)>0:print("="+str(sum));sum();第40页,共61页。【例3-19】defsum(**t):print(t);

sum(a=1,b=2,c=3);运行结果如下:{'a':1,'c':3,'b':2}第41页,共61页。3.2.2函数的返回值对【例3-6】中的sum()函数进行改造,通过函数的返回值返回相加的结果,代码如下:defsum(num1,num2): returnnum1+num2;print(sum(1,3));运行结果为4。第42页,共61页。【例3-21】deffilter_even(list):list1=[];foriinrange(len(list)):iflist[i]%2==0:list1.append(list[i])i-=1;returnlist1;list=[1,2,3,4,5,6,7,8,9,10]list2=filter_even(list)print(list2);第43页,共61页。3.3Python内置函数3.3.1数学运算函数3.3.2字符串处理函数3.3.3其他常用内置函数第44页,共61页。3.3.1数学运算函数函数原型具体说明abs()abs(x)返回

x的绝对值pow()pow(x,y)返回x的y次幂Round()round(x[,n])返回浮点数x的四舍五入值,参数n指定保留的小数位数divmod()divmod(a,b)

返回a除以b的商和余数,返回一个元组。例如divmod(a,b)返回

(a/b,a%b)第45页,共61页。【例3-22】print(abs(-1));print(round(80.23456,2))print(pow(2,3))print(divmod(8,3));运行结果如下:180.238(2,2)第46页,共61页。3.3.2字符串处理函数1.字符串中字符大小写的变换函数原型具体说明lower()str.lower()将字符串str中的字母转换为小写字母upper()str.upper()将字符串str中的字母转换为大写字母swapcase()str.swapcase()将字符串str中的字母大小写互换capitalize()str.capitalize()将字符串str中的首字母大写title()str.title()将字符串str中的首字母大写,其余为小写第47页,共61页。【例3-23】str1="helloworld";str2="HELLOWORLD";str3="Helloworld";print(str1.upper());print(str2.lower());print(str3.swapcase())print(str3.swapcase())print(str1.capitalize());print(str2.title());第48页,共61页。运行结果HELLOWORLDhelloworldhELLOWORLDhELLOWORLDHelloworldHelloWorld第49页,共61页。2.指定输出字符串时的对齐方式函数原型具体说明ljust()str.ljust(width,[fillchar])左对齐输出字符串str,总宽度为参数width,不足部分以参数fillchar指定的字符填充,默认使用空格填充rjust()str.rjust(width,[fillchar])右对齐输出字符串str,总宽度为参数width,不足部分以参数fillchar指定的字符填充,默认使用空格填充center()str.center(width,[fillchar])居中对齐输出字符串str,总宽度为参数width,不足部分以参数fillchar指定的字符填充,默认使用空格填充zfill()str.zfill(width)将字符串str变成width长,并且右对齐,不足部分用0补足第50页,共61页。【例3-24】str1="helloworld";print(str1.ljust(30,"*"));print(str1.rjust(30,"*"));print(str1.center(30,"*"))print(str1.zfill(30))运行结果如下:helloworld**************************************helloworld*********helloworld**********0000000000000000000helloworld第51页,共61页。3.搜索和替换函数原型具体说明find()str.find(substr,[start,[end]])返回字符串str中出现子串substr的第一个字母的位置,如果str中没有substr,则返回-1。搜索范围从start至endindex()str.index(substr,[start,[end]])与find()函数相同,只是在str中没有substr时,index()函数会返回一个运行时错误rfind()str.rfind(substr,[start,[end]])返回从右侧算起,字符串str中出现子串substr的第一个字母的位置,如果str中没有substr,则返回-1。搜索范围从start至endrindex()str.rindex(substr,[start,[end]])与rfind()函数相同,只是在str中没有substr时,rindex()函数会返回一个运行时错误count()str.count(substr,[start,[end]])计算substr在str中出现的次数。统计范围从start至endreplace()str.replace(oldstr,newstr,[count])把str中的oldstr替换为newstr,count为替换次数strip()str.strip([chars])把字符串str中前后chars中有的字符全部去掉。如果不指定参数chars,则会去掉空白符(包括'\n','\r','\t'和'')lstrip()str.lstrip([chars])把字符串str中前面包含的chars中有的字符全部去掉。如果不指定参数chars,则会去掉空白符(包括'\n','\r','\t'和'')rstrip()str.rstrip([chars])把字符串str中前面包含的chars中有的字符全部去掉。如果不指定参数chars,则会去掉空白符(包括'\n','\r','\t'和'')expandtabs()str.expandtabs([tabsize])把字符串str中的tab字符替换为空格,每个tab替换为tabsize个空格,默认是8个

第52页,共61页。【例3-25】str1="helloworldPython";list1=str1.split("");print(list1);str1="helloworld\nPython";list1=str1.splitlines();print(list1);list1=["hello","world","Python"]str1="#"print(str1.join(list1))运行结果如下:['hello','world','Python']['helloworld','Python']hello#world#Python第53页,共61页。5.字符串判断相关函数原型具体说明startswith()str.startswith(substr)判断str是否以substr开头endswith()str.endswith(substr)判断str是否以substr为结尾isalnum()str.isalnum()判断str是否全为字母或数字isalpha()str.isalpha()判断str是否全为字母isdigit()str.isdigit()判断str是否全为数字islower()str.islower()判断str是否全为小写字母isupper()str.isupper()判断str是否全为大写字母第54页,共61页。【例3-27】tr='pythonStringfunction'print(str+".startwith('t')的结果")print(str.startswith('t'))print(str+".endwith('d')的结果")print(str.endswith('d'))print(str+".isalnum()的结果")print(str.isalnum())str='pythonStringfunction'print(str+".isalnum()的结果")print(str.isalnum())print(str+".isalpha()的结果")print(str.isalpha())print(str+".isupper()的结果")print(str.isupper())print(str+".islower()的结果"

温馨提示

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

评论

0/150

提交评论