Python基础教程 课件 崔鸿山 项目6、7 Python字典和时间日期、Python函数_第1页
Python基础教程 课件 崔鸿山 项目6、7 Python字典和时间日期、Python函数_第2页
Python基础教程 课件 崔鸿山 项目6、7 Python字典和时间日期、Python函数_第3页
Python基础教程 课件 崔鸿山 项目6、7 Python字典和时间日期、Python函数_第4页
Python基础教程 课件 崔鸿山 项目6、7 Python字典和时间日期、Python函数_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

项目六Python字典和时间日期任务6.1任务6.2CONTENTS目录Python字典Python时间日期任务6.1Python字典1.直接赋值创建字典直接赋值创建字典的一般格式如下:6.1.1创建字典变量名={键1:值1,键2:值2,键3:值3,...,键n:值n}print("直接赋值创建字典")print("")#创建字典stu_info={′num′:′20230101′,′name′:′Limeng′,′sex′:′male′,′age′:′20′}#查看字典print(stu_info)【例6-1】创建一个学生信息字典,包括学生学号、姓名、性别和年龄4个元素。程序代码如下:2.使用内建函数dict()创建字典6.1.1创建字典print("使用内建函数dict()创建字典\n")#直接赋值创建字典print("直接赋值创建字典")stu_info_1={′num′:′20230101′,′name′:′Limeng′,′sex′:′male′,′age′:′20′}print(stu_info_1)#通过其他方式创建字典print("\n通过其他方式创建字典")stu_info_2=dict(stu_info_1)print(stu_info_2)【例6-2】使用内建函数dict()创建字典。程序代码如下:6.1.1创建字典#通过“键-值”对的序列创建字典print("\n通过“键-值”对的序列创建字典")stu_info_3=dict([(′num′,′20230101′),(′name′,′Limeng′),(′sex′,′male′),(′age′,′20′)])print(stu_info_3)#通过关键字参数创建字典print("\n通过关键字参数创建字典")stu_info_4=dict(num=′20230101′,name=′Limeng′,sex=′male′,age=′20′)print(stu_info_4)6.1.1创建字典#通过dict()函数和zip()函数结合创建字典print("\n通过dict()函数和zip()函数结合创建字典")stu_info_5=dict(zip([′num′,′name′,′sex′,′age′],[′20230101′,′Limeng′,′male′,′20′]))print(stu_info_5)#判断5个变量是否相等print("\n判断5个变量是否相等")ifstu_info_1==stu_info_2==stu_info_3==stu_info_4==stu_info_5:print("创建字典的5种方式相同")#如果相同,则输出提示符else:print("创建字典的5种方式不相同") #如果不相同,则输出不相同提示符3.使用fromkeys()函数创建字典fromkeys()函数的语法格式如下:6.1.1创建字典dict.fromkeys(seq[,value])#创建字典,键序列的值默认为None>>>stu_info_1=dict.fromkeys([′Wangwei′,′Zhangming′])>>>stu_info_1

#输出stu_info_1{′Wangwei′:None,′Zhangming′:None}#创建字典,键序列的值默认为22>>>stu_info_2=dict.fromkeys([′Wangwei′,′Zhangming′],′22′)>>>stu_info_2 #输出stu_info_2{′Wangwei′:′22′,′Zhangming′:′22′}示例代码如下:1.根据“键”访问“值”根据“键”访问“值”的语法格式如下:6.1.2访问字典字典变量名[键]#创建字典>>>stu_info={′num′:′20230105′,′name′:′Yangbing′,′sex′:′male′,′age′:′21′}>>>stu_info[′num′]

#根据num访问学号′20230105′>>>stu_info[′age′]′21′>>>stu_info[′height′] #指定的“键”(身高)不存在,抛出异常Traceback(mostrecentcalllast):File"<pyshell#3>",line1,in<module>stu_info[′height′]KeyError:′height′示例代码如下:2.使用get()函数访问“值”get()函数的语法格式如下:6.1.2访问字典dict.get(key[,default=None])>>>stu_info={′num′:′20230105′,′name′:′Yangbing′,′sex′:′male′,′age′:′21′}>>>stuinfo.get(′name′)

