python习题,关于函数的练习02

python习题,关于函数的练习02,第1张

概述习题1写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回.defmy_sum(*args):s=0foriinargs:s+=ireturnsprint(my_sum(1,3,5,7,4,5))#25习题2看代码写结果deffunc():return1,2,3val=func()print(ty 习题1

写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回.

def my_sum(*args):    s = 0    for i in args:        s += i    return sprint(my_sum(1, 3, 5, 7, 4, 5))  # 25
习题2

看代码写结果

def func():    return 1, 2, 3val = func()print(type(val) == tuple)print(type(val) == List)

结果:
True
False

习题3

看代码写结果

def func(*args, **kwargs):    pass# a.请将执行函数,并实现让args的值为(1, 2, 3, 4)func(1, 2, 3, 4)# b.请将执行函数,并实现让args的值为([1, 2, 3, 4],[11, 22, 33])func([1, 2, 3, 4], [11, 22, 33])# c.请将执行函数,并实现让args的值为([11, 22], 33)且kwargs的值为{'k1': 'v1', 'k2': 'v2'}func([11, 22], 33, k1='v1', k2='v2')# d.如执行func(*{'武沛齐', '金鑫', '女神'}),请问args和kwargs的值分别为?# 答:args的值为:'武沛齐', '金鑫', '女神' kwargs的值为:{}# e.如执行func({'武沛齐', '金鑫', '女神'},[11, 22, 33]),请问args和kwargs的值分别为?# 答:args的值为:{'武沛齐', '金鑫', '女神'},[11, 22, 33] kwargs的值为:{}# f.如执行func('武沛齐', '金鑫', '女神',[11, 22, 33], {'k1': '栈'}),请问args和kwargs的值分别为?# 答:args的值为:'武沛齐', '金鑫', '女神',[11, 22, 33], {'k1': '栈'} kwargs的值为:{}
习题4

看代码写结果

def func(name, age=19, email='[email protected]'):    pass# a.执行func('alex'),判断是否可执行,如可以请问name、age、email的值分别是?# 答:name:'alex' age:19 email:'[email protected]'# b.执行func('alex', 20),判断是否可执行,如可以请问name、age、email的值分别是?# 答:name:'alex' age:20 email:'[email protected]'# c.执行func('alex', 20, 30),判断是否可执行,如可以请问name、age、email的值分别是?# 答:name:'alex' age:20 email:30# d.执行func('alex',email='[email protected]'),判断是否可执行,如可以请问name、age、email的值分别是?# 答:name:'alex' age:19 email:'[email protected]'# e.执行func('alex',email='[email protected]', age=99),判断是否可执行,如可以请问name、age、email的值分别是?# 答:name:'alex' age:99 email:'[email protected]'# f.执行func(name='alex', 99),判断是否可执行,如可以请问name、age、email的值分别是?# 答:不能执行,因为关键字参数不能再位置参数之前!# g.执行func(name='alex', 99, [email protected]),判断是否可执行,如可以请问name、age、email的值分别是?# 答:不能执行,因为关键字参数不能再位置参数之前!
习题5

看代码写结果

def fun(users, name):    users.append(name)    return usersresult = fun(['武沛齐', '李杰'], 'alex')print(result)

结果:
['武沛齐', '李杰', 'alex']

习题6

看代码写结果

def func(v1):    return v1 * 2def bar(arg):    return '%s 是什么玩意?' % argval = func('你')data = bar(val)print(data)

结果:
你你 是什么玩意?

习题7

看代码写结果

def func(v1):    return v1 * 2def bar(arg):    msg = '%s 是什么玩意?' % arg    print(msg)val = func('你')data = bar(val)print(data)

结果:
你你 是什么玩意?
None

习题8

看代码写结果

v1 = '武沛齐'def func():    print(v1)func()v1 = '老男人'func()

结果:
'武沛齐'
'老男人'

习题9

看代码写结果

v1 = '武沛齐'def func():    v1 = '景女神'    def inner():        print(v1)    v1 = '肖大侠'    inner()func()v1 = '老男人'func()

结果:
肖大侠
肖大侠

习题10

看代码写结果

def func():    data = 2 * 2    return datanew_name = funcval = new_name()print(val)# 注意:函数类似于变量,func代指一块代码的内存地址

结果:
4

习题11

看代码写结果

def func():    data = 2 * 2    return datadata_List = [func, func, func]for item in data_List:    v = item()    print(v)# 注意:函数类似于变量,func代指一块代码的内存地址

结果:
4
4
4

习题12

看代码写结果(函数可以做参数进行传递)

def func(arg):    arg()def show():    print('show函数')func(show)

结果:
'show函数'

习题13

