zoukankan      html  css  js  c++  java
  • 小甲鱼Python第018讲函数:灵活即强大 | 课后测试题及参考答案

    测试题:
          
    0. 请问以下哪个是形参哪个是实参?

    1 def MyFun(x):
    2     return x ** 3
    3 y = 3
    4 print(MyFun(y))

      x是形参;y是实参

     
    1. 函数文档和直接用“#”为函数写注释有什么不同? 

      给函数写文档是为了让别人可以更好的理解你的函数,所以这是一个好习惯:

    1. >>> def MyFirstFunction(name):
    2.         '函数文档在函数定义的最开头部分,用不记名字符串表示'
    3.         print('I love FishC.com!')
    复制代码

      我们看到在函数开头写下的字符串Ta是不会打印出来的,但Ta会作为函数的一部分存储起来,这个我们称之为函数文档字符串,Ta的功能跟注释是一样的。

      函数的文档字符串可以按如下方式访问:

    1. >>> MyFirstFunction.__doc__
    2. '函数文档在函数定义的最开头部分,用不记名字符串表示'
    复制代码


      另外,我们用help()来访问这个函数也可以看到这个文档字符串:

    1. >>> help(MyFirstFunction)
    2. Help on function MyFirstFunction in module __main__:
    3. MyFirstFunction(name)
    4. 函数文档在函数定义的最开头部分,用不记名字符串表示
    复制代码
     

    2. 使用关键字参数,可以有效避免什么问题的出现呢?

      大量代码时,避免由于参数值位置的不确定性造成的参数的传递错误的问题。通过关键字参数可以有效避免此类情况的发生。总而言之,使用关键字参数,可以有效避免因不小心搞乱参数的顺序导致的BUG出现。
         
    3. 使用help(print)查看print()这个BIF有哪些默认参数?分别起到什么作用?

    help(print)
    Help on built-in function print in module builtins:
    
    print(...)
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
        
        Prints the values to a stream, or to sys.stdout by default.
        Optional keyword arguments:
        file:  a file-like object (stream); defaults to the current sys.stdout.
        #文件类型对象,默认是sys.stdout(标准输出流)
        sep:   string inserted between values, default a space.
        #第一个参数如果是多个值(第一个参数是收集参数),各个值之间默认用空格(space)隔开
        end:   string appended after the last value, default a newline.
        #打印最后一个值之后,默认参数一个换行标识符(“
    ”)
        flush: whether to forcibly flush the stream.
        #是否强制刷新流 4. 默认参数和关键字参数表面最大的区别是什么?

       关键字参数是在函数调用的时候,通过参数名制定需要赋值的参数,这样做就不怕因为搞不清参数的顺序而导致函数调用出错。而默认参数是在参数定义的过程中,为形参赋初值,当函数调用的时候,不传递实参,则默认使用形参的初始值代替。                  
                   
    动动手:
         
    0. 编写一个符合以下要求的函数:
       
        a) 计算打印所有参数的和乘以基数(base=3)的结果
        b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。

     1 def test(*params,base =3):
     2     sum = 0
     3     if params[-1] != 5:
     4         for each in params:
     5             sum +=each
     6         sum *=base
     7         print("结果是:",sum)
     8     else:
     9         base = 5
    10         params = params[0:-1]
    11         for each in params:
    12             sum +=each
    13         sum *=base
    14         print("结果是:",sum)
    15 test(1,2,3,5)
    16 test(1,2,3,2,4,5,6,6,7)

    1. 寻找水仙花数
        
    题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。

     1 def  flower():
     2     for each in range(100,1000):
     3         temp = each
     4         sum = 0
     5         while temp:
     6             sum = sum +(temp %10)**3
     7             temp = temp //10
     8         if sum == each:
     9             print(each,end="	")
    10 print("不是水仙花数分别是:",end = "")
    11 flower()

          
    2. 编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为“You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,子字符串为“im”,函数执行后打印“子字母串在目标字符串中共出现 3 次”。
     

     1 def findstr(desStr,subStr):
     2     count = 0
     3     lenght  = len(desStr)
     4     if subStr not in desStr:
     5         print("没有")
     6     else:
     7         for each in range(lenght-1):
     8             if desStr[each] == subStr[0]:
     9                 if desStr[each+1] == subStr[1]:
    10                     count +=1
    11         print("出现次数:%d" % count)
    12 
    13 desStr = input("目标字符串:")
    14 subStr = input("子字符串(两个字符):")
    15 findstr(desStr,subStr)

    程序执行效果:

    1 目标字符串:You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted
    2 子字符串(两个字符):im
    3 出现次数:3

    3. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

      动动手第二题。编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数。

        findstr(,)----俩参数:目标字符串,子字符串

  • 相关阅读:
    iOS 上传appstore 一直卡在正在通过 App Store 进行鉴定(转)
    MySQL连接超时处理
    Windows上安装运行Spark
    NSQ端口关系以及注意事项
    C++ http服务
    C++ OpenSSL 之一:编译和使用
    C++ OpenSSL 之二:生成RSA文件
    C++ OpenSSL 之三:生成CSR文件
    C++ OpenSSL 之四:CER转换为PEM
    C++ OpenSSL 之五:生成P12文件
  • 原文地址:https://www.cnblogs.com/IT-NXXB/p/12917688.html
Copyright © 2011-2022 走看看