#使用get()函数获取学生姓名′Yangbing′>>>stu_info.get(′age′)′21′>>>stu_info.get(′height′)

#获取学生身高,返回值为None>>>print(stu_info.get(′height′))

#输出返回值NoneNone>>>stu_info.get(′height′,180)

#设置返回默认值为180180示例代码如下:3.遍历字典

(1)遍历字典中所有的“键-值”对。遍历字典中所有的“键-值”对可使用items()函数。该函数以列表形式返回可遍历的“(键,值)”元组,其语法格式如下:6.1.2访问字典dict.items()

dict.keys()(2)遍历字典中所有的“键”。当不需要使用字典中的“值”时,可使用keys()函数访问字典中的“键”。该函数以列表形式返回字典中所有的“键”,其语法格式如下:(3)遍历字典中所有的“值”。当需要使用字典中的“值”时,可使用values()函数访问字典中的“值”。该函数以列表形式返回字典中所有的“值”,其语法格式如下:

dict.values()1.在列表中嵌套字典

【例6-6】在列表中嵌套字典。6.1.3嵌套print("在列表中嵌套字典\n")stu_info_1={′name′:′Wangning′,′sex′:′F′,′age′:′19′}#定义字典stu_info_1stu_info_2={′name′:′Limeng′,′sex′:′F′,′age′:′20′}#定义字典stu_info_2stu_info_3={′name′:′Changxin′,′sex′:′M′,′age′:′18′}#定义字典stu_info_3student=[stu_info_1,stu_info_2,stu_info_3]#创建包含3个学生的列表forstuinstudent: #遍历列表print(stu)2.在字典中嵌套列表

【例6-7】在字典中嵌套列表。6.1.3嵌套print("在字典中嵌套列表")#定义字典并赋值,字典中的“值”为列表stu_class={′Wangning′:[′C′,′Math′],′Limeng′:[′Java′,′Art′],′Changxin′:[′Python′],′Weiming′:[′Python′,′Mysql′,′Math′]}forname,clainstu_class.items():

#遍历字典中所有的元素print("")print(name,′选的课程是:′) #输出键forcincla: #遍历列表

print(c) #输出列表中的值3.在字典中嵌套字典

【例6-8】在字典中嵌套字典。6.1.3嵌套print("在字典中嵌套字典\n")#定义字典并赋值stu_info={′Wangning′:{′sex′:′F′,′age′:′19′},′Limeng′:{′sex′:′F′,′age′:′20′},′Changxin′:{′sex′:′M′,′age′:′18′},′Weiming′:{′sex′:′M′,′age′:′21′}}forname,stuinstu_info.items():

#遍历字典中所有元素

print(name,′性别:′,stu[′sex′],′年龄:′,stu[′age′]) #输出键和值1.添加字典元素

当使用“字典变量名[键]=值”修改字典时,如果字典中不存在这个“键”,则会在其中增加一个“键-值”对。6.1.4修改字典print("添加字典元素\n")stu_info={′name′:′Wangning′,′sex′:′F′}new_age=input(′请输入学生年龄:′)stu_info[′age′]=new_ageprint(stu_info)【例6-9】添加字典元素。2.修改字典中的元素

