python--初识函数

# 函数的定义规则
def prt():  # 定义函数   函数不调用时不执行,只有调用时再执行
    print('1234124')
    print(123124233)
    print('asdsadsadd')
floor = int(input('shuru'))
if floor == 1:
    print('你在1楼' '\t' '1lou')
    prt()  # 调用函数
if floor == 3:
    print( '你在3楼' '\n' '3lou')
    prt()
if floor == 2:
    print( '你在2楼' '\d''1lou')
    prt()
# 参数
def qiuhe(a,b,c):  #argument 参数 定义的时候为形式参数(没有实际的值 给他什么值就是什么值)
    d = a + b + c
    print(d)

qiuhe(3,4,28)
qiuhe(2,6,4)  # 实参(有实际的值)调用函数的时候为实参
he(1,2)
def he(a,b):
    print(a + b)
def he(a,b):   #函数必须先定义再调用,可以多次调用
    print(a+b)
he(1,2)
def xx(a, b):  # 位置参数
    c = a+b
    print(c)
xx(1,2)


def dj(name,age):  # 关键字参数  对应实参 调用时赋值
    print('姓名',name,'\n' '年龄',age)
dj(23,'zs')
dj(age=23,name='zs')
def j(a,b,c):
    print(a + b + c)

j(1,2,c = 3)
j(a=1,2,4) # 关键字参数必须在位置参数后面

def dj(name,age,gender='男'):  # 默认参数  对应行参 定义时赋值
    print(name,age,gender)
dj('zs',46)
dj('ls',345,'男')
dj('ww',23,'涉及到南方科技')

def pig(a=3,b):   # non-default argument follows default argument  默认参数必须放在最后面
    print(a,b)
pig(1,2)

def kb(*a):  # *加参数,使参数变成元组,构成可变参数 可以有任意个元素 a 的类型默认输出为元组
    print(a, type(a))
    for i in a:
        print(i, type(i))
kb(1)
kb(1,23,3,4,5,6,7)
kb()

def kb(*a):
    print(a, type(a))
    print(a[0],a[1],a[2])

b = (1,2, 3)
kb(b)  # 整个b作为元组a中的一个元素
kb(*b)  # b 中的元素打散,分别作为a中的元素

a = 'asdfasf'
print(*a)  # *打散序列 (列表、元组、字符串)
a = (1,2,3)
print(*a)
b = [1,2,3]
print(*b)
c = (1,2,3)
d,*e = c
print(d,e)
a  ='asddfgsgds'
print(*a )

def zd(**q):  # 形参前加** 构成字典参数
    print(q,type(q))
zd(name='asd',age = 3)
zd(name='asdkja',age = 123,aaf='asd')
zd()
def zd(name,age):
    print(name,age)

a = {'name':'zhangsan','age': 213}

zd(a)
zd(**a)  # 打散成字典
zd(*a)  # 打散 取key
def  zd(name,age):
    print(name,age)

a = {'a':1,'b':2}  #  zd() got an unexpected keyword argument 'a' key参数必须与行参一致
zd(**a)

def ab(*a,**b):  # 一星参数在前,二**参数在后
    print(a,b)

b = {'s':2,'d':4}
a = (1,2,3,4)
ab(*a,**b)

def a(a,*b,c=9,**d):  # 参数的位置顺序, 位置-元组-默认-字典
    print(a)
    print(b)
    print(c)
    print(d)

a(1,2,34,5,67,5,6,7,7,)
a(1,2,3,name='zhangsan')

def a(a,b=2,*c,**d):  # 不会报错 不建议使用 用以造成混乱
    print(a)
    print(b)
    print(c)
    print(d)

a(1,3,2,4)

# 函数调用
def dog():
    print('jjjjdjjfgjdkfjgkdfgjfdkg')
print(id(dog))
print(dog)
print(dog())
a = dog  # 调用函数的本质是调用内纯地址
a()
print(id(a))


def xx():
    print(i +1)
i = 3
a = b = xx
a()
i = 7
b()
def hs1(x,y):
    print(x*y)
def hs2(a,b,c):
    hs1(a,b)  # 函数间可以互相调用
    print(c)
hs2(2,3,4)

def pd(a):
    if a % 2 == 0:
        print(a, '是偶数')
    else:
        print(a, '是奇数')
a = int(input('输入'))
pd(a)

# 递归
递归前进
递归后退
递归边界
当递归边界成立时,递归后退,递归边界不成立是递归前进

def jiecheng(n):
    if n == 1:  #递归边界
        return 1
    else:
        return n*jiecheng(n-1)

print( jiecheng( 10 ) )

def tuzi(n):
    if n == 1 or n == 2:
        return 1
    else:
        return tuzi(n-1)+tuzi(n-2)

print(tuzi(12))
n = int(input('asd'))
for i in range(1,n+1):
   print('第',i,'个月的兔子数是',tuzi(i))

def pn(n):
    print(n)
    if n == 1:
        return
    pn(n-1)
    print('heihei')  # 递归引用后面的语句在递归结束 返回值以后运行
pn(5)

def zbcz(a,start,end,k):
    if start > end:
        return '不在范围内'
    mid=(start + end)//2
    if k >a[mid]:
        return zbcz(a,mid+1,end,k)
    elif k < a[mid]:
        return zbcz(a,start,mid-1,k)
    else:
        return mid


a = [1,2,3,4,5,6,7,8]
k = int(input('输入一个数'))
print(zbcz(a,0,7,k))
def zbcz(a,start,end,k):
    while start <= end:
        mid = (start + end)//2
        if a[mid] > k:
            end = mid -1
        elif a[mid] < k:
            start = mid +1
        elif a[mid] == k:
            return mid
    return -1
k = int(input('输入要找的数'))
a = [1,2,3,4,5]
b = [0]
c = zbcz(a,0,4,k)
if c == -1:
    print('wu')
else:
    print('位置是',c)
# 用循环处理兔子数
n = int(input())
a = [1,1]
while i <= n:
    if i > 1:
        a.append(a[i -1]+a[i -2])
    print('第',i,'个月的兔子是',a[i-1])
    i += 1
i = 1
j0 = 0
j1 = 1
j2 = 0
n = int(input('输入月份'))
while i <= n:
    if i == 1:
       j0 = 0
    else:
        # j2 = j1
        # j1 = j1 + j0
        # j0 = j2
        j1,j0=j1+j0,j1
    print('第',i,'个月的兔子是',j1)
    i += 1

# return 返回值
def qiuhe(a,b):  # return 返回值给调用的地方
     c = a + b
    return c  # 不加返回结果的 默认返回空值(None)
x = qiuhe(1,2)  # 把c赋给x
print(x)

y = qiuhe(2,3)  # 把 5赋给y  返回值得对象是替换 y的赋值 即替换 qiuhe(2,3)为5

print(y)

a = [1,2,3]
x = a.remove(3)  # remove函数无返回值
print(x)  # None


def zz(a,b):
    c = a+b
    d = a-b
    e = a*b
    return c,d,e  #return 可以结束此方法
x = zz(2,3)
a,b,c =zz(2,4)
print(a,b,c)
print(x)

def hanshu(a,b):
    # return  # 后面的语句不执行
    c = a + b
    d = a - b
    return c,d
print(*hanshu(1,2))

def hs():
    i = 0
    while i < 5:
        if i == 2:
            return  # 结束
        print(i)
        i += 1
hs()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值