python基础day5

这篇博客深入探讨了Python的基础知识,重点讲解了函数的使用,包括函数的定义、参数、返回值,以及如何进行函数注释。此外,还介绍了匿名函数和参数的高级用法,并通过实例展示了如何构建一个名片管理系统。
摘要由CSDN通过智能技术生成

1.函数

"""
掌握 函数

1. 概念:
    函数 是用于对重复代码块的封装, 解决代码重复的问题

2. 语法:
    def 函数名():
        函数体(重复代码块)

    备注:
        1. 定义函数 不会执行函数体的代码
        2. 必须调用函数的时候才会执行封装的代码块
            调用语法: 函数名()
        3. 函数必须先定义 再调用
"""


# 封装一个函数,实现99乘法表
def cf99():
    # 函数体(重复代码块)
    # 99乘法表
    i = 1  # i 代表乘数
    while i <= 9:
        # 循环获取被乘数
        j = 1  # 被乘数
        while j <= i:
            print(f"{j}*{i}={j*i}", end="\t")
            j += 1
        # 换行
        print()
        i += 1


# 调用函数
cf99()
print("======")



print("********")
cf99()

2.函数的参数

"""
掌握 函数的参数的使用

1. 概念
    我们将函数体中未知数据 定义为函数的参数(形式参数),简称形参

2. 语法
    def 函数名([形式参数1,形式参数2...]):
        函数体(使用形式参数 占位)


3. 如何调用带形参的函数
    函数名(实际参数)

    备注: 实际参数 即实际的数据(具体的值)

4. 以后如何确定是否有参数:
    只要函数体中有 未知数 参与运算, 就将其定义为函数的形式参数

计算某城市的市内电话的月收费额y元
	包含: 月租费用22元, 拨打电话x分钟的计时费按0. 1元/分钟收取

	电信收费函数(公式):
	y  =  22   +  0.1 * x

	分析: x 未知数 用于占位, 只有当传入具体的数据才能最后的结果
"""


# 定义一个函数, 求解一个月的话费
def total(x):  # 定义为形参
    y = 22 + 0.1 * x  # x 未知数
    print(y)


# 调用
m = 10
total(m)


# 定义一个函数求解两个数的和
def sum(x, y):
    print(x + y)


# 调用
sum(10, 20)

3.函数的返回值

"""
掌握  函数的返回值

1. 概念: 函数中可以返回运算的结果 到函数的调用位置

    备注:
        1. 如何返回, 使用 return 数据
        2. 返回的位置 是函数的调用位置

2. 为什么需要使用return返回数据
    a. 函数内的所有的变量 当函数调用结束就会被释放, 节约内存资源
    b. 如果后面的代码需要使用函数中的计算结果, 就使用return将计算结果返回
"""


# 定义一个函数求解两个数的和,并且将结果进行返回
def sum(x, y):
    res = x + y  # 50
    # 返回计算结果
    return res


# 调用
# print(sum(20,30))  # 后面的代码需要使用前面的运算结果, 这个时候就使用变量存储
result = sum(20, 30)  # 后面的代码需要使用前面的运算结果, 这个时候就使用变量存储
print(result)
print(result)
print(result)
print(result)

4.函数定义三部曲

"""
函数定义三部曲:
1. 确定函数名: 标识符 要求见名之意, 根据这个名字就能知道和理解函数的作用
2. 确定形式参数: 函数体中如果有未知数参与运算, 就将其定义为函数的形式参数
3. 确定返回值:
        a. 如果在后面的代码需要使用函数中的运算结果,就需要返回(return)
        b. 如果不明确是否需要返回,建议也返回
        c. 如果题干要求 获取/得到 这些字眼, 说明要返回
        d. 题干说明对数据 进行输出/处理后不返回 这些就不用返回

def 函数名([形式参数]):
    函数体
    return 返回值

"""


# 定义函数求解两个数的和
def add(a, b):
    return a + b


# 调用
# print(add(20,30))
result = add(10, 20)
print(result)

5.空语句

"""
掌握: pass 空语句

1. 为了保证语句的完整结构, 但是又不清楚具体些什么语句, 这个时候就使用pass (空语句) 占位

"""
if 3 > 2:
    pass


def add(a,b):
    pass

6.函数注释

"""
掌握 : 函数的注释


1. 概念: 函数注释就是用于对函数的进行解释说明

2. 语法
    在函数名下面,缩进的里面, 使用 '''''' 对函数进行解释说明

    def 函数名([形式参数]):
        '''
        函数注释
        功能简介
        参数说明
        :param 参数名  作用
        返回值说明
        :return number 两个数的和
        '''
        pass
"""
def add(a,b):
    """
    求两个数的和
    :param a: 第一个数字
    :param b: 第二个数字
    :return: number 两个数的和 | None
    """
    return a + b

7.了解匿名函数

"""
了解 匿名函数

1. 概念: 没有名字的函数就是匿名函数
    特殊:
        a. 通过 lambda 定义
        b. 自动返回(自动返回运算结果,不需要写return)
        c. 只能写简单表达式

    语法: lambda 形式参数:函数体
"""

"""
定义一个函数: 传入三个参数:
x: 数字
y: 数字
op: 运算方式
"""
def fn(x, y, op):
    """
    根据传入的具体运算方式进行运算
    :param x: 数字1
    :param y: 数字2
    :param op: 运算方式
    :return: 运算后的结果
    """
    return op(x, y)


# 函数调用
result = fn(10, 9, lambda x, y: x * y)
print(result)

8.参数加强

