11 函数

11 函数

1 函数定义

1.1 定义函数:

格式:
def 函数名([参数,参数...]):
    函数体 (重复的代码)
注意:1. 必须使用关键字def  2. 函数体注意缩进  3.函数名() 绑定
- 函数名命名规则同变量名,要满足标识符命名规则
- 不能和系统函数重名,否则系统函数无法使用
- 函数定义分两部分函数头和函数体
- 函数体,就是实现功能的代码段,以:开头,必须缩进
- 函数名的命名风格:一般建议用下划线分隔的小写单词组成:say_hello

1.2 可变参数 + 关键字参数

可变参数 + 关键字参数
关键字参数:key=value
def show(a, b=10):  # 关键字参数  此时的b就是默认值
    print(a, b)
show(5)		# a=5,b=10
show(4, 7)  # a=4,b=7   # 此时7就会覆盖b原来的默认值


def add1(a, b=10, c=4):
    print(a, b, c)
    result = a + b + c
    print(result)
add1(1)     # a=1 b=10 c=4
add1(1, 5)  # a=1 b=5 c=4
add1(1, c=5)  # a=1 b=10 c=5

1.3 不定长参数函数:

def add(*args):  # arguments 参数
    sum = 0
    if len(args) > 0:
        for i in args:
            sum += i
        print('累加和是:sum:', sum)
    else:
        print('没有元素可计算,sum:', sum)

add(1, 2)  # 累加和是:sum: 3
add(1, 2, 3, 4)  # 累加和是:sum: 10


def func1(name, *args):
    if len(args) > 0:
        for i in args:  # ('html','mysql','python')
            print('{}学过了{}'.format(name, i))
    else:
        print('没有学任何编程知识!')

courses = ['html', 'mysql', 'python']
func1('坤坤', courses)		# 坤坤学过了['html', 'mysql', 'python']
func1('坤坤', *courses)  	# 坤坤学过了html,坤坤学过了mysql,坤坤学过了python
定义方式:
使用函数的时候:
def aa(**kwargs):
    pass
    
aa(a=1, b='hello', c='tom')    --->将关键字装包成字典

# 如果在开发的时候,已知一个字典
dict1 = {'a': 1, 'b': 'hello', 'c': 'tom'}
aa(**dict1)  # a=1, b='hello', c='tom'    拆包的过程


函数: 打印每位同学姓名和年龄
students = {'001': ('蔡徐坤', 21), '002': ('王源', 19), '003': ('王俊凯', 20), '004': ('易烊千玺', 19)}

def print_boy(name, **persons):  # persons = students
    print('{}喜欢的小鲜肉是:'.format(name))
    if isinstance(persons, dict):
        values = persons.values()
        # print(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)      # 1 ((1, 2, 3, 4),) {}
l = [2, 5, 8]
func(1, l, c=9, b=6)    # 1 ([2, 5, 8],) {'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 局部变量与全局变量

# global  变量的范围
# 局部变量  全局变量
# 声明在函数外层是全局的,所有函数都可以访问。
# 全局变量如果是不可变在函数中进行修改需要添加global关键字,
# 如果全局变量是可变的,在函数中修改的时候就不需要添加global

list1 = [1, 2, 4, 6]
def func1():
    # 修改列表  可变(list set dict)不需要声明全局变量
    list1.append(8)
    print(list1)

func1()     # [1, 2, 4, 6, 8]

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值