2020年5月29日06--Python的函数

# == == == == == == == == == == == == == == == ==
# -*- coding:utf-8 -*-
# @Author:henry
# @Time:2020/5/29 19:48
# Email:yinpingwei@gmail.com
# @File: 2020-05-29python函数.py
# == == == == == == == == == == == == == == == == =


# 函数:定义功能实现,并可以重复实现
'''
1.关键字:def
2.def 函数名称():
    需缩进的函数体
    实现功能的代码
'''

# 函数的定义
# 基本语法
def get_money():           # 冒号之后,是实现的代码
    print('取了500万!!')   # 函数体
    print('好高兴!')

# 调用 函数名称()
get_money()     # 不知道如何实现,但是我只是使用了

# 函数参数
'''
1.形参和实参
2.定义时,为形参
3.调用时,传实参
'''

# 第二个版本
# 位置参数的使用
'''
1.()准备几个坑,相当于告诉使用者必须把坑填满,不然使用不了
2.定义时,()放的形参,并不是具体的数据,形参用变量表达, 形参用来接收-调用者实际传进来的数据
3.形参个数由你的需求来决定
'''
def get_money_v2(card,passworld,count):   # 放的形参
    '''          # 三引号  换行带出 函数功能说明
    :param card:   卡号
    :param passworld:  密码
    :param count:    取款金额
    :return:        返回值
    '''
    # 卡号必须大于10位,是字符串
    if len(card) < 10:
        print('卡号错误,再见!')
    # 密码必须为6位,不然报错
    if len(passworld) != 6:
        print('密码长度出错,再见!')
    # 金额必须为100的整数倍,不然提示你金额报错
    if int(count) % 100 != 0:
        print('金额不为100的整数倍')
    pass        # 使用pass占位   还没有想到写啥。想到在写
'''
# 调用函数
# 1.所有参数必须要传
# 2.位置传参,对应的位置传对应的值
# 3.调用的时候,传的是具体的数据,叫做实参
'''
get_money_v2('12345678900','4567','500')    # 传的实参‘密码’不能满足条件
# print()    # ctrl+B 看源码


# 第三个版本
# 默认参数的使用
'''
# 默认参数:如果有你没有传对应的实参,我就默认我在定义时提供的值
# 定义时:形参=值
# 默认参数在最后
# 不限定个数
'''
def get_money_v3(card,passworld='123456',count=1000):   # 定义时形参=值
    # 卡号必须大于10位,是字符串
    if len(card) < 10:
        print('卡号错误,再见!')
    # 密码必须为6位
    if len(passworld) != 6:
        print('密码长度出错,再见!')
    # 金额必须为100的整数倍,不然提示你金额报错
    if int(count) % 100 != 0:
        print('金额不为100的整数倍')
    else:
        print(card,passworld,count)    # 执行打印所有参数

# 调用参数有三种场景:
# 第一种使用默认值:定义时形参=值
get_money_v3('12345678900',)   # 由于第一个位置参数必传,后面2个定义时已经 形参=值 了
# 第二种部分使用默认值,可传可不传:
get_money_v3('12345678900','123000')   # count使用的是默认值参数
# 第三种是调用时,关键字参数.传参时,形参=值 就可以
get_money_v3('12345678900',count=2000)    # 关键字参数:形参=值 ,就可以直接跳过某个参数


# 第四个版本
# 不定长参数(*args(可以传多个,以元组形式),**kwargs(必须以键:值得形式,以字典的形式))
def get_money_v4(card,*args,**kwargs):
    # args是元组()形式      kwargs是字典,必须以键:值得形式
    # 卡号必须大于10位,是字符串
    if len(card) < 10:
        print('卡号错误,再见!')
    print(card)
    print(args)
    print(kwargs)
    for item in args:   # 遍历值
        print(item)

# 调用函数
get_money_v4('12345678900')   # 输出空元组和空字典
# 调用args参数,可以适用于多个参数,输出一个元组
get_money_v4('12345678900',True,'123456',100,)   # 输出一个 元组
# 调用kwargs参数,以{key:value},输出一个字典
get_money_v4('12345678900',True,'123456',100,name='笑笑',city='深圳')   # 输出一个 字典


# 位置参数(必传),默认参数(可传可不传),不定长参数(支持传多个)
# 顺序(参考print):不定长参数,默认参数(可传可不传)
# *args,*keargs

'''
函数参数几种方法:
1.必传参数
2.默认参数:形参=实参
3.不定长参数:*args,*keargs
位置参数 》不定长参数 》默认参数
'''

