头歌 python 第五章 函数

1.第1关:练习-Python函数之装饰器(time_interval)

import time

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 编写一个装饰器 time_interval,实现为函数统计运行时间的功能
def time_interval(text):
        def wrapper(t):
            start_time=time.time()
            text(t)
            end_time=time.time()
            print("运行的时间是{:.2f}".format(end_time-start_time))
        return wrapper

t= float(input())
@time_interval
def test(x):
    time.sleep(x)  #程序停止运行x秒

test(t)

2.第2关:学习-Python函数之装饰器(Verification)


# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 第1步:定义装饰器函数Verification,在装饰器中获取输入的账号和密码,判断账号密码是否正确
def verify_login(username, password):
    # 这里模拟验证过程,假设正确的用户名是educoder',密码是'123456'
    correct_username = 'educoder'
    correct_password = '123456'
    if username == correct_username and password == correct_password:
        return True
    return False

def Verification(func):
    def wrapper():
        username = input()
        password = input()
        if verify_login(username, password):
            print("登录成功")
            func()
        else:
            print("账号密码错误")
    return wrapper

@Verification
def login():
    # 这里可以添加登录成功后的其他操作
    pass  # 目前仅作为示例,不执行任何操作

# 调用login函数,由于它被@Verification装饰,所以会先执行验证过程
login()

3.第3关:练习-Python函数之生成器函数 fib()

"""
任务:定义一个生成器函数 fib(),实现打印斐波拉契数列的前 n 项。n 是用过 input 获取。
"""
 
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 定义生成器函数 fib(),实现斐波拉契数列的打印
def fib():
    a, b = 1, 1
    count = int(input())
    for _ in range(count):
        yield a
        a, b = b, a + b

# 调用生成器函数,并打印结果
for num in fib():
    print(num)
########## End ##########

4.第4关:学习-Python函数之生成器函数之计数器

"""
任务:设计一个生成器函数 count(),每次使用 next 函数调用该函数时,数字就会加 1。请编写代码实现一个从 0 开始的计数器。
"""

def count():
    counter = 0  # 初始化计数器变量
    while True:  # 无限循环,确保生成器可以一直产生新的值
        yield counter  # 返回当前计数器的值
        counter += 1  # 递增计数器

# 创建生成器对象
func = count()

# 读取用户输入的数字,表示要获取多少个计数器的值
num = int(input())

# 使用 for 循环和 next() 函数从生成器中获取指定数量的值
for x in range(num):
    print(next(func))

5.第5关:练习-Python函数之lambda表达式

"""
任务:将下列函数转换为匿名函数,该函数的作用是得到列表中的偶数,函数参数通过 input 获取。
将列表中的偶数添加到一个新列表中,打印纯偶数的列表。
```
def func(num_list):
    list1 = []
    for x in num_list:
        if x%2 == 0:
            list1.append(x)
    return list1
```
"""
 
 
# 请在下面的 Begin-End 之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 请使用 lambda 表达式实现本关任务
list1=eval(input())
new_list=filter(lambda x:x%2==0,list1)
print(list(new_list))
########## End ##########

6.第6关:学习-Python函数之lambda表达式

"""
任务:给定两个列表,编写一个匿名函数实现比较两个列表中对应下标位置的元素的大小,将大的元素组成一个新的列表,函数参数通过 input 获取。
"""

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ########## 
# 请使用map函数和lambda表达式实现本关任务
a=eval(input())
b=eval(input())
d=map(lambda x,y:max(x,y),a,b)
print(list(d))
########## End ##########

7.第7关:练习-Python函数之函数递归调用

"""
任务:给定一个嵌套列表,递归实现嵌套列表求和,打印求和后的结果。
"""
list1 = eval(input())
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 定义一个函数,递归实现嵌套列表求和,打印求和后的结果
def listsum(L):
    result=0
    for i in L:
        if isinstance(i,list):
            result +=listsum(i)
        else:
            result += i
    return result
print(listsum(list1))
 
 
########## End ##########

8.第8关:学习-Python函数之函数递归调用

"""
任务:使用递归打印斐波拉契数列的前 n 位数字。n 通过 input 函数获取。
"""

 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 定义一个函数,使用递归打印斐波拉契数列的前 n 位数字
def f(n):

    if n<=2:

        return 1

    else:

        return f(n-2)+f(n-1)

n=eval(input())

print(f(n))
 
########## End ##########

9.第9关:练习-Python函数之变量的作用域

"""
任务:使用变量作用域相关的关键字修改下方 Begin-End 之间的代码,使 max_value 函数实现求最大值的功能。
"""
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 使用变量作用域相关的关键字修改代码,使max_value函数实现求最大值的功能
def compare(x, y):
    return x if x > y else y

def max_value(list_data):
    # 初始化value为列表的第一个元素
    value = list_data[0]
    # 遍历列表中的每个元素,与当前的value进行比较,并更新value为较大的值
    for x in range(1, len(list_data)):
        value = compare(list_data[x], value)
    return value  # 返回最大值

