第十八讲:函数,灵活即强大
一、知识点:
0.形参和实参:
def function(name):形参
function('abc'):实参
1.函数文档:
>>> def myfun(name):
'测试函数文档'#函数文档
print(name)
利用function.__doc__可以查看函数文档(双下划线)或者help(函数)也可以查看
2.关键字参数:
>>> def myfun(name,sex):
print(name+'->'+sex)
>>> myfun(sex='male',name='bizka')
bizka->male
3.默认参数:
参数定义过程中为形参赋初值
>>> def myfun(name='bizka',sex='male'):
print(name+'->'+sex)
>>> myfun()
bizka->male
>>> myfun('jessic','female')
jessic->female
4.收集参数:
>>> def para(*object):
print('参数的长度是:',len(object))
print('第二个参数是:',object[1])
>>> para(1,'a',3,4,5,6)
参数的长度是: 6
第二个参数是: a
----------------------------------------------------我是一条分割线------------------------------------------------------
二、课后作业:
0.请问以下哪个是形参?哪个是实参?
>>> def MyFun(x):
return x**3
y=3
print(MyFun(y))
x是形参,y是实参。
1.函数文档和直接用‘#’为函数写注释有什么不同?
给函数写文档是为了别人更好的理解你的函数。
2.使用关键字参数,可以有效的避免什么问题的出现?
关键字参数,是指函数在调用的时候,带上参数的名字去指定具体调用的是哪个参数,从而可以不用按照参数的顺序调用函数。
关键字参数就是在函数调用的时候,通过参数名制定需要复制的参数,这样就不怕因为搞不清参数的顺序而出错。
默认参数是在参数定义的过程中,为形参附初始值,当调用函数时,不传递实参,则默认使用形参的初始值代替。
----------------------------------------------------我是一条分割线------------------------------------------------------
三、动动手:
0.编写一个符合以下要求的函数:
a.计算打印所有参数的和乘以基数(base=3)的结果
b.如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。
>>> def myfun(*num):
base = 3
if num[-1] == 5:
print(sum(num[:-1])*5)
else:
print(sum(num)*base
1.寻找水仙花数:
题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。
>>> def hua():
for each in range(100,1000):
a = each%10
b = each%100//10
c = each//100
if each == a**3+b**3+c**3:
print(each)
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():
print('请输入目标字符串:',end='')
temp = input()
print('请输入子字符串(两个字符):',end='')
temp1 = input()
count = 0
i = 0
for i in range(len(temp)):
if temp[i] == temp1[0] and temp [i+1] == temp1[1]:
count += 1
print('子字符串在目标字符串中总共出现%d次'%count)
----------------------------------------------------我是一条分割线------------------------------------------------------