python—函数实例,,1.函数的定义练习:
python—函数实例,,1.函数的定义练习:
1.函数的定义练习:判断输入的是不是一个数字
#!/usr/bin/envpythondefisNum():sth=raw_input("Pleaseinputsomething:")try:iftype(int(sth))==type(1):print"%sisanumber"%sthexceptException:print"%sisnotanumber"%sthisNum()
2.函数的参数
练习:判断输入的是不是一个数字
#!/usr/bin/envpythonimportsysdefisNum(s):foriins:ifiin"1234567890":passelse:print"%sisnotanumber"%sbreakelse:print"%sisanumber"%sisNum(sys.argv[1])
3.函数的默认参数
listdir()函数
练习:判断输入的是不是一个数字
#!/usr/bin/envpythonimportosdefisNum(s):foriins:ifiin"1234567890":passelse:breakelse:printsforiin(os.listdir("/proc")):isNum(i)
注:默认参数必须写在后面
In[3]:deffun(x=1,y):...:printx+yFile"<ipython-input-3-3b7bae6400b0>",line1deffun(x=1,y):SyntaxError:non-defaultargumentfollowsdefaultargumentIn[4]:deffun(x,y=1):...:printx+y...:In[5]:fun(2)
4.1函数变量
练习:函数内部(局部)不能进行全局变量赋值等操作;如果申明成全局变量,才可以
#!/usr/bin/envpythonx=1deffun():globalxx+=1printxfun()printx
结果:
2
2
练习2:把函数内部变量,申明成全局变量,外部也可以通过函数调用
#!/usr/bin/envpythonx=1deffun():globalxx+=1globalyy=3printxprintyfun()printxprinty
结果:
2
3
2
3
练习3:locas() :统计变量,返回字典
#!/usr/bin/envpythonx=1deffun():x=1y=1printlocals()fun()printlocals()
结果:
{'y':1,'x':1}{'__builtins__':<module'__builtin__'(built-in)>,'__file__':'18.py','__package__':None,'x':1,'fun':<functionfunat0x7f53bc8938c0>,'__name__':'__main__','__doc__':None}
5.函数返回值
练习1:默认返回none
#!/usr/bin/envpythondeffun():print"hello,world"printfun()
结果:
hello,world
None
练习2:自定义return返回值,return之后的语句将不再执行
#!/usr/bin/envpythondeffun():print"hello,world"return"heihei"print"haha"printfun()
结果:
hello,world
heihei
练习3:判断输入是否为数字
函数里很少使用print,使用return,更加简化
#!/usr/bin/envpythonimportosdefisNum(s):foriins:ifinotin"1234567890":returnFalsereturnTrueforiin(os.listdir("/proc")):ifisNum(i):printi
练习4:isdigit()判断输入是否为数字
isdigit():判断字符串是否为纯数字(脚本更更简化)
#!/usr/bin/envpythonimportosdefisNum(s):ifs.isdigit():returnTruereturnFalseforiin(os.listdir("/proc")):ifisNum(i):printi
6.多类型传值(元组或字典)和冗余参数
一个元组只表示一个参数;元组加一个*,则可以把元组中的元素作为参数,传到脚本中;带参数的元组只能放在后面,否则有语法错误
练习1:
In[2]:deffun(x,y,z):...:printx+y+z...:In[3]:a=[1,2]In[4]:fun(3,*a)6
报错:
In [5]: fun(*a,3)
File "<ipython-input-5-8a9ea4381ff5>", line 1
fun(*a,3)
SyntaxError: only named arguments may follow *expression
练习2:
字典传参(形参名和实参名一致,位置无所谓)
In[8]:deffun(x,y,z):...:printx+y+z...:In[9]:a={"x":1,"y":2,"z":3}In[10]:fun(**a)6
或者:
In [11]: fun(x=1,y=2,z=3)
6
练习3:
In[1]:deffun(x,*argv,**kwargv):...:printx...:printargv...:printkwargv...:In[2]:fun(1)1(){}
练习4:
以等号或字典形式
In[6]:deffun(x,*argv,**kwargv):...:printx...:printargv...:printkwargv...:In[7]:t=[1,2]In[8]:fun(1,2,"a",*t,y=1,**{"b":1,"c":2})1(2,'a',1,2){'y':1,'c':2,'b':1}
7.函数的递归调用(函数调用本身)
条件:
1)必须有最后的默认结果,即if n == 0
2)递归参数必须向默认结果收敛,即factorial(n-1)
练习:阶乘,n乘以f(n-1)
#!/usr/bin/envpythondeffactorial(n):ifn==0:return1else:returnn*factorial(n-1)printfactorial(5)
结果:
120
练习2:累加,n加f(n-1)
#!/usr/bin/envpythondeffactorial(n):ifn==0:return0else:returnn+factorial(n-1)printfactorial(5)
结果:
15
python—函数实例
评论关闭