11 函数
1 函数定义
1.1 定义函数:
格式:
def 函数名([参数,参数...]):
函数体 (重复的代码)
注意:1. 必须使用关键字def 2. 函数体注意缩进 3.函数名() 绑定
- 函数名命名规则同变量名,要满足标识符命名规则
- 不能和系统函数重名,否则系统函数无法使用
- 函数定义分两部分函数头和函数体
- 函数体,就是实现功能的代码段,以:开头,必须缩进
- 函数名的命名风格:一般建议用下划线分隔的小写单词组成:say_hello
1.2 可变参数 + 关键字参数
可变参数 + 关键字参数
关键字参数:key=value
def show(a, b=10):
print(a, b)
show(5)
show(4, 7)
def add1(a, b=10, c=4):
print(a, b, c)
result = a + b + c
print(result)
add1(1)
add1(1, 5)
add1(1, c=5)
1.3 不定长参数函数:
def add(*args):
sum = 0
if len(args) > 0:
for i in args:
sum += i
print('累加和是:sum:', sum)
else:
print('没有元素可计算,sum:', sum)
add(1, 2)
add(1, 2, 3, 4)
def func1(name, *args):
if len(args) > 0:
for i in args:
print('{}学过了{}'.format(name, i))
else:
print('没有学任何编程知识!')
courses = ['html', 'mysql', 'python']
func1('坤坤', courses)
func1('坤坤', *courses)
定义方式:
使用函数的时候:
def aa(**kwargs):
pass
aa(a=1, b='hello', c='tom') --->将关键字装包成字典
dict1 = {'a': 1, 'b': 'hello', 'c': 'tom'}
aa(**dict1)
函数: 打印每位同学姓名和年龄
students = {'001': ('蔡徐坤', 21), '002': ('王源', 19), '003': ('王俊凯', 20), '004': ('易烊千玺', 19)}
def print_boy(name, **persons):
print('{}喜欢的小鲜肉是:'.format(name))
if isinstance(persons, dict):
values = persons.values()
for name, age in values:
print('{}的年龄是:{}'.format(name, age))
print_boy('蕊蕊', **students)
def func(a, *args, **kwargs):
print(a, args, kwargs)
t = (1, 2, 3, 4)
func(1, t)
l = [2, 5, 8]
func(1, l, c=9, b=6)
1.4 函数案例
账号验证登录案例,最多3次机会
def login(username, password):
user_name = "admin"
pwd = "123123"
for i in range(3):
if username == user_name and password == pwd:
print("登录成功")
break
else:
print("登录失败")
if i != 2:
username = input("请输入用户名:")
password = input("请输入用户密码:")
else:
print("账号锁定")
username = input("请输入用户名:")
password = input("请输入用户密码:")
login(username, password)
定义列表里面求最大值函数
方法一:冒泡排序法求最大
def max_listnum(lists):
for i in range(len(lists)):
for j in range(i+1, len(lists)):
if lists[i] > lists[j]:
lists[i], lists[j] = lists[j], lists[i]
print(lists)
max_num = lists[len(lists)-1]
print(max_num)
list1 = [1, 18, 9, 5, 100]
max_listnum(list1)
方法二:直接求最大
def max_listnum(lists):
max_num = 0
for i in lists:
if i > max_num:
max_num = i
print(max_num)
list1 = [1, 18, 9, 5, 100]
max_listnum(list1)
1.5 局部变量与全局变量
list1 = [1, 2, 4, 6]
def func1():
list1.append(8)
print(list1)
func1()
1.6 购物车验证登录案例
'''
用户登录
输入用户名
输入密码
输入验证码 ----》 封装成一个函数
加入购物车
判断用户是否登录,如果登录,成功加入购物车,否则提示请登录之后添
成功 True 不成功 False
def add_shoppingcart(goodsName):
pass
def login(username,password):
pass
'''
import random
islogin = False
shop_car = []
def generate_random():
s = '0987654321qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
code = ""
for i in range(4):
ran = random.randint(0, len(s) - 1)
code += s[ran]
return code
def login(useername, password):
useer_name = "admin"
pwd = "123456789"
yanzhengma = generate_random()
print("验证码是:", yanzhengma)
input_random = input("请输入验证码:")
if input_random.lower() == yanzhengma.lower():
if useername == useer_name and password == pwd:
global islogin
islogin = True
else:
print("用户名或者密码错误")
else:
print("验证码输入错误")
def shopping(goods_name):
global shop_car
if islogin:
shop_car.append(goods_name)
print(f"{goods_name}加入购物车成功,当前购物车总商品{shop_car}")
else:
print("没有登录,请登录")
useername = input("请输入用户账号:")
password = input("请输入用户密码:")
login(useername, password)
if __name__ == '__main__':
useername = input("请输入用户账号:")
password = input("请输入用户密码:")
login(useername, password)
if islogin:
goods_name = input("请输入商品名称:")
shopping(goods_name)
while True:
answer = input("是否继续购买(yes or no):")
if answer == "yes":
goods_name = input("请输入商品名称:")
shopping(goods_name)
else:
break