《食品人工智能基础(Python)》课件(下)_第1页
《食品人工智能基础(Python)》课件(下)_第2页
《食品人工智能基础(Python)》课件(下)_第3页
《食品人工智能基础(Python)》课件(下)_第4页
《食品人工智能基础(Python)》课件(下)_第5页
已阅读5页,还剩145页未读, 继续免费阅读

下载本文档

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

文档简介

食品企业信息系统的数据存储任务四任务导读本任务主要介绍食品企业信息系统的数据存储模块,涉及到系统数据的识别以及Python中的列表、元组、字典三种数据结构。分别从列表、元组、字典三种数据结构的概念、定义、常见操作(增加元素、查找元素、修改元素、删除元素)以及其他操作等方面结合案例介绍相关内容。任务目标知识目标掌握识别系统数据的方法理解、掌握Python中列表、元组、字典的概念及定义掌握列表、元组、字典的使用场景,掌握教材案例能够根据应用需要,灵活使用三种结构能力目标熟练掌握Python中列表、元组、字典的特点能够根据应用需要,灵活使用列表、元组、字典三种存储结构知识点一:识别系统中的数据知识点二:使用列表存入数据知识点三:使用元组存入数据知识点四:使用字典存入数据任务实现一、识别系统中的数据在食品企业信息系统中,对系统数据和功能进行了如下说明:|---欢迎进入**食品信息系统---||---1.添加员工信息---||---2.删除员工信息---||---3.修改员工信息---||---4.查找员工信息---||---5.退出食品企业信息系统---||---6.显示全部员工信息---|在食品企业信息系统中,用户输入的数字(从1至6)分别对应不同的操作,如添加数据、删除数据、修改数据、查找数据、退出系统、显示数据信息等。条件判断实现多分支选择为了实现上述功能,用户从控制台进行输入,系统将输入的字符串转换成对应的整型数据。进而根据用户的不同输入进行不同的操作。为了实现多分支选择,使用if-elif-else语句,参考代码如下所示:其中,choice是由控制台输入的字符串转换得到的整型数据;add()、dele()、modify()、search()、write()及show()等函数实现了相应的增加、删除、修改、搜索、退出、显示等功能。#input函数接收控制台输入的字符串order_code=input('请输入相应数字操作:\n')#lstrip函数删除字符串左边的空字符str_lstrip=order_code.lstrip()#rstrip函数删除字符串右边的空字符str_rstrip=order_code.rstrip()#int函数进行强制类型转换choice=int(str_rstrip)ifchoice==1:people.add()#增加函数elifchoice==2:people.dele()#删除函数elifchoice==3:people.modify()#修改函数elifchoice==4:people.search()#搜索函数elifchoice==5:people.write()break#退出系统elifchoice==6:people.show()#显示信息else:print('输入不合法,请输入合法数字')

循环结构实现持续输入利用while循环语句实现无限循环,实现从控制台持续接收数据。参考代码如下所示:WhileTrue

#input函数接收控制台输入的字符串order_code=input('请输入相应数字操作:\n')#lstrip函数删除字符串左边的空字符str_lstrip=order_code.lstrip()#rstrip函数删除字符串右边的空字符str_rstrip=order_code.rstrip()#int函数进行强制类型转换choice=int(str_rstrip)ifchoice==1:people.add()#增加函数elifchoice==2:people.dele()#删除函数elifchoice==3:people.modify()#修改函数elifchoice==4:people.search()#搜索函数elifchoice==5:people.write()break#退出系统elifchoice==6:people.show()#显示信息else:print('输入不合法,请输入合法数字')

异常处理机制确保正确输入

WhileTrue

#input函数接收控制台输入的字符串

order_code=input('请输入相应数字操作:\n')

#lstrip函数删除字符串左边的空字符

str_lstrip=order_code.lstrip()

#rstrip函数删除字符串右边的空字符

str_rstrip=order_code.rstrip()

#int函数进行强制类型转换

choice=int(str_rstrip)

ifchoice==1:

people.add()#增加函数

elifchoice==2:

people.dele()#删除函数

elifchoice==3:

people.modify()#修改函数

elifchoice==4:

people.search()#搜索函数

elifchoice==5:

people.write()

break#退出系统

elifchoice==6:

people.show()#显示信息

else:

print('输入不合法,请输入合法数字')

try:exceptValueError:

print('请输入数字')食品企业信息系统的数据存储任务四知识点一:识别系统中的数据知识点二:使用列表存入数据知识点三:使用元组存入数据知识点四:使用字典存入数据二、使用列表存入数据什么是列表?列表是Python中一种常用的类型,它可以存储任意类型的数据,即列表中各个元素的类型可以互不相同。列表的常见用法:列表的创建、列表的访问、列表的遍历、列表元素的常见操作(增加元素、查找元素、修改元素、删除元素、列表排序、列表逆置、列表嵌套)、基于切片的列表列表的创建列表是Python中最常用的数据结构。使用中括号[]来创建列表,列表中的元素类型可以互不相同,列表中也可以嵌套列表。如果直接给变量赋值为[],则该变量是空列表。示例代码如下:empty_list:[]创建一个含有多种类型数据的列表:empty_list=[]