# 返回值(return) 礼尚往来
# 第五个版本
'''
返回值关键字:return
1.函数无return,默认调用后的返回值为None
2.return值,值可以是任意类型
3.return后可以不跟值,表示返回为None
4.调用函数时,遇到return,则表示结束函数调用
'''
def get_money_v5(card,passworld='123456',count=1000):
    # 卡号必须大于10位,是字符串
    if len(card) < 10:
        print('卡号错误,再见!')
        return    # 遇到return就退出函数调用
    # 密码必须为6位
    if len(passworld) != 6:
        print('密码长度出错,再见!')
        return
        # 金额必须为100的整数倍,不然提示你金额报错
    if int(count) % 100 != 0:
        print('金额不为100的整数倍')
    else:
        # 三个条件都满足了,我就给你吐钱
        print('条件满足,准备吐钱')
        return card,count

# 接受返回值 变量 = 函数调用
get_money_v5('12345678900')   # 调用但是没有返回结果
# 第一种可以只用一个变量来接收多个
res = get_money_v5('12345678900')    # 接收返回元组形式
print(res)
# 第二种是用多个变量来接收
carn,money = get_money_v5('12345678900')     # 是独立的
print(carn,money)

# res = get_money_v5('12345678900','12345')  # 不满足其中一个分支,执行过程中遇到return,退出函数调用
# print(res)

'''
总结:
1.函数是干嘛的? 功能实现
2.函数先定义在调用
3.定义:def 函数名称():
            实现功能
4.参数:与用户交互。在实实现功能的时候,需要与外部交互,需要外部提供数据,以实现功能
5.由需求来决定,有没有参数,有几个参数
6.参数的类型:位置参数,默认参数,不定长参数(*args,**kwargs)
7.调用的时候,必传位置参数,默认参数可不传,也可以用关键字传参(形参=实参),不定长参数可以传多个
8.函数在调用之后,给用户的输出,有输入有输出,有反馈
9.返回值,return关键字实现    
    1.函数无return,默认调用后的返回值为None
    2.return值,值可以是任意类型
    3.return后可以不跟值,表示返回为None
    4.调用函数时,遇到return,则表示结束函数调用
10.接受功能的输出:变量 = 函数调用
'''

# 课后作业
'''
1、定义函数:(要求:定义函数处理逻辑。input输入操作在函数之外。)
将用户输入的所有数字相乘之后对20取余数,用户输入的数字个数不确定
'''
print('第1题,********************************************************************************')
numb_1 = input('请输入数字:')
def pou(my_list):
    my_list2 = my_list.split(',')
    nice = 1
    for k in my_list2:
        nice *= int(k)
    return nice % 20


print(pou(numb_1))



# 2、编写函数,检查传入列表的长度,如果大于2,那么仅仅保留前两个长度的内容,并将新内容返回
print('第2题,********************************************************************************')
def check_list1(list2):        # 使用函数检查传入的列表2
    if len(list2) > 2:          # 如果列表2的长度大于2
        list3 = list2[0:2]
        return list3
    else:
        return list2

list4 = [1, 2, 3, 4, 5]
print(check_list1(list4))



# 3、列表去重
# 定义一个函数 def remove_element(m_list):,将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]去除重复元素

print('第3题列表去重,********************************************************************************')
my_list1 = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]   # 定义一个列表1
def remove(my_list):           # 定义一个函数
    my_list2 = set(my_list)     # 进行列表1去重
    print(my_list2)             # 打印去重后的列表2

remove(my_list1)



'''
4.编写如下程序(要求:定义函数处理逻辑。input输入操作在函数之外。)
尝试函数封装:
输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方)计算他的BMI指数
a.例如:一个65公斤的人,身高是1.62m,则BMI为 :  65 / 1.62 ** 2 = 24.8

b.根据BMI指数,给与相应提醒
低于18.5: 过轻 18.5-25:   正常 25-28:      过重 28-32:      肥胖 高于32:   严重肥胖
'''
print('第4题*************************************************************')
# 第一种方法
height = float(input('请输入你的身高(m):'))          # 输入身高
weight = int(input('请输入你的体重(kg):'))           # 输入体重
BMI = weight / (height**2)                           # 根据BMI公式(体重除以身高的平方)计算他的BMI指数
if BMI < 18.5:                                       # 条件1,BMI指数低于18.5,执行此条件
    print('你的BMI指数过轻')
elif 18.5 <= BMI < 25:                               # 条件2,BMI指数大于等于18.5小于25,执行此条件
    print('你的BMI指数是正常的')
elif 25 <= BMI < 28:                                 # 条件3,BMI指数大于等于25小于28,执行此条件
    print('你的BMI指数显示你过重')