写函数,接收n个数字,求这些参数数字的和.(动态传参)

def my_sum(*args):    s = 0    for i in args:        s += i    return snums = input('选择要相加的数字以空格隔开:')result = nums.split()for index in range(len(result)):    result[index] = int(result[index])print(my_sum(*result))  # 16
习题14

读代码,回答:代码中打印出来的值a,b,c分别是什么?为什么

a = 10b = 20def test5(a, b):    print(a, b)c = test5(b, a)print(c)

结果:
a: 20 b: 10 c: None

在执行c = test5(b, a)的时候,传入的参数a: 10, b: 20执行是c = test5(20, 10),虽然形参def test(a, b)写着a在前面,但是这不影响实参传值,形参可以写任意名字跟接收实参,对值不影响,所以打印出来是a: 20, b: 10.
在看看c的值,c值接收的是函数的返回值,在没有设置返回值的时候,函数默认是返回None所以值是c: None

习题15

读代码,回答:代码中打印出来的值a、b、c分别是什么?为什么?

a = 10b = 20def test5(a, b):    a = 3    b = 5    print(a, b)c = test5(b, a)print(c)

结果:
a: 3, b: 5, c: None

首先执行函数c = test(20,10)的时候,在执行函数test5(a, b)的时候这时候a: 20, b: 10;但是接着就执行a = 3, b = 5,这会导致a,b的原来指向断开,a指向了3,b指向了5.所以a: 3, b: 5
其次在函数执行完毕的时候没有设置返回值,那么就是默认返回值即是None.所以c: None

习题16

传入函数中多个列表和字典,如何将每个列表的每个元素依次添加到函数的动态参数args里面?如何将每个字典的所有键值对添加到kwargs里面?

依照如下例子所示即可:

def fun(*args, **kwargs):    print(args)    print(kwargs)fun(*[3, 5, 7, 9], **{'name': '小明', 'age': 18, 'gender': 'male'})#运行结果# (3, 5, 7, 9)# {'name': '小明', 'age': 18, 'gender': 'male'}
习题17

写函数,接收两个数字参数,将较小的数字返回.

def my_min(*args):    result = args[0]    for i in args:        if i < result:            result = i    return resultnums = input('输入2个数字以空格隔开:')result = nums.split()for index in range(len(result)):    result[index] = int(result[index])print(my_min(*result))# 运行结果:# 输入2个数字以空格隔开:1 3# 1# 输入2个数字以空格隔开:4 2 8 4 2 3 4# 2
习题18

写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以'_'相连接,形成新的字符串并返回.

from collections.abc import IterableList1 = []def my_serIEs(temp: Iterable):    try:        if isinstance(temp, Iterable):            for i in temp:                if isinstance(i, (int, float, bool)):                    List1.append(str(i))                elif isinstance(i, str):                    List1.append(i)                else:                    my_serIEs(i)    except Exception as e:        print(e)    finally:        return '_'.join(List1)print(my_serIEs([3, ['Mi', {'Guo': '果'}, {3.33, 'bye'}], 4, 'hello', {'name': '小丽', 1: 2}, (3, 6, False, 4.4)]))# 3_Mi_Guo_bye_3.33_4_hello_name_1_3_6_False_4.4
习题19

有如下函数

添加任意代码使inner函数可被执行

def wrapper():    def inner():        print(666)wrapper()
def wrapper():    def inner():        print(666)    inner()wrapper()
习题20

相关面试题:

写出下列代码结果:

def foo(a, b, *args, c, sex=None, **kwargs):    print(a, b)    print(c)    print(sex)    print(args)    print(kwargs)# foo(1, 2, 3, 4, c=6)# a: 1# b: 2# c: 6# sex:None# args:(3, 4)# kwargs:{}# foo(1, 2, sex='男', name='alex', hobby='old_loman')# c没有参数导致运行出错# foo(1, 2, 3, 4, name='alex', sex='男')# c没有参数导致运行出错# foo(1, 2, c=18)# a: 1# b: 2# c: 18# sex:None# args:()# kwargs:{}# foo(2, 3, [1, 2, 3], c=13, hobby='喝茶')# a: 2# b: 3# c: 13# sex:None# args:([1, 2, 3],)# kwargs:{'hobby': '喝茶'}# foo(*[1, 2, 3, 4], **{'name': '太白', 'c': 12, 'sex': '女'})# foo(1, 2, 3, 4, name='太白', c=12, sex='女')# a: 1# b: 2# c:12# sex:'女'# args:(3, 4)# kwargs:{'name': '太白'}
总结

以上是内存溢出为你收集整理的python习题,关于函数的练习02全部内容,希望文章能够帮你解决python习题,关于函数的练习02所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1187831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存