当使用“字典变量名[键]=值”修改字典时,如果字典中想要添加的键已经存在,则该键对应的值会被新值替换。6.1.4修改字典print("修改字典中的元素\n")stu_info={′name′:′Wangning′,′sex′:′F′,′age′:′20′,′height′:′180′}print("原字典中的元素为:")print(stu_info,"\n")new_height=input(′请输入学生身高:\n′)print("修改身高后的字典元素为:")stu_info[′height′]=new_heightprint(stu_info)【例6-10】修改字典中的元素。1.del命令del命令用于删除整个字典或字典中的某个元素。6.1.5删除字典print("使用del命令删除字典中的元素\n")stu_info={′name′:′Wangning′,′sex′:′F′,′age′:′20′,′height′:′180′}print(′删除元素%s′%stu_info[′name′],′前的信息′)print(stu_info)delstu_info[′name′]print(′删除元素%s′%stu_info[′name′],′后的信息′)print(stu_info)【例6-11】使用del命令删除字典中的元素。2.clear()函数clear()函数用于清空字典中的所有元素。6.1.5删除字典print("使用clear()函数清空字典中的所有元素\n")stu_info={′name′:′Wangning′,′sex′:′F′,′age′:′20′,′height′:′180′}print(′清空字典中的所有元素前:\n%s′%stu_info)stu_info.clear()print(′清空字典中的所有元素后:\n%s′%stu_info)【例6-12】使用clear()函数清空字典中的所有元素。6.1.6字典中“键”的特性>>>dict={′Name′:′Zhangxin′,′Age′:′18′,′Name′:′Limeng′}>>>dict{′Name′:′Limeng′,′Age′:′18′}

(1)字典中的“键”是唯一的,不允许同一个“键”出现两次,如果创建时同一个“键”被赋值两次,则后一个键的值会替换前一个“键”的“值”。示例代码如下:6.1.6字典中“键”的特性>>>dict={[′Name′]:′Zhangxin′,′Age′:′18′,′Name′:′Limeng′}>>>dictTraceback(mostrecentcalllast):File"<pyshell#4>",line1,in<module>dict={[′Name′]:′Zhangxin′,′Age′:′18′,′Name′:′Limeng′}TypeError:unhashabletype:′list′

(2)字典中的“键”是不可变的。字典中的“键”可以使用数字、字符串或元组,但不能使用列表。示例代码如下:6.1.7字典内建函数表6-1

Python字典的内建函数函数含义cmp(dict1,dict2)比较两个字典元素大小len(dict)计算字典元素的个数,即键的总数str(dict)输出字典可打印的字符串表示type(variable)返回输入的变量类型,如果变量是字典,则返回字典类型dict.clear()清空字典中的所有元素dict.copy()返回一个字典的浅复制dict.fromkeys(seq[,val])创建一个新字典,以序列seq中的元素作为字典的“键”,val为字典中所有“键”对应的初始值6.1.7字典内建函数表6-1

Python字典的内建函数函数含义dict.get(key,default=None)返回指定“键”的“值”,如果“值”不在字典中,则返回default值dict.has_key(key)如果“键”在字典dict中,则返回True,否则返回Falsedict.items()以列表返回可遍历的“(键,值)”元组dict.keys()以列表返回一个字典中所有的“键”dict.setdefault(key,default=None)与get()函数类似,但如果“键”不在字典中,则会添加“键”并将“值”设为defaultdict.update(dict2)将字典dict2的“键-值”对更新到字典中dict.values()以列表形式返回字典中的所有值任务6.2Python时间日期

时间戳(Tick)表示从1970年1月1日00:00:00开始,到当前时间,一共经历了多少秒。

time()函数用于返回当前时间戳,其语法格式如下:6.2.1时间戳time.time()importtime #导入时间模块print("时间戳的使用\n")ticks=time.time()print("从1970年1月1日00:00:00开始的时间戳(单位为秒):",ticks)【例6-13】时间戳的使用。时间元组是一个struct_time类型的对象,可以通过gmtime()函数、localtime()函数和strptime()函数等获得。6.2.2时间元组importtime