print('empty_list:',empty_list)demo_list=[9,'BigData','C','张三',[69,89,77,'A']]

print('demo_list:',demo_list)demo_list:[9,'BigData','C','张三',[69,89,77,'A']]列表的访问使用索引访问列中的元素,分别输出列表中第一个、第二个、第三个、第四个、第五个元素:9BigDataC张三[69,89,77,'A']demo_list=[9,‘BigData’,‘C’,‘张三’,[69,89,77,‘A’]]

print(demo_list[0])

print(demo_list[1])

print(demo_list[2])

print(demo_list[3])

print(demo_list[4])列表的访问Python支持逆向索引,即倒数第一个元素索引为-1,倒数第二个索引为-2,依次类推。示例代码如下:demo_list=[9,'BigData','C','张三',[69,89,77,'A']]

print('demo_list:',demo_list)

print('使用逆向索引输出列表:')

print(demo_list[-1])

print(demo_list[-2])

print(demo_list[-3])

print(demo_list[-4])

print(demo_list[-5])

print('使用逆向和正向索引访问同一个元素:')

print(id(demo_list[4])==id(demo_list[-1]))demo_list:[9,'BigData','C','张三',[69,89,77,'A']]使用逆向索引输出列表:[69,89,77,'A']张三CBigData9使用逆向和正向索引访问同一个元素:True列表的遍历在Python中,可以使用for循环或者while循环来实现遍历。使用for循环遍历列表时,可以逐个访问,demo_list=[9,'BigData','C','张三',[69,89,77,'A']]

print('for循环遍历列表方式一:')

foriinrange(len(demo_list)):

print(demo_list[i])

print('for循环遍历列表方式二:')for循环遍历列表方式二:9BigDataC张三[69,89,77,'A']foritemindemo_list:

print(item)for循环遍历列表方式一:9BigDataC张三[69,89,77,'A']也可以直接把列表作为for循环表达式中的序列列表的遍历使用while循环遍历列表,需要首先获取列表的长度,用这个长度来判断循环是否应该结束。示例代码如下:demo_list=[9,'BigData','C','张三',[69,89,77,'A']]

print('while循环遍历列表:')

length=len(demo_list)#计算列表元素个数

i=0#从第一个元素开始

whilei<length:

print(demo_list[i])

i=i+1#下标递增while循环遍历列表:9BigDataC张三[69,89,77,'A']列表的遍历Python中对列表元素的常见操作有增加元素、查找元素、修改元素、删除元素、列表排序、列表逆置等操作。增加元素21向列表中增加元素有多种方式,如使用append方法、extend方法、insert方法以及+运算符等,通过列表的append()方法可以在列表尾部增加元素,示例代码如下:增加元素之前的列表:[1,2,3]请输入要增加的数字:4在列表末尾增加元素之后的列表:[1,2,3,4]demo_list=[1,2,3]

print("增加元素之前的列表:",demo_list)

item=int(input("请输入要增加的数字:"))

demo_list.append(item)

print("在列表末尾增加元素之后的列表:",demo_list)增加元素22通过extend()方法可以把另外一个列表添加到当前列表尾部,示例代码如下:demo1_list:[1,2,3]demo2_list:[4,5,6]demo1_list调用extend()方法后:demo1_list:[1,2,3,4,5,6]demo2_list:[4,5,6]demo1_list=[1,2,3]

demo2_list=[4,5,6]

print('demo1_list:',demo1_list)

print('demo2_list:',demo2_list)

demo1_list.extend(demo2_list)

print("demo1_list调用extend()方法后:")

print('demo1_list:',demo1_list)

print('demo2_list:',demo2_list)增加元素23append方法和extend方法使用对比,示例代码如下:demo1_list=[1,2,3]

demo2_list=[4,5,6]

print("demo1_list:",demo1_list)

print("demo2_list:",demo2_list)

demo1_list.append(demo2_list)

print('demo1_list调用append方法后:')

print("demo1_list:",demo1_list)

print("demo2_list:",demo2_list)

print('*'*79)

demo1_list=[1,2,3]

demo2_list=[4,5,6]

print("demo1_list:",demo1_list)

print("demo2_list:",demo2_list)

demo1_list.extend(demo2_list)

print('demo1_list调用extend方法后')

print("demo1_list:",demo1_list)