# 测试用例
test_data = [42323, 457, 4245, 6, 3, 5463, 6, 7, 45, 725, 723, 7, 3, 46, 86, 7, 56, 8, 567, 5, 5745, 26, 34, 63, 412, 35, 4, 76585, 67, 3, 45, 4, 5, 34, 5, 47, 5686]
print(max_value(test_data))  # 输出最大值
 

10.第10关:学习-Python函数之变量的作用域

"""
任务:使用作用域中相关的关键字修改下列 begin-end 中的代码,使函数 average 实现计算平均分的功能。
"""

# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 请使用作用域相关的关键字修改下列代码,实现计算平均分的功能
def average(*args):
    total = sum(args)
    return total / len(args)

result = average(56, 76, 84, 98, 78, 79, 89, 67, 86, 78, 67, 67, 95, 24, 96, 96, 86, 65, 83, 86, 80)
print(result)

11.第11关:练习-Python函数之函数嵌套定义

"""
任务:定义一个函数 statistic() 和一个嵌套函数 count() ,statistic() 函数参数接收一个字符串,
返回字符串中每个字符及该字符出现次数的一个字典,count() 函数用于计算每个字符在字符串中出现的次数。
函数中需要用到的字符串通过 input() 获取。
"""
 
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 定义statistic()函数
def statistic(string):
    string1=list(string)
    def count(char,string1):
        num=0
        for i in string1:
            if i==char:
                num+=1
        return num        
    dection={}
    for i in string1:
        dection[i]=count(i,string1)
    return dection    
# 定义嵌套函数count()
    
 
# 获取字符串,调用函数并输出结果字典
string=input()
print(statistic(string))
 
########## End ##########

12.第12关:学习-Python函数之函数嵌套定义

"""
任务:定义一个 compare 函数和一个嵌套函数 max_value,compare 函数用于比较两个数的大小,max_value 函数用于得到一串整型数据中的最大值。
"""

 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 使用函数的嵌套定义完成两个函数的创建
def max_value(list_data):
    value = list_data[0]
    def compare(x,y):
        return x if x > y else y
    for x in range(1,len(list_data)):
        value = compare(list_data[x],value)
    return value

##########End##########
# 请勿修改下列函数调用的代码
max_number = max_value(eval(input()))     # eval(input())是将输入的字符串转换为列表
print(max_number)

13.第13关:练习-Python函数之函数嵌套调用

"""
任务:编写函数 count() 和 statistic(),statistic() 函数参数接收一个字符串,返回字符串中每个字符及该字符出现次数的一个字典,count() 函数用于计算每个字符在字符串中出现的次数。函数中需要用到的字符串通过 input() 获取。
"""
 
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 定义count()函数
 
# 定义 statistic()函数
 
# 获取字符串,调用函数并输出结果字典
 
# 定义 statistic()函数
def statistic(string):
    result = {}
    str_list  = list(string)
    def count(char,str_list ):
        num = 0
        for x in str_list :
            if x == char:
                num += 1
        return num
    for x in str_list:
        result[x] = count(x,str_list )
    return result
string = input()
print(statistic(string))
 
##########End##########

14.第14关:学习-Python函数之函数嵌套调用

"""
任务:定义一个 compare 函数和一个 max_value 函数,compare 函数用于比较两个数的大小,
max_value 函数用于得到一串整型数据中的最大值。
"""
 
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 第一步:定义compare函数,返回两个数中较大的值
def compare(x,y):
    return x if x > y else y
# 第二部:定义max_value函数,返回数据中的最大值
def max_value(list_data):
    value = list_data[0]
    for x in range(1,len(list_data)):
        value = compare(list_data[x],value)
    return value
##########End##########
# 请勿修改下列函数调用的代码
max_number = max_value(eval(input()))     # eval(input())是将输入的字符串转换为列表
print(max_number)

15.第15关:练习-Python函数之函数返回值

"""
任务:定义一个函数 average,用于计算考试成绩的平均分,每次传入的参数个数不确定,如果参数中出现了小于 0 或者大于 100 的数时,输出"分数数据异常",否则输出平均分。
"""

 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 定义函数 average,计算平均分并按照要求返回结果
def average(*args):
    num = 0 
    for x in args:
        if x<0 or x>100:
            return
        num += x
    return num/len(args)

##########End##########
# 请勿修改下列代码
score = eval(input())     # 将输入的字符串转换为可执行的表达式
if score:
    print("平均分为",score)
else:
    print("分数数据异常")

16.第16关:学习-Python函数之函数返回值

"""
任务:创建一个函数 Number,函数的功能为判断一个整数是否为正数,如果是正数,返回 True,如果是不是正数,
返回 False。被判断的整数都是通过 input 获取。如果是正数,打印"是正数",如果不是正数,打印"不是正数"。
"""

