一、定义
函数是对语句的封装
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 result
x = 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 += 1
def quit_system():
# print('退出零碎')
is_sure = input('你确定要退出吗?(yes or no)')
if is_sure.lower() == 'yes':
return True
else:
return False
def 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()