print("demo2_list:",demo2_list)demo1_list:[1,2,3]demo2_list:[4,5,6]demo1_list调用append方法后:demo1_list:[1,2,3,[4,5,6]]demo2_list:[4,5,6]******************************************************demo1_list:[1,2,3]demo2_list:[4,5,6]demo1_list调用extend方法后demo1_list:[1,2,3,4,5,6]demo2_list:[4,5,6]增加元素24通过insert()方法在指定索引位置前插入元素的示例代码如下:demo1_list:[1,2,3]demo1_list在第二个位置前插入元素后:[1,4,2,3]demo1_list=[1,2,3]

print("demo1_list:",demo1_list)

demo1_list.insert(1,4)

print("demo1_list在第二个位置前插入元素后:",demo1_list)增加元素25还可以使用+运算符合并两个列表,实现元素的插入,示例代码如下:demo1_list:[1,2,3]demo2_list:[4,5,6]demo1_list:[1,2,3,4,5,6]demo1_list=[1,2,3]

demo2_list=[4,5,6]

print("demo1_list:",demo1_list)

print("demo2_list:",demo2_list)

demo1_list=demo1_list+demo2_list

print("demo1_list:",demo1_list)查找元素26在列表中查找元素,可以使用运算符in或者notin来实现,如果待查找元素存在,则in表达式的值为True,否则in表达式的值为False,notin与之相反。示例代码如下:demo_list=[1,2,3,5]

item=int(input('请输入要查找的数字:'))

ifitemindemo_list:

print("(in)在列表中找到了元素",item)

else:

print("(in)在列表中找不到元素",item)

ifitemnotindemo_list:

print("(notin)在列表中找不到元素",item)

else:

print("(notin)在列表中找到了元素",item)请输入要查找的数字:3(in)在列表中找到了元素3(notin)在列表中找到了元素3请输入要查找的数字:9(in)在列表中找不到元素9(notin)在列表中找不到元素9修改元素27可以通过位置索引(下标)来修改列表中指定位置的元素,示例代码如下:列表元素修改之前[1,2,3,4]列表元素修改之后[1,10,5,4]demo_list=[1,2,3,4]

print("列表元素修改之前",demo_list)

demo_list[1]=demo_list[1]+8

demo_list[2]=5

print("列表元素修改之后",demo_list)删除元素28在列表中,可以使用del方法删除指定索引位置元素,示例代码如下:demo_list:['功夫熊猫','神话','英雄','无问西东','杀手之王']删除第三个元素后,列表的内容为:['功夫熊猫','神话','无问西东','杀手之王']demo_list=['功夫熊猫','神话','英雄','无问西东','杀手之王']

print('demo_list:',demo_list)

deldemo_list[2]

print('删除第三个元素后,列表的内容为:',demo_list)删除元素29也可以使用pop(self,index=-1)方法删除列表指定索引位置的元素,如果不指定索引位置,默认删除列表末尾的元素(即索引为-1的元素),示例代码如下:demo_list=['功夫熊猫','神话','英雄','无问西东','杀手之王']

print(demo_list)

demo_list.pop()

print('删除末尾元素后,列表的内容为:',demo_list)

demo_list.pop(1)

print('再删除第二个元素后,列表的内容为:',demo_list)['功夫熊猫','神话','英雄','无问西东','杀手之王']删除末尾元素后,列表的内容为:['功夫熊猫','神话','英雄','无问西东']再删除第二个元素后,列表的内容为:['功夫熊猫','英雄','无问西东']删除元素30还可以使用remove(value,/)方法删除值为value的首个元素,示例代码如下:['功夫熊猫','神话','英雄','无问西东','神话','杀手之王']删除指定值元素后,列表的内容为:['功夫熊猫','英雄','无问西东','神话','杀手之王']demo_list=['功夫熊猫','神话','英雄','无问西东','神话','杀手之王']

print(demo_list)

demo_list.remove('神话')

print('删除指定值元素后,列表的内容为:',demo_list)注意:可以使用clear()方法直接清空整个列表,可以使用del直接删除整个列表变量,删除后不可再访问列表排序与逆置31可以使用sort(*,key=None,reverse=False)方法对列表进行排序,如果key=None,reverse=True,则按照字典降序(从大到小)排列,示例代码如下:排序前,列表为:[5,8,3,7,9,1]排序后,列表为:[1,3,5,7,8,9]排序前,列表为:[5,8,3,7,9,1]排序后,列表为:[9,8,7,5,3,1]demo_list=[5,8,3,7,9,1]

print('排序前,列表为:',demo_list)

demo_list.sort()

print('排序后,列表为:',demo_list)

demo_list=[5,8,3,7,9,1]

print('排序前,列表为:',demo_list)

demo_list.sort(reverse=True)

print('排序后,列表为:',demo_list)列表排序与逆置32可以使用reverse()方法对列表进行逆置,示例代码如下:逆置前,列表为:[5,8,3,7,9,1]逆置后,列表为:[1,9,7,3,8,5]demo_list=[5,8,3,7,9,1]

print('逆置前,列表为:',demo_list)

demo_list.reverse()

