测试题:
0. 请问以下哪个是形参哪个是实参?
1 def MyFun(x): 2 return x ** 3 3 y = 3 4 print(MyFun(y))
x是形参;y是实参
1. 函数文档和直接用“#”为函数写注释有什么不同?
给函数写文档是为了让别人可以更好的理解你的函数,所以这是一个好习惯:
我们看到在函数开头写下的字符串Ta是不会打印出来的,但Ta会作为函数的一部分存储起来,这个我们称之为函数文档字符串,Ta的功能跟注释是一样的。
函数的文档字符串可以按如下方式访问:
另外,我们用help()来访问这个函数也可以看到这个文档字符串:
2. 使用关键字参数,可以有效避免什么问题的出现呢?
大量代码时,避免由于参数值位置的不确定性造成的参数的传递错误的问题。通过关键字参数可以有效避免此类情况的发生。总而言之,使用关键字参数,可以有效避免因不小心搞乱参数的顺序导致的BUG出现。
3. 使用help(print)查看print()这个BIF有哪些默认参数?分别起到什么作用?
help(print) Help on built-in function print in module builtins: print(...) print(value, ..., sep=‘ ‘, end=‘\n‘, 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. #打印最后一个值之后,默认参数一个换行标识符(“\n”) 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="\t") 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(,)----俩参数:目标字符串,子字符串
小甲鱼Python第018讲函数:灵活即强大 | 课后测试题及参考答案
原文:https://www.cnblogs.com/IT-NXXB/p/12917688.html