num = int(input())     # 被判断的整数
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 第一步:创建一个函数 Number,函数的功能为判断数字是否是正数,如果是正数,返回 True,如果是负数,返回 False
def Number(num):
    if num > 0:    
        return True
    else:
        return False
# 第二步:判断函数的返回值,按照任务要求打印信息
if Number(num):
    print('是正数')
else:
    print('不是正数')

##########End##########

17.第17关:练习-Python函数之函数参数

"""程序代码
任务:自定义函数 ScoreAverage,该函数的作用是计算学生成绩的平均分,但是学生人数未知;
成绩的输入方式通过给函数传递参数来实现,请编写代码实现计算平均分。
"""
 
#请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
##########Begin##########
# 使用可变参数实现函数的功能,返回学生成绩的平均分
def ScoreAverage(*score):
    result = sum(score)
    scores = result / len(score)
    return scores
##########End##########
# eval()是Python的内置函数,它能将字符串转换为可执行的表达式,并返回表达式的值
score = eval(input())
ScoreAverage(score)
print("平均分为",score)

18.第18关:学习-Python函数之函数参数

"""
任务:自定义函数message,实现学生的信息输出。
"""

'''
定义函数message,参数有位置参数name,默认参数age(默认值为6),可变参数scores,
关键字参数kw
'''
########### Begin ###########
    # 第一步:定义参数
def message(name,age=6,*scores,**kw):
    # 第二步:对可变参数scores进行求和,将结果赋值给result
    result = sum(scores)
    
    # 第三步:通过print打印信息,输出格式可以参考下方的测试集
    print("name: {0} age: {1} result: {2} kw: {3}".format(name,age,result,kw))
########### End ###########

# 以下为测试代码,不是本实训要求掌握的内容,请不要修改
if __name__=='__main__':
    sign = int(input())
    if sign == 0:
        name = input()
        message(name)

    elif sign == 1:
        name = input()
        age = input()
        message(name, age = age)

    elif sign == 2:
        name = input()
        age = input()
        score1 = int(input())
        score2 = int(input())
        message(name,age, score1, score2)

    elif sign ==3:
        name = input()
        age = input()
        score1 = int(input())
        score2 = int(input())
        kw = {'hobby':'basketball'}
        message(name,age,score1, score2, **kw)

    else:
        name = input()
        age = input()
        score1 = int(input())
        score2 = int(input())
        kw = {'height':122, 'weight': 20}
        message(name,age, score1, score2, **kw) 

19.第19关:练习-Python函数之函数定义与调用之计算圆面积

"""
任务:创建函数 circle_area,它有一个参数,表示圆的半径,半径值通过 input 函数获取。该函数用于实现圆的面积计算,并返回面积结果。
"""
from math import pi
 
# 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 第一步:创建函数 circle_area
def circle_area(r):
    area = r*r*pi
    return area
# 第二步:计算圆的面积计算,并返回面积结果

########## End ##########
r = int(input())
area = circle_area(r)
print("圆的面积为",area)

20.学习-Python函数之函数定义与调用之四则运算计算器的简单实现

"""
任务:自定义函数calculate,实现 2 个数之间的加、减、乘、除运算,并返回结果值。
函数calculate接收三个参数,其中第一个参数为符号判断值,第二个参数为第一个运算数,
第三个参数为第二个运算数。符号判断值有4个,分别为1、2、3、4,依次对应加、减、乘、
除运算。
"""
# 定义函数calculate
def calculate(sign,var1,var2):
    # 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
    ########### Begin ###########
    # 第一步:判断sign是否等于1,等于1的话,进行加法运算,并将结果赋值给temp
    if sign == 1:
        temp = var1 + var2

    # 第二步:判断sign是否等于2,等于2的话,进行减法运算,并将结果赋值给temp
    elif sign == 2:
        temp = var1 - var2
    # 第三步:判断sign是否等于3,等于3的话,进行乘法运算,并将结果赋值给temp
    elif sign == 3:
        temp = var1 * var2

    # 判断sign是否等于4,等于4的话,进行除法运算
    
    else:
        # 判断被除数var2是否等于0,等于0的话,返回“被除数var2不能是0!”
        if var2 == 0:
            return '被除数var2不能是0!'
        # 第四步:被除数var2不等于0,进行除法运算,并将结果赋值给temp
        elif var2 != 0:
            temp = var1 / var2
            


    ########### End ###########
    return temp     # 返回结果值


sign = int(input())     # 从后台获取数据sign
var1 = int(input())     # 从后台获取数据var1
var2 = int(input())     # 从后台获取数据var2
result = calculate(sign,var1,var2)     # 得到计算结果
print(result)     # 打印计算结果

作者:ππ抓蛙

物联沃分享整理
物联沃-IOTWORD物联网 » 头歌 python 第五章 函数

发表回复