# 方法-函数 主要作用就是将重复的代码片段进行封装以便于后期调用使用 # 格式: def 函数名([参数1...]): 调用方法 函数名()
# 定义一个登录login()函数输入用户名密码进行登录并进行判断
def login():
username = input('请输入用户名:')
password = input('请输入密码')
if username == 'admin' and password == '123456':
print('登录成功!')
else:
print('账号或密码错误,登录失败!')
login()
# 定义一个随机生成6位验证码的函数
def get_generate():
char_list = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
generate_list = ''
for i in range(6):
temp_list = random.choice(char_list)
generate_list += temp_list
print(generate_list)
get_generate()
# 参数可以在调用函数时对函数内的变量进行控制 # 定义一个函数求1到n的和
def get_sum(n):
count = 0
for i in range(n+1):
count += i
print(count)
get_sum(100)
# isinstance(变量, 类型) ---> 返回bool 判断该变量是否为此类型 # 多个参数与默认值参数 修改登录功能代码 # 这里的is_remember参数就成为默认参数,在函数调用时可以不修改,默认值为False
def is_login(username, password, is_remember=False):
if username == 'admin' and password == 'admin':
print('登录成功!')
else:
print('登录失败!')
is_login('admin', 'admin')
# 为了解决多个默认值参数在调用函数时不匹配的问题,可以使用关键字参数,就是在函数调用时将默认值参数的参数名加上
def print_info(name, age, sex='男', hobby='读书'):
print(f'姓名:{name},年龄:{age},性别:{sex},爱好:{hobby}')
# 姓名:令狐冲,年龄:22,性别:男,爱好:喝酒
print_info('令狐冲', 22, hobby='喝酒')
# 出租车打车程序,参数手机号码,乘车时间和里程数,2公里内起步价10块,超出2公里每公里5元,乘车时间每分钟0.5元
def taxi_count(tel, time, mile):
if mile <= 2:
price = time * 0.5 + 10
print(f'用户<{tel}>乘车{time}分钟,总里程{mile}英里,此次订单总金额为{price}元')
else:
price = ((mile - 2) * 5 + 10) + time * 0.5
print(f'用户<{tel}>乘车{time}分钟,总里程{mile}英里,此次订单总金额为{price}元')
# 当函数的参数为列表时该怎么办捏?
list_test = [12, 15, 20, 25, 30]
def remove_list(list_1):
for i in list_1[::]:
if i < 20:
list_1.remove(i)
print(list_1)
# 装包与拆包操作 # 装包:*加变量,如果等号后赋值超过前面定义的变量,则会将分配后的剩余数据用list包装,赋值给[*变量]
a, b, *c = 1, 2, 3, 4, 5
print(a) # 1
print(b) # 2
print(c) # [3, 4, 5]
# 拆包:如果定义的变量可以接收后面列表或元组内的内容,则会进行拆包操作,分给每一个变量
d, e, f = [1, 2, 3]
print(d) # 1
print(e) # 2
print(f) # 3
# 先拆包再装包操作
g, h, *i = [1, 2, 3, 4, 5]
print(g) # 1
print(h) # 2
print(i) # [3, 4, 5]
# 可变参数 *args **kwargs # 如果在一个函数定义时固定了参数个数,在以后的调用中就不能灵活地传参了,所以使用了可变参数*args与**kwargs # *args->表示函数传来的参数会自动装包以元组的形式接收 装包操作 # 如果在函数调用时传来的参数时list,tuple,set,那么需要在前面加上* - *list*tuple*set表示拆包 # (先拆包再装包,传来的list通过加*号 - *list拆包后再通过*args装包)拆包在实参前 装包在函数定义的形参前
# 定义一个可变参数,能计算多个参数的和
def get_sum(*args):
count = 0
for i in args:
count += i
print(count)
get_sum(1, 2, 3) # 6
# 如果传来的参数时list,tuple,set则需要先拆包再装包计算
list_1 = [1, 2, 3]
get_sum(*list_1) # 6
# **kwargs-> key word args 使用关键字参数的形式传参,装包->将其转换为key:value形式后以字典形式表示 # 其中的拆包与装包与上面*args类似 只不过是加** # 在函数传参时,不带关键字的是传给*args装包,带关键字的参数是传给**kwargs装包的
books = {
'name': '三国演义'
}
def show_book(**kwargs):
print(kwargs)
for k, v in kwargs.items():
print(k, v)
show_book(name='西游记') # name 西游记
show_book(**books) # name 三国演义
# 函数的返回值:return 返回值 特色:如果有多个返回值则以元组形式进行返回
# 多个返回值函数
def get_max_min_num(nums):
max_num = max(nums)
min_num = min(nums)
return max_num, min_num
num_list = [12, 55, 22, 64, 78]
num1, num2 = get_max_min_num(num_list)
print(num1, num2) # 78 12
# 自定义判断用户是否登录功能 # 如果成功登录,就可以借书
def is_login(username, password):
if username == 'admin' and password == 'admin':
return True
else:
return False
result = is_login('admin', 'admin')
print(result) # True
def borrow_book(book_name):
username = input('请输入用户名:')
password = input('请输入密码:')
if is_login(username, password):
print(f'借书成功{book_name}')
else:
print('登录失败,借书失败')
borrow_book('西游记')
# 声明在函数外的变量为全局变量,在函数内部的为局部变量,全局变量只能使用不能修改,如果想要修改需要关键字 -> global 全局变量名 # 只有不可变的类型才需要添加global关键字,如果是可变类型则不需要添加global关键字 可变类型:list set dict
# 停车场计时收费 15分钟1块,超过15分钟则一小时4块 数据结构[{车牌号:[进入时间,出去时间]}] # 停车场用列表表示
car_park = []
# 车辆进场
def enter():
car_number = input('请输入车牌号:')
car = {car_number: [0]}
car_park.append(car)
print(f'车辆{car_number} - 欢迎光临!')
# 显示停车场内车辆 返回停车车牌列表
def show_car():
car_number = []
for car in car_park:
# 通过遍历字典获得车牌号
for car_name in car:
car_number.append(car_name)
return car_number
# 车辆出场
def go_out():
car_number = input('请输入车牌号:')
for car in car_park:
if car_number in car:
# 如果循环找到了停车场内该车牌 则添加停车时间
park_time = random.randint(0, 24)
car.get(car_number).append(park_time)
# 计算车费
money_count = park_time * 4
print(f'车辆:{car_number}停车时长为:{park_time}小时,停车费总计:{money_count}元')
del car[car_number]
else:
print('输入车辆未找到,请检查输入是否正确!')