"""
了解 参数加强

1. 必须参数(必传)---对应位置顺序一一对应
    def 函数名(形参1,形参2):
        pass

2. 默认参数 --- 有默认值的参数,如果传值就不使用默认,如果不传值就使用默认值
    def 函数名(形参1,形参2=默认值):
        pass

    备注:
        1 有默认值的参数可传可不传
        2 有默认值的参数跟在无默认值参数的后面

3. 关键字参数
    在函数调用的时候,传递的实际参数可以给其命名(命名规定为形参名), 好处是可以交换实参的位置
    例如:
    def 函数名(形参1,形参2=默认值):
        pass
    函数名(形参1=实际参数1,形参2=实际参数2)

"""
def add(a,b=10):
    print(a,b)
    return a+b

# add(10,20)
add(b=20,a=10)

9.名片管理系统

自己利用学函数前的基础知识写的名片系统,保存在这里只为以后学了更多知识后完善修改!
print('''
    *************************
    欢迎使用名片管理系统!(V1.0)
    *************************
    ''')
# 定义名片夹,并预设测试值
cards = [
    {'name': '张飞', 'age': '20', 'sex': '男', 'job': '经理', 'company': '牛肉馆'},
    {'name': '貂蝉', 'age': '18', 'sex': '女', 'job': '服务员', 'company': '羊肉馆'}
]
# 设定系统死循环
while True:
    # 打印功能表
    print('''
    请录入数字开始对应的功能:
       ***************
       *  1.查看列表  *
       ***************
       *  2.添加名片  *
       ***************
       *  3.修改名片  *
       ***************
       *  4.删除名片  *
       ***************
       *  5.查询名片  *
       ***************
       *  0.退出系统  *
       ***************
    ''')
    # 录入功能序号

    while True:
        function_num = input('请输入功能号:')
        if function_num == '1':
            # 判断是否确认进入查看名片列表
            y_n=input("确定要进入查看列表功能(y/n):")
            if y_n=='n':
                break
            elif y_n=='y':
                print('进入查看名片列表功能')
                # 打印表头
                print('名字\t年龄\t性别\t职位\t公司')
                # 遍历名片夹
                for card in cards:
                    # 对应表头打印出值
                    print(f"{card['name']}\t{card['age']}\t\t{card['sex']}\t\t{card['job']}\t{card['company']}")
                    
            else:
                print('请输入y或者n')





        elif function_num == '2':
            y_n = input("确定要进入添加名片功能(y/n):")
            if y_n == 'n':
                break
            elif y_n == 'y':
                print('进入添加名片功能!')
                # 录入信息
                name = input('请输入姓名:')
                age = input('请输入年龄:')
                sex = input('请输入性别:')
                job = input('请输入职务:')
                company = input('请输入公司名:')
                # 合成字典
                card = {'name': name, 'age': age, 'sex': sex, 'job': job, 'company': company}
                # 传入名片列表cards
                cards.append(card)
                break
            else:
                print('请输入y或者n')


        elif function_num == '3':
            y_n = input("确定要进入修改名片功能(y/n):")
            if y_n == 'n':
                break
            elif y_n == 'y':
                print('进入修改名片功能!')
                old_name = input('请输入要修改的名片的名字:')
                # 遍历名片夹
                for card in cards:
                    if card['name'] == old_name:
                        # 录入信息
                        name = input('请输入姓名:')
                        age = input('请输入年龄:')
                        sex = input('请输入性别:')
                        job = input('请输入职务:')
                        company = input('请输入公司名:')
                        # 更新找到的名片
                        card.update({'name': name, 'age': age, 'sex': sex, 'job': job, 'company': company})
                        print(f"更新{old_name}的名片成功!")
                        break
                else:
                    # 没有找到要修改的名字,提示没有该名片,重新输入
                    print(f'名片夹中没有{old_name}的名片,无法修改!')
            else:
                print('请输入y或者n')


        elif function_num == '4':
            y_n = input("确定要进入删除名片功能(y/n):")
            if y_n == 'n':
                break
            elif y_n == 'y':
                print('进入删除名片功能!')
                old_name = input('请输入要删除的名片的名字:')
                # 变量名片夹
                for card in cards:
                    # 比对输入的名字是否存在于名片夹里
                    if card['name'] == old_name:
                        # 有就删除
                        cards.remove(card)
                        print(f'删除{old_name}的名片成功!')
                        break
                else:
                    # 找不到就提示
                    print(f'名片夹中没有{old_name}的名片,无法删除!')
            else:
                 print('请输入y或者n')
        elif function_num == '5':
            y_n = input("确定要进入查询名片功能(y/n):")
            if y_n == 'n':
                break
            elif y_n == 'y':
                print('进入查询名片功能!')
                old_name = input('请输入要查询的名片的名字:')
                # 遍历名片夹
                for card in cards:
                    # 比对输入的名字是否存在于名片夹里
                    if card['name'] == old_name:
                        # 有就打印,美化下打印格式
                        info = f'''
                                     **********************************
                                     {card['company']}               

                                     {card['name']}({card['job']})   
                                     年龄:{card['age']}              
                                     性别:{card['sex']}              
                                     **********************************
                                    '''
                        print(info)
                        break
                    else:
                        # 没有就打印提示
                        print(f'没有{old_name}的名片信息!')
                else:
                    print('请输入y或者n')
        elif function_num == '0':
            y_n = input("确定要退出名片管理系统(y/n):")
            if y_n == 'n':
                break
            elif y_n == 'y':
                quit('欢迎再次使用名片管理系统!')
            else:
                print('请输入y或者n')

        else:
            print('请输入正确的指令!')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值