0.请问以下哪个是形参哪个是实参?
def MyFun(x):
return x**3
y = 3
print(MyFun(y))
x 是形参,y 是实参。函数定义过程中参数是形参,调用函数过程中的参数是实参。
1.函数文档和直接用“#”为函数写注释有什么不同?
函数文档是为了让其他人能更好的理解使用你的函数。
>>> def MyFunction():
"这是一个函数文档,放在函数定义的最开头部分\n第二行"
print('I Love You!')
>>> help(MyFunction)
Help on function MyFunction in module __main__:
MyFunction()
这是一个函数文档,放在函数定义的最开头部分
第二行
>>> MyFunction.__doc__
'这是一个函数文档,放在函数定义的最开头部分\n第二行'
2.使用关键字参数,可以有效避免什么问题的出现呢?
关键字参数是在调用函数时,带上函数参数的名字去指定调用哪个参数,从而不用按照参数的顺序调用参数。
不使用关键字参数可能出现以下现象:
>>> def MyFunction1(he,she):
print('蒙多说%s是个大爷们'%he)
print('宝石说%s是个小娘们'%she)
>>> MyFunction1('拉克丝','德莱厄斯')
蒙多说拉克丝是个大爷们
宝石说德莱厄斯是个小娘们
这样德莱厄斯的斧子可不答应喔,使用关键字参数即可,如下:
>>> MyFunction1(she = '拉克丝',he ='德莱厄斯')
蒙多说德莱厄斯是个大爷们
宝石说拉克丝是个小娘们
3.使用help(print)查看print()这个BIF有哪些默认参数?分别起到什么作用?
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.stout(标准输出流)
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,基数不参与求和运算。
>>> def MyFunction2(*param, base = 3):
'计算第一个参数的和,然后乘以第二参数的结果'
result = 0
for each in param:
result += each
result *= base
print('计算结果是:',result)
>>> MyFunction2(2,3,4,5,6)
计算结果是: 60
1.寻找水仙花数
题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3 + 5^3 + 3^3,因此153是一个水仙花数。编写一个程序,找出所有水仙花数。
>>> def FindFlower():
'计算所有的水仙花数'
print('所有水仙花数:')
for each in range(100,1000):
baiwei = each//100
shiwei = (each - 100*baiwei)//10
gewei = each%10
count = baiwei**3 + shiwei**3 + gewei**3
if count == each:
print(each, end = '\t')
>>> FindFlower()
所有水仙花数:
153 370 371 407
2.编写一个函数findstr(),该函数统计一个长度为2的字符串在另一个字符串出现的次数。例如:假定输入的字符串为“You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,字符串为“im”,函数执行后打印“子字符串在目标字符串中共出现3次”。
>>> def findstr(str1,str2):
'统计第一个字符串参数(长度为2)在第二个字符串参数出现次数'
length = len(str2)
count = 0
if str1 not in str2:
print('在目标字符串中未找到子字符串!')
else:
for each in range(length - 1):
if str2[each] == str1[0]:
if str2[each + 1] == str1[1]:
count += 1
print('子字符串在目标字符串中共出现%d次' %count)
>>> findstr('im','You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.')
子字符串在目标字符串中共出现3次