#导入时间模块print("时间元组的使用\n")print("gmtime()函数的使用\n")struct_time_1=time.gmtime()print(struct_time_1)print("localtime()函数的使用\n")struct_time_2=time.localtime()print(struct_time_2)【例6-14】时间元组的使用。程序代码如下:strftime()函数的语法格式如下:6.2.3获取格式化的时间importtimeprint("获取格式化的时间\n")#格式化为2023-03-2723:59:59形式print("格式化为2023-03-2723:59:59形式")print(time.strftime("%Y-%m-%d%H:%M:%S",time.localtime()))#格式化为MonMar2723:59:592023形式print("\n格式化为MonMar2723:59:592023形式")print(time.strftime("%a%b%d%H:%M:%S%Y",time.localtime()))print("\n将格式字符串转换为时间戳")#将格式字符串转换为时间戳time_word="MonMar2723:59:592023"print(time.mktime(time.strptime(time_word,"%a%b%d%H:%M:%S%Y")))【例6-15】获取格式化的时间。time.strftime(format[,t])表6-4

Time模块的函数及其含义6.2.4Time模块函数含义time.altzone()返回格林尼治西部的夏令时地区的偏移秒数time.asctime([tupletime])接收时间元组并返回一个可读形式为“MonMar2723:59:592023”(2023年3月27日周一23时59分59秒)的24个字符的字符串time.clock()以浮点数计算的秒数返回当前的CPU时间,用于衡量不同程序的耗时,相较之下优于time.time()time.ctime([secs])把一个时间戳(按秒计算的浮点数)转换为time.asctime()形式,未给参数相当于asctime(localtime(secs))time.gmtime([secs])接收时间戳(1970纪元后经过的浮点秒数)并返回格林尼治天文时间下的时间元组time.localtime([secs])接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组表6-4

Time模块的函数及其含义6.2.4Time模块函数含义time.mktime(tupletime)接收时间元组并返回时间戳(1970纪元后经过的浮点秒数)time.sleep(secs)推迟调用线程的执行,secs为秒数time.strftime(fmt[,tupletime])接收时间元组并返回以可读字符串表示的当地时间,格式由fmt决定time.strptime(str,fmt=′%a%b%d%H:%M:%S%Y′)根据fmt的格式把一个时间字符串解析为时间元组time.time()返回当前时间的时间戳(1970纪元后经过的浮点秒数)time.tzset()根据环境变量TZ重新初始化时间相关设置通过一些函数可以获取年历和月历,默认星期一是每周的第一天,星期天是每周的最后一天。例如,输出2023年3月份和4月份的日历。6.2.5获取日期importcalendarprint("获取日期\n")calendar_0=calendar.month(2023,3)calendar_1=calendar.month(2023,4)print("2023年3月\n")print(calendar_0)print("\n2023年4月\n")print(calendar_1)【例6-16】获取日期。表6-5

Calendar模块的函数及其含义6.2.6日历(Calendar)模块函数含义calendar.calendar(year,w=2,l=1,c=6)返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。每日宽度间隔为w字符;每行长度为21×w+18+2×c;l是每星期行数calendar.firstweekday()返回当前每周起始日期的设置。默认情况下,首次载入Calendar模块时返回0,即星期一calendar.isleap(year)若是闰年,则返回True,否则返回Falsecalendar.leapdays(y1,y2)返回在y1、y2两年之间的闰年总数calendar.month(year,month,w=2,l=1)返回一个多行字符串格式的year年month月日历,标题有两行,一周一行。每日宽度间隔为w字符;每行的长度为7×w+6;l为每星期的行数calendar.monthcalendar(year,month)返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。year年month月外的日期都设为0;范围内的时间由该月第几日表示,从1开始表6-5