elif 28 <= BMI < 32:                                 # 条件4,BMI指数大于等于28小于32,执行此条件
    print('你的BMI指数显示你很肥胖')
else:                                                # 条件5,BMI指数大于32,执行此条件
    print('你的BMI指数显示严重肥胖')

# 第二种方法
def get_bmi(height,weight):
    bmi = weight / height**2
    if bmi < 18.5:                                       # 条件1,BMI指数低于18.5,执行此条件
        return '你的BMI指数过轻'
    elif 18.5 <= bmi < 25:                               # 条件2,BMI指数大于等于18.5小于25,执行此条件
        return '你的BMI指数是正常的'
    elif 25 <= bmi < 28:                                 # 条件3,BMI指数大于等于25小于28,执行此条件
        return '你的BMI指数显示你过重'
    elif 28 <= bmi < 32:                                 # 条件4,BMI指数大于等于28小于32,执行此条件
        return '你的BMI指数显示你很肥胖'
    else:                                                # 条件5,BMI指数大于32,执行此条件
        return '你的BMI指数显示严重肥胖'


h = 1.65
w = 90
bo = get_bmi(h,w)
print('得到的结果是:{}'.format(bo))


# 5.定义一个函数,传入一个字典和字符串,判断字符串是否为字典中的值,如果字符串不在字典中,则添加到字典中,并返回新的字典
print('第5题,********************************************************************************')
def add(di_1,st_1):                   # 定义一个函数,字典1和字符串1
    di_1 = {'age': 15,'sex': '男'}    # 定义一个字典1
    st_1 = 'python30'                 # 定义一个字符串1
    if st_1 not in di_1:              # 如果字符串1不在字典1中的话
        di_1[st_1] = '头要秃了'        # 那么添加字符串到字典当中
    else:                              # 反之
        print('这个已经存在啦!')
    return di_1                        # 返回字典的值结束函数调用


r = add({'age':12,'sex':'bbu'},'morn')   # 给值
print(r)



# 6.通过定义一个计算器函数,调用函数传递两个参数,然后提示选择【1】加 【2】减【3】乘 【4】除 操作,选择之后返回对应操作的值。

print('第6题,********************************************************************************')
numb = int(input('请你选择:[1]加 [2]减 [3]乘 [4]除:'))   # 用input来输入所需的数字
def choinse(a,b):        # 定义一个函数
    if numb == 1:        # 如果输入数字等于1
        cou1 = a + b     # 那么执行1这个条件
        return cou1      # 调用返回值同时结束函数调用
    elif numb == 2:      # 如果输入数字等于2
        cou2 = a - b     # 那么执行2这个条件
        return cou2      # 调用返回值同时结束函数调用
    elif numb == 3:      # 如果输入数字等于3
        cou3 = a * b     # 那么执行3这个条件
        return cou3      # 调用返回值同时结束函数调用
    elif numb == 4:      # 如果输入数字等于4
        cou4 = a / b     # 那么执行4这个条件
        return cou4      # 调用返回值同时结束函数调用
    else:                # 如果输入除了1,2,3,4之外的值就执行这个
        print('请选择你要的运算方式')
        return           # 调用返回值同时结束函数调用


res = choinse(30,7)      # 接受返回值
print(res)

'''
7.一个足球队在寻找年龄在15岁到22岁的女孩做拉拉队员(包括15岁和22岁)加入。编写一个程序,询问用户的性别和年龄,
然后显示一条消息指出这个人是否可以加入球队,询问10次后,输出满足条件的总人数。
(要求:定义函数处理逻辑。但是input输入操作在函数之外。在for循环当中,调用input和自己定义的函数)
'''

print('第7题,********************************************************************************')
def search(count):                        # 定义一个函数的
    num = 0
    for count in range(0,count):          # 需要循环的次数
        sex = input('请输入孩子的性别:')  # 输入性别
        if sex == '女':                   # 条件1,如果输入的性别等于条件1执行下一行
            age = int(input('请输入孩子的年龄:'))   # 输入年龄
            if 15 <= age <= 22:           # 条件2 ,如果如果输入的年龄等于条件2执行下一行
                num += 1                  # 循环次数每次加1
                print('恭喜你,你可以加入战队啦')      # 条件1,条件2 都满足,执行打印
            else:                                    # 反之,  不满足条件2,执行
                print('很抱歉你的年龄不符合条件')
        else:                               # 反之,  不满足条件1,执行
            print('很抱歉你的性别不符合条件')
    print('一共有{}人符合要求,可以加入啦啦啦对'.format(num))      # 使用format函数统计执行10次的条件


search(10)                                     # 调用函数


思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值