print('逆置后,列表为:',demo_list)使用切片访问列表元素33切片指的是截取被操作对象的一部分的操作,切片的语法格式为:序列[开始索引:结束索引:步长],序列从开始索引位置开始,以步长为单位递增,不包含结束索引位置的元素。步长为负整数表示逆序引用,开始索引、结束索引、步长三个参数的默认值分别是0、序列长度、1,可以部分或者全部省略。示例代码如下:demo_list=[1,2,3,4,7,8,9]

print('demo_list全部元素表达式1:',demo_list)

print('demo_list全部元素表达式2:',demo_list[0:len(demo_list):1])

print('demo_list全部元素表达式3:',demo_list[0:len(demo_list):])

print('demo_list全部元素表达式4:',demo_list[0::])

print('demo_list全部元素表达式5:',demo_list[::])

print('demo_list全部元素表达式6:',demo_list[0:1000:1])

print('demo_list全部元素表达式7:',demo_list[0:900:])

print('demo_list全部元素表达式8:',demo_list[:1024:])demo_list全部元素表达式1:[1,2,3,4,7,8,9]demo_list全部元素表达式2:[1,2,3,4,7,8,9]demo_list全部元素表达式3:[1,2,3,4,7,8,9]demo_list全部元素表达式4:[1,2,3,4,7,8,9]demo_list全部元素表达式5:[1,2,3,4,7,8,9]demo_list全部元素表达式6:[1,2,3,4,7,8,9]demo_list全部元素表达式7:[1,2,3,4,7,8,9]demo_list全部元素表达式8:[1,2,3,4,7,8,9]利用切片可以方便实现访问列表的奇数、偶数或者间隔指定步长位置的元素,也可以实现对列表元素的增加、查找、修改、删除。食品企业信息系统的数据存储任务四知识点一:识别系统中的数据知识点二:使用列表存入数据知识点三:使用元组存入数据知识点四:使用字典存入数据三、使用元组存入数据

在数学中有一些常见常数,如圆周率π,自然对数e等,它们都是不可修改的常数,它们怎么样来存储呢?36在Python程序设计语言中,存储常量的数据结构叫元组(tuple)。元组也是Python中一种常用的数据类型,是一种不可变序列。元组的常见用法:元组的定义、元组元素的访问、遍历元组、修改元组、增加元素、元组的常见内置函数37元组的定义38Python中的元组数据类型与列表类似,不同之处在于元组中的元素不能修改,元组使用圆括号()来定义,元素之间以逗号“,”分割。元组的定义示例代码如下:demo1_tuple:('Python','英语','高等数学')demo2_tuple:(1,5,9,3,8,6)demo3_tuple:('x','z','f')demo1_tuple=('Python','英语','高等数学')

demo2_tuple=(1,5,9,3,8,6)

demo3_tuple="x",'z','f'

print('demo1_tuple:',demo1_tuple)

print('demo2_tuple:',demo2_tuple)

print('demo3_tuple:',demo3_tuple)元组元素的访问39和列表一样,元组也是一种序列结构,可以使用位置索引(下标)来访问元素,示例代码如下:Python英语高等数学demo_tuple=('Python','英语','高等数学')

print(demo_tuple[0])

print(demo_tuple[1])

print(demo_tuple[2])同样,元组中的元素也可以使用逆向索引和切片进行访问。元组的遍历40和列表一样,可以使用for循环或者while循环来遍历元组中的元素,示例代码如下:demo_tuple=('Python','英语','高等数学')

print('for循环遍历元组:')

foritemindemo_tuple:

print(item)

print('while循环遍历元组:')

length=len(demo_tuple)

i=0

whilei<length:

print(demo_tuple[i])

i+=1for循环遍历元组:Python英语高等数学while循环遍历元组:Python英语高等数学修改元组41元组中的元素不可以修改,示例代码如下:Traceback(mostrecentcalllast):File"E:/list_tuple_dict.py",line2,in<module>demo_tuple[0]='php'TypeError:'tuple'objectdoesnotsupportitemassignmentdemo_tuple=('Python','英语','高等数学')

demo_tuple[0]='php'

print(demo_tuple)元组的常见内置函数42元组的常见内置函数,如下表所示:执行结果如下:方法功能描述len()计算元组中元素的数量max()计算元组中的最大值min()计算元组中的最小值tuple(seq)把其他序列类型转换为元组食品企业信息系统的数据存储任务四知识点一:识别系统中的数据知识点二:使用列表存入数据知识点三:使用元组存入数据知识点四:使用字典存入数据四、使用字典存入数据什么是字典?字典是Python中常用的数据类型,字典是一种可变容器类型,可存储任意类型对象,字典由多个元素组成,元素之间用逗号,分隔,元素都是键值对即key:value的形式,整个字典包括在大括号{}中。字典的常用:字典的定义、字典的访问、遍历字典、增加元素、修改元素、删除元素、查找元素、字典中嵌套字典以及技能提升等几个方面来学习字典有关的知识45字典的定义46定义一个存储学生的基本信息学号、姓名、身高的字典,示例代码如下:{'sno':'2018040001','name':'张三','height':170}stu_dict={'sno':'2018040001','name':'张三','height':170}

