Python——函数练习(包括简单递归)

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()

实现结果:

输入整数:1010为斐波那契数列: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
看这个就懂了!

你可能感兴趣的:(Python)