一、定义
函数是对语句的封装
def 函数名 函数体
二、参数
1、形参和实参
函数定义时须要几个形参,调用函数时就须要传入几个实参
形参:函数定义时,在括号里定义的变量,称为形式参数 ,简称形参,只起到占位的作用;
实参:函数调用时传入的值,称为理论参数,简称实参,是真正参加逻辑解决的值
2、传递任意数量的实参
*args 是一个元组,示意可变参数
def test(a, b, *args): print(args) print(a+b) test(1, 2, 3)
三、返回值
如果一个函数没有返回值,那么这个函数的返回后果是None
def get_sum(m, n): result = 0 for i in range(m, n+1): result += i return resultx = get_sum(1, 2)print(x**2)
四、内置函数
1. print()须要输出一个参数,参数是一个字符串类型的数据2. input()3. len()4. max()5. sum()求和6. pow(x,y)求x的y次方7. round(f,n)四舍五入,保留小数点后n位8. sorted()对可迭代对象进行排序9.
nums = [8,1,2,0,9]print(max(nums))print(nums.sort())#列表的sort()办法进行排序,如果用对象的sort办法,运行后没有后果,间接作用到列表了print(sorted(nums))#内置函数sorted(),将列表传进去,后果是排序后的
五、函数的应用
# 1、定义一个函数,让用户输出长和宽,计算并打印面积,要求面积四舍五入保留到小数点后两位def get_area(): width = float(input('请输出宽:')) height = float(input('请输出高:')) # %f 示意的是小数点的占位符 # %.nf 示意的是四舍五入保留到小数点后n位 print('计算出来的面积是%.2f' %(width*height))get_area()
# 2、定义一个函数,求一个列表里数据的最大值def get_max(ns): # 假如列表里第0个数是最大值 my_max = ns[0] for n in ns: if n > my_max: my_max = n print('列表里的最大数是%d' % my_max)nums = [8, 1, 5, 4, 3, 9, 0]get_max(nums)
# 3、定义一个函数,一直的让用户输出数字,如果用户输出stop,进行输出,并打印这些数字里的最大数def get_max(ns): # 假如列表里第0个数是最大值 my_max = ns[0] for n in ns: if n > my_max: my_max = n print('列表里的最大数是%d' % my_max)def demo(): nums = [] # 用来保留用户输出的数字 while True: num = input('请输出一个数字:') if num == 'stop': break nums.append(int(num)) get_max(nums)demo()
# 4、名片管理系统# 定义一个全局变量的列表,用来保留所有的用户user_list = []def add_user(): # print('增加名片') # 让用户输出用户名,手机号和QQ等信息 name = input('请输出姓名:') for u_dict in user_list: if u_dict['name'] == name: print('对不起,用户名曾经被占用了!!!') # break#只能完结以后循环,但函数中除了该循环外的上面仍会执行 return # 示意完结函数 tel = input('请输出手机号:') qq = input('请输出QQ号:') # 把用户输出的信息整合成为一个字典来保留 user = {'name': name, 'tel': tel, 'qq': qq} # 把创立好的用户字典增加到用户列表里 user_list.append(user) print(user_list)def del_user(): # print('删除名片') num = int(input('请输出要删除的序号:')) if num < 0 or num > len(user_list)-1: print('您输出的序号不在范畴内') return is_sure = input('你确定要删除吗(yes or no):') if is_sure.lower() == 'yse': user_list.pop(num) print(user_list)def modify_user(): # print('批改名片') if num < 0 or num > len(user_list)-1: print('您输出的序号不在范畴内') return print('您要批改的信息时:') # 依据下标获取到字典数据 user_dict = user_list[num] print('姓名:%s,手机号:%s,QQ号:%s' % (user_dict['name'], user_dict['tel'], ['qq'])) new_name = input('请输出新的姓名:') new_tel = input('请输出新的手机号:') new_qq = input('请输出新的qq:') user_dict['name'] = new_name user_dict['tel'] = new_tel user_dict['qq'] == new_qq print(user_list)def show_user(): # print('显示名片') search_name = input('请输入您要查问的姓名:') for user in user_list: if user['name'] == name: print('查问到的信息如下:') print('姓名:%s,手机号:%s,QQ号:%s' % (user['name'], user['tel'], user['qq'])) break else: print('没有您要找的信息......')def show_all(): # print('显示所有') print('序号 姓名 手机号 QQ') i = 0 for user in user_list: # center 字符串的办法 print('%d %s %s %s' % (i, user['name'].center( 10), user['tel'].center(14), user['qq'].center(10))) i += 1def quit_system(): # print('退出零碎') is_sure = input('你确定要退出吗?(yes or no)') if is_sure.lower() == 'yes': return True else: return Falsedef main(): while True: print('----------------------') print('名片管理系统V1.0') print('1:增加名片') print('2:删除名片') print('3:批改名片') print('4:查问名片') print('5:显示所有名片') print('6:退出零碎') print('----------------------') num = input('请输出要进行从操作(数字)') if num == '1': add_user() elif num == '2': del_user() elif num == '3': modify_user() elif num == '4': show_user() elif num == '5': show_all() elif num == '6': # quit_system() is_exit = quit_system() if is_exit == True: break else: print('输出的内容不非法')main()