Calendar模块的函数及其含义6.2.6日历(Calendar)模块函数含义calendar.monthrange(year,month)返回两个整数。第一个是该月的星期几,第二个是该月有几天。日从0(星期一)到6(星期日),月从1(一月)到12(十二月)calendar.prcal(year,w=2,l=1,c=6)相当于print(calendar.calendar(year,w=2,l=1,c=6))calendar.prmonth(year,month,w=2,l=1)相当于print(calendar.calendar(year,month,w=2,l=1))calendar.setfirstweekday(weekday)设置每周的起始日期码,从0(星期一)到6(星期日)calendar.timegm(tupletime)和time.gmtime相反,它接收一个时间元组形式,返回该时刻的时间戳(1970纪元后经过的浮点秒数)calendar.weekday(year,month,day)返回给定日期的日期码,日从0(星期一)到6(星期日),月从1(一月)到12(十二月)谢谢您的欣赏项目七Python函数任务7.2任务7.3CONTENTS目录函数调用函数的嵌套任务7.4任务7.5任务7.1函数的定义递归函数和匿名函数变量作用域任务7.1函数的定义函数是组织好的,可重复使用的,用于实现单一或相关功能的代码段。它能够提高程序的模块化和代码的重复利用率。7.1.1函数的概念print("*")print("***")print("*****")print("*******")这段代码使用了多个print()函数输出一个三角形。如果需要在一个程序的不同位置输出同样的三角形,那么每次都使用多个print()函数输出的做法是不可取的。为了提高程序编写的效率及代码的重用性,编程人员可以把具有独立功能的代码块组织成一个小模块,即函数。自定义函数的语法格式如下:7.1.2自定义函数def函数名([参数列表]):#函数_文档字符串函数体return表达式自定义函数具有一定的规则,如下:(1)函数代码块以def开头,后面是函数名和圆括号。(2)函数名的命名规则与变量的命名规则是一样的,即只能是字母、数字和下画线的组合,而不能以数字开头,并且不能与保留字重名。(3)函数的参数必须放在圆括号中。(4)文档字符串是对函数的说明,能提高函数的可读性。(5)函数内容以冒号开始,并保持一定的空格缩进。(6)return表达式用于结束函数,可返回一个值给调用方。不带表达式的return相当于返回None。任务7.2函数调用当编程人员定义一个函数后,该函数就相当于有了一段具有特定功能的代码,要想执行这些代码,就需要调用函数。函数调用的一般形式为函数名([实际参数列表])7.2.1简单的函数调用如果函数带有参数,则实际参数列表(简称实参)中应给出要传入函数内部的具体值。1.return语句返回1个值【例7-3】编写函数实现求两数中的较小值。程序代码如下:print("求两数中的较小值\n")defmin_xy(x,y):

#自定义求两数中的较小值函数ifx>y: #如果x>y成立,则返回y的值returnyelse: #否则返回x的值returnxa=float(input("输入数值1:")) #接收a的值b=float(input("输入数值2:")) #接收b的值c=min_xy(a,b) #调用函数,将较小值赋给cprint("两数中的较小值为:",c) #输出c的值7.2.2参数传递2.return语句返回多个值【例7-4】编写程序,要求输入字符串,计算字符串中大写字母和小写字母的个数并输出,计算过程用函数实现。程序代码如下:print("计算字符串中大写字母和小写字母的个数\n")defletter_cal(s):#定义函数a=0 #变量a用于存储大写字母的个数b=0 #变量b用于存储小写字母的个数forchins:

#循环判断字符串中的每个字母ifch.isupper(): #调用isupper()函数判断是否为大写字母a+=1 #如果是大写字母,则a加1elifch.islower(): #调用islower()函数判断是否为小写字母b+=1 #如果是小写字母,则b加1returna,b

#返回a和b的值7.2.2参数传递2.return语句返回多个值【例7-4】编写程序,要求输入字符串,计算字符串中大写字母和小写字母的个数并输出,计算过程用函数实现。程序代码如下:str=input("请输入字符串\n") #输入字符串c=letter_cal(str) #调用函数返回a和b的值给变量cprint(c,type(c),"\n")