print(stu_dict)字典的访问47Python根据元素的键key来访问元素的值,可以使用索引形式,也可以使用get方法,如下实例:张三170None18stu_dict={'sno':'2018040001','name':'张三','height':170}

sname=stu_dict['name']

print(sname)

sheight=stu_dict.get('height')

print(sheight)

sage=stu_dict.get('age')

print(sage)#'age'键不存在,所以sage为None

sage=stu_dict.get('age',18)

print(sage)#'age'键不存在,设置了默认值18,所以sage的值是18字典的访问48字典中的元素都是key:value形式的键值对,如果想查看字典中所有的键或者值或者是键值对,可以分别使用dict_name.keys()、dict_name.values()、dict_name.items()等来分别获取字典的键视图、值视图、元素视图:dict_keys(['sno','name','height'])dict_values(['2018040001','张三',170])dict_items([('sno','2018040001'),('name','张三'),('height',170)])stu_dict={'sno':'2018040001','name':'张三','height':170}

print(stu_dict.keys())#输出字典的键视图

print(stu_dict.values())#输出字典的值视图

print(stu_dict.items())#输出字典的元素视图字典的遍历49使用for循环、while循环来遍历字典,直接把字典作为for循环中的序列来访问默认访问的是字典的键视图,示例代码如下:stu_dict={'sno':'2018040001','name':'张三','height':170}

print('stu_dict',stu_dict)

print('直接使用字典,默认访问的是键视图:')

forkeyinstu_dict:#直接使用字典,默认访问的是键视图

print(key)

print('遍历字典的值列表:')

forvalueinstu_dict.values():#遍历字典的值列表

print(value)

print('遍历字典的键列表:')

forkeyinstu_dict.keys():#遍历字典的键列表

print(key)

print('遍历字典的元素列表方式一:')

forkey,valueinstu_dict.items():#遍历字典的元素列表

print(key,value)

print('遍历字典的元素列表方式二:')

foriteminstu_dict.items():

#遍历字典的元素列表

print(item)stu_dict{'sno':'2018040001','name':'张三','height':170}直接使用字典,默认访问的是键视图:snonameheight遍历字典的值列表:2018040001张三170遍历字典的键列表:snonameheight遍历字典的元素列表方式一:sno2018040001name张三height170遍历字典的元素列表方式二:('sno','2018040001')('name','张三')('height',170)字典元素的修改50字典中修改元素,直接使用dict_name[key]=value即可,示例代码如下:{'sno':'2018040001','name':'张三','height':170,'age':18}{'sno':'2018040001','name':'张三','height':170,'age':19}stu_dict={'sno':'2018040001','name':'张三','height':170,'age':18}

print(stu_dict)

stu_dict['age']=19

print(stu_dict)字典元素的删除51在字典中删除指定键值为key的元素,使用deldict_name[key]即可。可以使用clear()方法清空整个字典,也可以使用del删除整个字典变量,删除后则不可用,示例代码如下:Traceback(mostrecentcalllast):File"E:/list_tuple_dict.py",line8,in<module>print('删除字典变量后,字典不可访问:',stu_dict)NameError:name'stu_dict'isnotdefined字典初始值为:{'sno':'2018040001','name':'张三','height':170,'age':18}删除age后,字典内容为:{'sno':'2018040001','name':'张三','height':170}清空字典内容后,字典内容为:{}stu_dict={'sno':'2018040001','name':'张三','height':170,'age':18}

print('字典初始值为:',stu_dict)

delstu_dict['age']#删除指定元素

print('删除age后,字典内容为:',stu_dict)

stu_dict.clear()#清空字典内容,但该变量仍可访问

print('清空字典内容后,字典内容为:',stu_dict)

delstu_dict#删除整个字典,执行之后该变量不能再访问

print('删除字典变量后,字典不可访问:',stu_dict)字典元素的查找52在字典中查找,通常根据键使用in或者notin进行查找,示例代码如下:请输入要查找的键:name查找到key为name的元素值为:张三stu_dict={'sno':'2018040001','name':'张三','height':170,'age':18}

key=input('请输入要查找的键:')

ifkey

instu_dict:

print('查找到key为',key,'的元素值为:',stu_dict[key])

else:

print('没有查找到key为',key,'的元素')请输入要查找的键:score没有查找到key为score的元素字典中嵌套字典53字典中嵌套字典,指的是一个字典中的元素值仍是字典,示例代码如下:('张三',{'sno':'2018040001','height':170,'age':18})('李四',{'sno':'2018040002','height':165,'age':19})stu_dict={'张三':{'sno':'2018040001','height':170,'age':18},

'李四':{'sno':'2018040002','height':165,'age':19}}

