您的位置:首页 > 其它

函数

2019-07-22 21:51 78 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Mr_Lee9/article/details/96900321

函数

函数定义:

不带参数和返回值参数:
def 函数名():
代码块
带参数的函数:
def 函数名(参数1,参数2,…)
代码块
带参数和返回值的函数:
def 函数名(参数1,参数2,…)
代码块
return返回值
注意:
①函数名称必须遵循标识符规则,由数字,字母,下划线组成,并且不能以数字开头,不能使用关键字
②函数先定义后调用
③函数不调用是不执行
④函数可以调用多次

不带参数和返回值的函数

def prt():
print("1楼男装")
print("2楼女装")
print("3楼童装")
print("4楼鞋")

带参数的函数:

def qh(a,b,c):# 定义时的参数,称为形参,没有实际的值,需要实参赋值
d=a+b+c
print(d)

①位置函数:

def qh(a,b,c):
d=a+b+c
print(d)
qh(2,3,4)

②关键字函数:关键字函数写在实参中

def qh(a,b):
print("我叫",a)
print("我{}岁".format(b))
qh(b=12,a="lee")

注:关键字参数要写在后边
③默认参数: 注:默认参数要写在非默认参数的后边,默认参数写在形参中

def dengji(name,age,sex="男"):  # sex的默认值为男
print(name,age,sex)
dengji("lee",18)
dengji("chi",20,"女")

④可变参数:

def kb2(*a):  #元组
print(a,type(a))
x=(1,2,3)
kb2(x)  # x代表一个元素,传入a
kb2(*x)  # 将x拆分一一传给a
def kb(**a):  # 字典
print(a,type(a))
kb(name="张端",age=18)
def kb(name,age):
print(name,age)
a={"name":"abc","age":20}  # key的值必须要跟形参一样
kb(**a)  # **拆分字典
def kb(*a,**b):  # **字典必须要放在*元组后边
print(a,b)
kb(1,2,3,4,5,name="lee)

参数位置,定义函数的是参数的顺序:位置参数,元组参数,默认参数,字典参数

def kb(a,*b,c=9,**d):
print("a=",a)
print("b=",b)
print("c=",c)
print("d=",d)
kb(1,2,3,4,5,6,name="zzzz")

带参数和返回值的函数:

def qiuhe(a,b):
c=a+b
return c
x=qiuhe(1,2)
print(x)

可以返回多个返回值,返回的类型是元组

def hs(a,b):
c=a+b
d=a-b
e=a*b
return c,d,e
a,b,c=hs(1,2)
print(a,b,c)

return可以结束此方法,return后边的代码不会执行

def hs(a,b):
return
c=a+b
d=a-b
return c,d
x=hs(1,2)
print(x)

输出结果是None
定义两个函数,输入西红柿的单价和重量,然后返回钱数,如果钱数大于300打8折,否则抹零,返回钱数,最后输出钱数。

def js(price,weight):
money=price*weight
return money
def pd(money):
if money>300:
money=money*0.8
else:
money=int(money)-int(money%10)
return money
price=float(input("请输入单价:"))
weight=float(input("请输入重量:"))
money=pd(js(price,weight))
print("最后的价钱是",money)

递归三大件:递归前进,递归后退,递归边界 当递归边界成立的时候,递归后退,不成立的时候递归前进

定义一个函数,可以得到参数的递乘的结果,比如:3,321

def jiecheng(n):
if n==1:
return 1
else:
return n*jiecheng(n-1)
x=jiecheng(3)
print(x)

兔子数

def tuzi(n):
if n==1 or n==2:
return 1
else:
return tuzi(n-1)+tuzi(n-2)
n=int(input("请输入月份:"))
print(n,"月的兔子数是",tuzi(n))
for i in range(1,n+1):
print("第",i,"个月的兔子数是",tuzi(i))

兔子换为循环

n=int(input("请输入月份:"))
i=1
a,b=1,1
while i<=n:
if i==1 or i==2:
print(1,end="\t")
else:
a,b=b,a+b
print(b,end="\t")
i+=1

输出以下代码的结果

def p(n):
print(n)
if n==1:
return
p(n-1)
print("heihei")
p(4)

输出结果为:

4
3
2
1
heihei
heihei
heihei

在一个列表中查找数字,返回其在列表的索引,最后输出这个数所在的索引,如果没有这个数输“没有找到这个数”

def zbcz(a,start,end,key):
if start>end:
return -1
middle=(start+end)//2
if key>a[middle]:
return zbcz(a,middle+1,end,key)
elif key<a[middle]:
return zbcz(a,start,middle-1,key)
else:
return middle
a=[11,12,13,21,22,23,31,32,33,40]
k=int(input("请输入要查找的数:"))
x=zbcz(a,0,len(a)-1,k)
if x==-1:
print("没有这个数")
else:
print(k,"的位置是",x)

查找数字改为循环

def zbcz(a,start,end,k):
while start<=end:
middle=(start+end)//2
if k>a[middle]:
start=middle+1
elif k<a[middle]:
end=middle-1
else:
return middle
return -1
a=[1,2,3,4,5,6,7,8,9,10]
n=int(input("请输入要查找的数:"))
x=zbcz(a,0,len(a)-1,n)
if x==-1:
print("没有找到这个数")
else:
print(n,"的位置是",x)

查找数字改为循环:

start=0
a=[1,2,3,4,5,6,7,8,9,10]
end=len(a)-1
k=int(input("请输入要查找的数:"))
for i in range(start,end+1):
middle=(start+end)//2
if k>a[middle]:
start=middle+1
elif k<a[middle]:
end=middle-1
else:
print(k,"的位置是",middle)
break
else:
print("没有找到这个数")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: