• python之道10


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

      答案

      def func(*args):
      	count = 0
      	for i in args:
      		count += i
      	return count
      print(func(1,2,3,4))
      
      # 输出结果
      10
      
    2. 看代码写结果

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

      答案

      True
      Flase
      # 知识点,ruturn后面接多个值返回的是一个元组
      
    3. 看代码写结果

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

      答案

      a.
      def func(*args,**kwargs):
          return args
      print(func(1,2,3,4))
      # 结果
      (1, 2, 3, 4)
      
      b.
      def func(*args,**kwargs):
          return args
      ret = func([1,2,3,4],[11,22,33])
      print(ret)
      # 结果
      ([1, 2, 3, 4], [11, 22, 33])
      
      c.
      def func(*args,**kwargs):
          return args,kwargs
      ret = func([11,22],33,k1='v1',k2='v2')
      print(ret)
      # 结果
      (([11, 22], 33), {'k1': 'v1', 'k2': 'v2'})
      
      d.
      args:('武沛齐','金鑫','女神')
      kwargs:{} # **kwargs什么都没有接收到
      
      e.
      args: ({'女神', '金鑫', '武沛齐'}, [11, 22, 33])
      kwargs: {}
      
      f.
      args:('武沛齐','金鑫','女神',[11,22,33])
      kwargs:{'k1':'栈'}
      
    4. 看代码写结果

      def func(name,age=19,email='123@qq.com'):
          pass
      
      # a. 执行 func('alex') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
      # b. 执行 func('alex',20) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
      # c. 执行 func('alex',20,30) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
      # d. 执行 func('alex',email='x@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
      # e. 执行 func('alex',email='x@qq.com',age=99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
      # f. 执行 func(name='alex',99) ,判断是否可执行,如可以请问 name、age、email 的值分别是?
      # g. 执行 func(name='alex',99,'111@qq.com') ,判断是否可执行,如可以请问 name、age、email 的值分别是?
      

      答案

      a.
      可以执行
      alex 19 123@qq.com
      
      b.
      可以执行
      alex 20 123@qq.com
      
      c.
      可以执行
      alex 20 30
      
      d.
      可以执行
      alex 19 x@qq.com
      
      e.
      可以执行
      alex 99 x@qq.com
      
      f.
      不能执行
      关键字参数要在位置参数的后边
      
      g.
      不能执行
      关键字参数要在位置参数的后边
      
      
    5. 看代码写结果

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

      答案

      (['武沛齐','李杰','alex'])
      
      
    6. 看代码写结果 #此题有坑

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

      答案

      
      
    7. 看代码写结果

      def func(v1):
          return v1* 2
      
      def bar(arg):
          msg = "%s 是什么玩意?" %(arg,)
          print(msg) 
      		# 没有return返回为None
      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 data
      
      new_name = func
      val = new_name()
      print(val)
      
      # 注意:函数类似于变量,func代指一块代码的内存地址。
      
      

      答案

      4
      
      
    11. 看代码写结果【可选】

      def func():
          data = 2*2
          return data
      
      data_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 func(*args)
      	count = 0
      	for i in args:
      		count += i
      	return count
      func(1,2,3,4,5,6)
      
      # 结果
      21
      
      
    14. 读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?

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

    答案

    a:20
    b:10
    c:None
    
    
    1. 读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
    a=10
    b=20
    def test5(a,b):
    	a=3
    	b=5
    	print(a,b)
    c = test5(b,a)
    print(c)
    
    

    答案

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

    答案

    def func(*args,**kwargs)
    	return args
    ret = func(*[1,2,3,4],*['a','b','c'],**{'name':'alex','age':98})
    print(ret)
    
    
    
    1. 写函数,接收两个数字参数,将较小的数字返回.

    答案

    def func(x,y): 
    	return x if x > y else y
    print(func(1,2))
    # 结果 
    2
    
    
    1. 写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.

    例如 传入的可迭代对象为[1,'老男孩','武sir']返回的结果为’1_老男孩_武sir’

    答案

    
    

    19.有如下函数:

    def wrapper():
    
    	def inner():
    
    		print(666)
    
     wrapper()
    
    
    

    你可以任意添加代码,执行inner函数.

    答案

    def wrapper():
    
    	def inner():
    
    		print(666)
    	inner()
    wrapper(inner)
    
    
    1. 相关面试题:

    写出下列代码结果:

    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)
    
    # foo(1,2,sex='男',name='alex',hobby='old_woman')
    
    # foo(1,2,3,4,name='alex',sex='男')
    
    # foo(1,2,c=18)
    
    # foo(2, 3, [1, 2, 3],c=13,hobby='喝茶')
    
    # foo(*[1, 2, 3, 4],**{'name':'太白','c':12,'sex':'女'})
    
    

    答案

    1 2
    6
    (3,4)
    None
    {}
    
    报错
    
    报错
    
    
    
  • 相关阅读:
    Java自学
    java自学
    每日总结
    每日总结
    每日总结
    每周总结
    每日总结
    每日总结
    每日总结
    每日总结
  • 原文地址:https://www.cnblogs.com/zanao/p/11061752.html
Copyright © 2020-2023  润新知