#输出变量c及变量c的类型print("大写字母的个数为:",c[0],"\n") #输出结果print("小写字母的个数为:",c[1]) #输出结果7.2.2参数传递1.必备参数【例7-5】当调用下面的print_text()函数时,必须传递一个参数,否则会出现语法错误。程序代码如下:print("当调用带参数的函数时,必须传递一个参数,否则会出现语法错误。\n")defprint_text(str):#输出任何传入的字符串print(str)return#调用print_text()函数,传递一个字符串print("\n调用函数,传递字符串参数时,输出字符串\n")text="Hello!WelcometoPython!"print_text(text)#输出字符串#调用print_text()函数,不传递字符串print("\n调用函数,没有传递字符串参数时,会出现如下语法错误\n")print_text()7.2.3函数调用的参数类型2.默认值参数【例7-6】默认值参数。程序代码如右:print("默认值参数的应用\n")defprint_info(name,age=35):#定义函数,输出传入的字符串print("名字:",name)print("年龄:",age)return#调用print_info()函数print("默认值参数为")print(print_info.__defaults__,"\n")#输出默认值参数print("----------------------")name_1="Zhangming"print_info(name_1,28)#显式赋值print("----------------------")print("使用默认值参数输出的结果为\n")print_info(name_1) #使用默认值参数7.2.3函数调用的参数类型定义带有默认值参数的函数语法格式如下:def函数名(形参名=默认值):函数体3.关键字参数【例7-7】关键字参数。程序代码如下:print("关键字参数的应用\n")defprint_info(name,age):

#定义函数,打印任何传入的字符串

print("名字:",name)print("年龄:",age)return#调用print_info()函数print("----------------------")name_1="Zhangming"age_1=20print_info(age=age_1,name=name_1) #关键字参数传递7.2.3函数调用的参数类型4.不定长参数使用不定长参数的语法格式如下:print("不定长参数的应用\n")deffunction_1(a,b,*args,**kwargs):#定义函数print(a)print(b)print(args)print(kwargs)print("----------------------")function_1("a","b",3,"c",5,x=6,z=7) #调用函数7.2.3函数调用的参数类型def函数名([形参列表,]*args,**kwargs):函数体【例7-8】不定长参数。程序代码如下:任务7.3函数的嵌套在Python语言中,函数的嵌套是指在函数内部可以再定义另外一个函数。print("函数的嵌套定义\n")defprint_line():

#定义print_line()函数print("-------------------------\n")defprint_text(): #嵌套定义print_text()函数print("Hello!WelcometoPython!\n")

print("*************************")print_text() #调用print_text()函数print_line()

#调用print_line()函数7.3.1函数的嵌套定义【例7-9】函数的嵌套定义。程序代码如下:print("计算1!+2!+3!+...+n!的值\n")#定义fac函数,求阶乘deffac(k): i=2t=1whilei<=k:

t*=i

i=i+1returnt

#返回阶乘结果7.3.2函数的嵌套调用【例7-10】计算1!+2!+3!+...+n!的值并输出,使用函数的嵌套调用实现。计算阶乘的累加,从大体上可以分为求阶乘和求累加两个功能模块。程序代码如下:#定义sum函数,求累加defsum(m):s=0i=1whilei<=m:

s=s+fac(i)

#调用fac函数i+=1

returns #返回累加结果n=int(input("输入阶乘数为:\n"))sum_1=sum(n)print("-------------------------\n")print("1!+2!+3!+...+",n,"!=",sum_1) #调用sum函数7.3.2函数的嵌套调用【例7-10】计算1!+2!+3!+...+n!的值并输出,使用函数的嵌套调用实现。计算阶乘的累加,从大体上可以分为求阶乘和求累加两个功能模块。程序代码如下:任务7.4递归函数和匿名函数7.4.1递归函数图7-11

递归函数调用递归函数调用如图7-11所示。如果函数func()直接调用其本身,则称为直接递归调用;如果函数func0()在执行的过程中调用func1()函数,而在

温馨提示

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

评论

0/150

提交评论