foriteminstu_dict.items():

print(item)技能提升54列表、元组、字典三种结构是否可变对比如下表:存储结构类型是否可变list可变tuple不可变dict可变技能提升55列表、元组、字典对常见操作的支持情况如下表:方法含义listtupledictlen()计算元素数量√√√max()最大值√√Xmin()最小值√√Xlist(seq)转为列表√√√tuple(seq)转为元组√√√dict(seq)转为字典XX√技能提升56回到食品企业信息系统,一个员工的常见属性有工号、姓名、年龄、职称(这里以初级、中级、高级三表等级为例)、工资等,如何定义一个结构,方便存储和快速检索使用一个100人企业中的员工信息呢?为了实现快速检索,考虑使用字典结构,那么对于一个员工而言,哪个信息是能够唯一标识一个员工的呢?同样的,如果是学生信息管理系统呢?技能提升57使用学号作为键,可以设计如下所示的结构存储一个班级的学生信息,代码示例如下:stu_dict={'201809121':{'name':'李勇','pinyin':'liyong','sex':'Y','tel':,

'email':186.com','scores':{'math':64,'english':68,'python':67}},

'201809122':{'name':'刘晨','pinyin':'liuchen','sex':'Y','tel':,

'email':'liuchen@','scores':{'math':59,'english':77,'python':67}}

}当然,在确定一个班级没有重名的情况下,也可以使用姓名作为一个学生的唯一标识,设计如下的字典结构:notes={

'李勇':{'sno':'201809121','pinyin':'liyong','sex':'Y','tel':,

'email':186.com','scores':{'math':64,'english':68,'python':67}},

'刘晨':{'sno':'201809122','pinyin':'liuchen','sex':'Y','tel':,

'email':'liuchen@','scores':{'math':59,'english':77,'python':67}}

}任务总结从概念的角度上来看,列表是可变的序列结构,元组是不可变的序列结构,字典是key:value形式的映射结构,对于字典结构,核心要理解其元素都是以键值对key:value这种映射结构存在的,所以在使用字典结构时,需要选取合适的数据作为key,尤其要注意键要满足唯一性的要求。理解了字典元素的结构,也就理解了字典能够依据键快速检索到其中元素的原因。

从操作的角度来看,需要熟练掌握列表、元组、字典等三种数据结构的常见操作,以增加元素、查找元素、修改元素、删除元素为主进行了案例讲解,其他常见的操作还包括遍历操作、排序、逆置等操作,要能够熟练掌握三种数据结构的特点及操作使用特征。

在项目实践中,要能够根据应用需求的不同,设计合理的数据结构,提高数据处理的灵活性和效率。58谢谢!漯河食品职业学院信息工程系信息系统的模块化实现任务五任务目标任务分析任务设计任务实现任务分析任务五系统的模块化实现知识目标掌握函数的定义和调用掌握函数的参数和返回值的使用理解函数的嵌套和递归调用理解变量的作用域,了解全局变量和局部变量的使用掌握常用内置函数的使用技能目标能够定义客户画像系统中的函数能够正确调用客户画像系统中的函数能够利用函数重构优化客户画像系统任务设计任务五系统的模块化实现任务描述通过前面任务的学习,同学们已经掌握了Python的基础语法,常用语句,字符串的操作,列表、元组和字典操作,实现了客户“画像”系统的基本功能,能编写程序实现企业客户信息的输入、存储、查找、编辑和删除等功能。但是我们发现,目前的程序中存在大量重复的代码,并且所有的代码都放在一段程序中,结构不够清晰,代码的可读性比较差,项目小组成员之间很难做到合理的分工与合作。带着这些问题,我们开始企业客户“画像”系统函数封装模块的学习,学习函数的概念、函数的定义和调用、函数的参数、函数的返回值、常用内置函数、利用函数优化系统等相关知识和技能。任务五系统的模块化实现5.1函数的定义与调用5.2函数的参数与返回值5.3常用的内置函数5.4利用函数优化系统5.1函数的定义与调用5.1.1函数的定义及其作用1、什么是函数?在程序中,函数就是具备某一功能的工具,事先将工具准备好即函数的定义。2、为什么要用函数?在开发时,使用函数可以提高编写的效率以及代码的重用。3、

定义函数

def函数名([形式参数列表]):

函数体[return返回值列表]基于上述格式,我们对函数定义的规则进行说明:(1)函数代码块以def关键字开头,后面是一个空格、函数名和圆括号();(2)函数名的命名规则跟变量的命名规则是一样的,即只能是字母、数字和下划线组成,且不能以数字开头,不能跟关键字重名。5.1函数的定义与调用(3)函数的参数必须放在圆括号中,实际定义函数时,可以没有参数,也可以有一个或多个参数;(4)函数内容以冒号开始,并且缩进;(5)函数的第一行语句习惯用文档字符串来存放函数说明;(6)return表达式结束函数,可以选择性返回一个值给调用方,不带表达式的return相当于返回None,省略return也认为返回None,即返回空值.5.1函数的定义与调用defmenu():"""显示系统菜单"""print("|---欢迎进入食品企业大数据客户“画像”系统|")print(“|---1.添加客户“画像”数据---|")print("|---2.删除客户“画像”数据---|")print("|---3.修改客户“画像”数据---|")print("|---4.搜索客户“画像”数据---|")print("|---5.显示全部客户“画像”数据信息---|")print("|---6.退出食品企业大数据客户“画像”系统---|")5.1函数的定义与调用4、函数调用(1)什么是调用函数遇到应用场景拿来就用即函数的调用;函数必须遵循先定义后调用的原则。(2)为何要调用函数启用函数的功能(3)函数调用的三种方式作为语句形式出现(直接写在一行中)函数名(参数)在表达式中出现(此时函数需要有返回值)变量名=函数名(参数)作为另一个调用函数的实际参数出现(此时函数需要有返回值)变量名=函数名(函数名())5.1函数的定义与调用4、函数调用(4)调用函数的方法很简单,通过“函数名()”即可完成调用。#调用显示系统菜单函数menu()5.1函数的定义与调用|---欢迎进入食品企业大数据客户“画像”系统---||---1.添加客户“画像”数据---||---2.删除客户“画像”数据---||---3.修改客户“画像”数据---||---4.搜索客户“画像”数据---||---5.显示全部客户“画像”数据信息---||---6.退出食品企业大数据客户“画像”系统---|5.2函数的参数与返回值1、参数的作用

函数,把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据。

(1)在函数内部,把参数当作变量使用,进行需要的数据处理。

(2)函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过

参数传递。2、形参和实参

–形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用。

–实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的。5.2函数的参数与返回值调用函数tpl_sum()定义函数tpl_sum()3、函数的返回值

所谓“返回值”,就是函数执行完毕后,通过return语句返回给调用者的结果。return语句表示结束函数的执行,如果没有return语句,或者return语句不返回任何值,Python认为返回None,即返回空值。如果一个函数用return返回多个值,多个值以元组的形式保存。5.2函数的参数与返回值4、变量(1)局部变量

在函数内部定义的普通变量只在该函数内起作用,称为局部变量,当函数运行结束后,局部变量会被自动删除而不可访问。5.2函数的参数与返回值(1)局部变量5.2函数的参数与返回值函数内部函数外部

可以看到,如果试图在函数外部访问其内部定义的变量,Python解释器会报NameError错误,并提示我们没有定义要访问的变量,这也证实了当函数执行完毕后,其内部定义的变量会被销毁并回收。

值得一提的是,函数的参数也属于局部变量,只能在函数内部使用。(2)全局变量除了在函数内部定义变量,Python还允许在所有函数的外部定义变量,这样的变量称为全局变量(GlobalVariable)。

和局部变量不同,全局变量的默认作用域是整个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。

定义全局变量的方式有以下2种:5.2函数的参数与返回值(2)全局变量5.2函数的参数与返回值函数外部在函数体内定义全局变量。即使用global关键字对变量进行修饰后,该变量就会变为全局变量。例如:注意,在使用global关键字修饰变量名时,不能直接给变量赋初值,否则会引发语法错误。5.3常用的内置函数5、内置函数内置函数,就是Python提供的,可以直接拿来直接用的函数。内置函数的数量必须被严格控制,否则Python解释器会变得庞大和臃肿。一般来说,只有那些使用频繁或者和语言本身绑定比较紧密的函数,才会被提升为内置函数。

例如,在屏幕上输出文本就是使用最频繁的功能之一,所以print()是Python的内置函数。在Python2.x中,print是一个关键字;到了Python3.x中,print变成了内置函数。除了print()函数,Python解释器还提供了更多内置函数,下表列出了Python3.x中的所有内置函数。5.3常用的内置函数5.3常用的内置函数这节课我们主要使用字符串内置函数解决“系统设置密码”功能通常我们在设置相关秘密的时候,要求我们必须要求字母大小写,字符以及数字同时存在。接下来我们将借助字符串内置函数,实现账号密码的输入和保护。

根据功能确定使用的函数:1、密码长度大于82、包含数字3、包含字母5.3常用的内置函数1、密码长度大于8首先我们获取密码的长度,我们的密码默认为字符串行,我们可以用自带len()函数进行验证。

pwd是传递的密码5.3常用的内置函数2、包含数字功能我们密码中必须要包括数字,此时我们可以使用isnumeric()函数进行实现。pwd是传递的密码5.3常用的内置函数3、包含字母功能我们密码中必须要包括字母,此时我们可以使用isalpha()函数进行实现。pwd是传递的密码

has_str=False

foriinpwd:

ifi.isalpha():

has_str=True

break5.3常用的内置函数

pwd=input()

iflen(pwd)<8:

print("密码长度必须大于8位!")

has_num=False

foriinpwd:

ifi.isnumeric():

has_num=True

break

ifhas_num==False:

print("密码长度必须包括数字!")

has_str=False

foriinpwd:

ifi.isalpha():

has_str=True

break

ifhas_str==False:

print("密码长度必须包括字母!")has_upper=False

has_lower=False

ifhas_num==Falseorhas_str==Falseorhas_lower==Falseorhas_upper==False:

print("密码错误,请重新输入!")

else:

print("密码设置正确!")

exit()

任务描述:在本任务中将重新划分企业客户画像系统的功能模块,分析系统设计思路,利用函数实现各个模块的功能,定义各个功能实现的函数,如显示菜单函数,接收用户输入选择函数,企业客户信息输入函数、企业客户信息输出函数、企业客户信息查找函数、企业客户信息修改函数,判断用户是否存在函数等等,并利用函数重构企业客户画像系统,对系统功能模块进行函数封装,实现企业客户画像系统。5.4利用函数优化系统5.4利用函数优化系统系统功能分析

客户“画像”系统负责管理维护客户的信息,可以适时地更新客户数据。例如,新客户加入,可以在系统中录入客户信息。设计一个客户画像系统,要求如下:(1)使用自定义函数,完成系统功能的模块化;(2)企业客户信息包括:客户编号(字符串)、姓名(字符串)、年龄(数值类型)、性别(布尔类型)、电话(字符串)、单位(字符串)、地址(字符串);(3)系统具有的功能:添加、删除、修改、查找和查看客户信息以及退出系统功能。5.4利用函数优化系统defadd():"""添加客户信息"""name=input("请输入要添加的客户姓名:")#判断客户是否存在

ifnameincustom_info:print("该客户已经存在!")else:#按提示输入客户信息

sno=input("请输入编号:")name=input("请输入姓名:")sex=eval(input("请输入性别:"))tel=input("请输入电话:")age=input("请输入年龄:")unit=input(“请输入单位:")address=input(“请输入地址:")#定义字典cus,把客户信息存入字典

cus

=dict()cus[“编号"]=snocus["姓名"]=namecus["性别"]=sexcus[“电话"]=telcus[“年龄"]=agecus[“单位"]=unitcus[“地址"]=address#把客户信息添加到custom_infocustom_info[name]=cus5.4利用函数优化系统defmodify():#修改客户信息name=input(“请输入要修改的客户姓名:")ifnameincustom_info:#获取该客户的信息

cus=custom_info[name]#输入该客户要修改的新信息name=input("请输入要添加的客户姓名:")

sno=input("请输入编号:")name=input("请输入姓名:")sex=eval(input("请输入性别:"))tel=input("请输入电话:")age=input("请输入年龄:")unit=input(“请输入单位:")address=input(“请输入地址:")#修改客户信息cus[“编号"]=snocus["姓名"]=namecus["性别"]=sexcus[“电话"]=telcus[“年龄"]=agecus[“单位"]=unitcus[“地址"]=address#把修改的客户信息添加到custom_infocustom_info[name]=cuselse:print(“该客户不存在!")5.4利用函数优化系统defdele():#删除客户信息

name=input(“请输入要删除的客户姓名:")ifnameincustom_info:ch=input("您确定要删除吗?(Y/N)")ifch=="Y"orch=="y":del(custom_info[name])else:print(“该客户不存在!")5.4利用函数优化系统defsearch():#查找客户信息

name=input(“请输入要查找的客户姓名:")ifnameincustom_info:#调用函数,输出该客户信息

print_customt(custom_info[name])else:print(“该客户不存在!")5.4利用函数优化系统defprint_customt(cus):"""输出学生的详细信息"""#输出客户详细信息

print(f"姓名:{cus['姓名']}")print(f"学号:{cus['学号']}")print(f“性别:{cus[‘性别’]}")print(f’’年龄:{cus[‘年龄’]}")print(f"电话:{stu['电话']}")print(f“单位:{stu[‘单位']}")print(f“地址:{stu[‘地址']}")5.4利用函数优化系统defprint_all_custom():#以列表形式输出全部客户信息

print(“客户信息列表")#输出分隔线

print("-"*130)#输出列表标题

print(“姓名\t编号\t\t性别\t电话\t\t\t单位\t\t\t地址")#循环输出客户列表

forcusincustom_info.values():#输出客户基本信息

print(stu['姓名'],end="\t")print(stu[‘编号'],end="\t\t")print(sex[‘性别’],end="\t")print(stu[‘电话'],end="\t\t\t")print(stu[‘单位'],end="\t\t\t")

温馨提示

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

评论

0/150

提交评论