Python初级案例教学,函数的定义与调用,高阶函数,闭包以及装饰器【第四课】

举报
南蓬幽 发表于 2022/05/17 10:41:00 2022/05/17
【摘要】 Python 编写一个函数 cacluate Python编写一个函数,接收字符串参数返回一个元组 使用高阶函数方式设计Calc函数,实现加、减、乘、除、乘方等计算功能 使用闭包编写一个学生成绩平均统计。要求每次调用函数传入一个学生成绩,得到已经传入成绩的平均分。 编写一个装饰器,使其能够打印输出所装饰函数的运算时间 总结 Python 编写一个函数 cacluate编写一个函数 cacl...

Python 编写一个函数 cacluate

编写一个函数 cacluate ,可以接收任意多个数,返回的是一个元组元组的第一个值为所有参数的平均值第二个值是大于平均值的所有数.

def cacluate(*args):
    list1 = []   
    sum = 0
    for i in args:
        sum += i
    avg = sum / len(args)
    for i in args:
        if i > avg:
            list1.append(i)
    return avg, list1    


if __name__ == '__main__':
    n = cacluate(1, 2, 3, 4, 5, 6, 7, 8, 9)
    print(n)


def cacluate(*args): 中args为元组

list1 = [] 用来存储大于平均值的所有数

avg = sum / len(args) 求平均值

list1.append(i) 将数添加进列表内

return 返回多个值时,会自动转为一个元组。

Python编写一个函数,接收字符串参数返回一个元组

编写一个函数,接收字符串参数返回一个元组, ehlla WROLD 元组的第一个值为大写字母的个数,第力个值为小与字母个数。

def num(str1):
    big = 0
    small = 0
    for i in str1:
        if i.isupper():
            big += 1
        elif i.islower():
            small += 1

    return big, small


if __name__ == '__main__':
    s = 'ehlla WROLD'
    n = num(s)
    print(n)

if i.isupper():
big += 1

大写加一

elif i.islower():
small += 1

小写加一

使用高阶函数方式设计Calc函数,实现加、减、乘、除、乘方等计算功能

def add(x, y):
    return x+y


def des(x, y):
    return x-y


def cal(x, y):
    return x*y


def dec(x, y):
    return x/y


def pow(x, y):
    return x**y


def Calc(f, x, y):
    return f(x, y)


if __name__ == '__main__':
    a = int(input('输入数字:'))
    while True:
        c = input('输入运算符:')
        b = int(input('输入数字:'))
        if c == '+':
            a = Calc(add, a, b)
            print('加法:', a)
        elif c == '-':
            a = Calc(des, a, b)
            print('减法:', a)
        elif c == '*':
            a = Calc(cal, a, b)
            print('乘法:', a)
        elif c == '/':
            a = Calc(dec, a, b)
            print('除法:', a)
        elif c == '**':
            a = Calc(pow, a, b)
            print('乘方:', a)
        else:
            break


实现了连续计算。

使用闭包编写一个学生成绩平均统计。要求每次调用函数传入一个学生成绩,得到已经传入成绩的平均分。

def outer():
    def inner(*args):
        sum = 0
        for i in args:
            sum += i
        avg = sum/len(args)
        return avg
    return inner


if __name__ == '__main__':
    ls = []
    while True:
        grade = int(input('输入学生成绩,输入0退出:'))
        if grade == 0:
            break
        else:
            ls.append(grade)
            f = outer()
            avgs = f(*ls)
            print('平均分:', avgs)

编写一个装饰器,使其能够打印输出所装饰函数的运算时间

import time


def deco1(func):
    def inner1(*args, **kwargs):
        stat = time.time()
        func(*args, **kwargs)
        end = time.time()
        print('耗时:', end - stat)
    return inner1


@deco1
def f1(a, b):
    while b < 100000:
        a += b
        b += 1
    print(a)


if __name__ == '__main__':
    f1(0, 1)

总结

通过本次几个案例了解了函数的定义与调用,高阶函数,闭包以及装饰器!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。