Python——函数练习(包括简单递归,参数传递)
python排序函数
list.sort( key=None, reverse=False)
reverse – 排序规则, reverse = True 降序, reverse = False 升序(默认)。
已知三边求三角形面积 海伦公式 :
p=(a+b+c)/2
S=sqrt[p(p-a)(p-b)(p-c)]
输出逆序字符串
s="axjnxk"
print(s[::-1])
忽略点
s='abc'
for i in s:
s[i]...
pass
#i是字符串,不能当索引!
匿名函数 把一个表达式当成函数在用 求阶乘
def df(n):
if n<=1:
n=1
else:
n*df(n-1)
-斐波那契数列(递归实现)
def Fibonacci(n):
if n==0:
return 0
elif n==1:
return 1
else:
return Fibonacci(n-1)+Fibonacci(n-2)
n=int(input("输入整数:"))
print("前%d为斐波那契数列:"%n,end='')
for i in range(1,n+1):
print('%d'%Fibonacci(i),end='')
print()
实现结果:
输入整数:10
前10为斐波那契数列:11235813213455
参数传递
不变参数
在程序中只能使用,不可修改的参数。如:整数、实数、复数、字符串、逻辑值、元组(常量和元组)作用:传递结束后,互不影响
可变参数
在程序中可以修改的参数(列表,字典等)作用:将其u的id传给形参v后。两者建立了联系,同时引用一个对象(指向同一内存地址id)。后续函数内部修改v的值,会同时修改u的值特别:如果在函数内部重新修改整个可变参数v(如列表),则会给v重新分配一个id,不会影响u的值。
def fu(x,y):
x=[6,6,6]
y['r']=6
print('调用内部',x,y)
u=[1,3,4,45,6]
v={'a':1,'b':2,'e':5}
print("before:",u,v)
fu(u,v)
print(u,v)
result:(x全部修改了,y只是加了一个元素))
before: [1, 3, 4, 45, 6] {'a': 1, 'b': 2, 'e': 5}
调用内部 [6, 6, 6] {'a': 1, 'b': 2, 'e': 5, 'r': 6}
[1, 3, 4, 45, 6] {'a': 1, 'b': 2, 'e': 5, 'r': 6}
默认值参数
#没有赋值的放前面,赋值的放后面
def Person_Iofo(like,name="j大",age=18):
print("name:", name)
print("age", age)
print("like", like)
#只有一个参数的话,默认赋值给没有赋值的参数,接下来的顺序按原顺序
Person_Iofo("钱",18,age=10)
不定参数
args表示任何多个无名参数,它是一个 tuple ;* kwargs表示关键字参数,它是一个dict。并且同时使用*args和 ** kwargs时,args参数必须列在 ** kwargs前,像foo(a=1, b=‘2’, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。
此段话转自https://www.cnblogs.com/fengmk2/archive/2008/04/21/1163766.htmllink 看这个就懂了!