day09

1. 什么是函数

函数: 对代码块和功能的封装和定义

    while 1:
        print("首先, 打开手机")
        print("打开陌陌")
        print("找一个看着还不错的某一某")
        print("出来约一约.开开心心")
        print("各回各家,各找各妈")
    # 需要把上面这个功能进行定义或者封装. 在需要的时候.随时拿过来执行, 封装的这个东西就是函数
    
    # 定义一个功能叫yue
    def yue():
        # 函数体,代码块
        print("首先, 打开手机")
        print("打开陌陌")
        print("找一个看着还不错的某一某")
        print("出来约一约.开开心心")
        print("各回各家,各找各妈")

     # 函数的调用, 函数名()
    yue()   # 执行函数  # 第一次调用
    print("正常上班")
    yue()   # 第二次调用

2. 函数的返回值

# 执⾏完函数之后. 我们可以使⽤return来返回结果. 
   
    函数中return的使⽤:
        (1) 函数中遇到return, 此函数结束, 不再继续执⾏.
        def yue():
            print("约你")
            print("约我")
            print("约他")
            return
            print("约谁呀") # 这句话不会被执⾏
        yue()

        (2) retrun 返回值  
        # 当函数结束的时候. 给调用方一个结果
        def yue():
            print("约你")
            print("约我")
            print("约他")
            return "m美女一枚"
        girl = yue()
        print(girl)

        # 函数的返回值可以有多个结果,但是在接收的位置接收到的是tuple(元组)类型的数据
        def yue():
            print("打开陌陌")
            print("大阳哥出马")
            return "大妈", "萝莉", "模特"
            print("我还要约")
        girl = yue()
        print(type(girl)) # tuple

        a, b, c = yue() # 多个返回值在接收的位置接收到的是tuple类型的数据
        print(a)
        print(b)
        print(c)
总结⼀下: 
    1. 遇到return. 此函数结束, 函数后⾯的东⻄将不会再执⾏
    2. return 返回值   
    
    关于返回值:
        1. 什么都不写. 不写return. 返回None
        2. 写了return, 返回Nnone
        3. return 值. 有一个返回值.
        4. return 值1, 值2, 值3....多个返回值. 接收的是元组(不可变),调⽤者可以直接解构成多个变量

3. 函数的参数

# 参数: 在函数执行的时候给函数传递的信息
# 形参: 在函数声明的位置. 声明出来变量
# 实参: 在函数调用的时候. 实际你给函数传递的值
# 传参: 把实参交给形参的过程
# 函数的参数个数是没有要求的 但是,在运行的时候. 形参和实参要匹配. 按照位置把实参赋值给形参
def yue(fangshi, age):   # 形参
    print("打开手机")
    print("打开%s" % fangshi)
    print("找一个漂亮的妹子")
    print("年龄最好是%s" % age)
    print("出来约一约")

# 在函数调用的地方给的具体的值: 实参
yue("微信")
yue("探探",38)
yue("陌陌",26)
参数:
形参:
1. 位置参数
2. 默认值参数
3. 动态传参
实参:
1. 位置参数,记住位置
2. 关键字参数, 记住名字
3. 混合参数, 顺序: 先位置后关键字

#
实参 def chi(good_food, no_good_food, drink, ice_cream): # 形参的位置参数 print(good_food, no_good_food, drink, ice_cream) # 位置参数, 当函数的参数很多的时候, 必须要记住每一个位置是什么 chi("大白梨","法国大蜗牛","卫龙辣条","哈根达斯") # 实参的位置参数 # 关键字参数, 按照形参的名字给形参传值 chi(drink="神仙水",ice_cream="老冰棍",good_food="盖浇饭",no_good_food="锅包肉") # 实参的关键字参数 # 混合参数, 既用位置参数, 也用关键字参数. 位置参数必须在关键字参数前面 chi("盖浇饭","汉堡",ice_cream="巧乐兹",drink="营养快线") # 混合参数,顺序:先位置后关键字 # 形参 def regist(id, name,): # id name位置参数 print("录入学生信息:id是%s, 名字是%s." % (id, name,)) regist(1, "大阳哥") regist(2, "徐卫星") def func(n = ""): # n="男" 默认值参数 print("录入性别:%s" % n) func() def regist(id, name, sex=""):# 混合参数,默认值参数必须在参数列表的最后 print("录入学生信息:id是%s, 名字是%s, 性别是:%s" % (id, name, sex)) regist(1, "大阳哥") regist(2, "徐卫星") regist(3, "毛尖妹妹", "")
参数的分类:
    站在实参的角度:
            1. 位置参数, 当函数的参数很多的时候, 必须要记住每一个位置是什么
            2. 关键字参数, 按照形参的名字给形参传值
            3. 混合参数, 既用位置参数, 也用关键字参数. 位置参数必须在关键字参数前面
    站在形参的角度:
            1. 位置参数
            2. 默认值参数
            3. 默认值参数和位置参数混合使用. 顺序: 先写位置参数. 然后写默认值参数

3. 函数的实际应用

# 1. 输入一个数,计算从1累加到这个数的结果
# 1+2+4+5+..+n = ?
# 对功能的封装
def sum(n):
    s = 0
    count = 1
    while count <= n:
        s = s + count
        count = count + 1
        return s
ret = sum(5)  # 这个数是5
print(ret)

# 2. 计算n是奇数还是偶数?
def fn(n):
    if n%2 == 0:
        return "偶数"
    else:
        return "奇数"
ret = fn(456)
print(ret)
print(fn(456))

4. 冒泡排序(bubble)

lst = [1, 8, 16, 2, 5, 7]
    # 通过交换的方式. 把列表中最大的值移动到最右端

for abc in range(len(lst)):  # 控制内部移动的次数,需要完成6个数的右移
    n = 0
    while n < len(lst) - 1:  # 每次都需要从第一个数开始比较,比5次,完成一个数的右移.
        if lst[n] > lst[n+1]:
            lst[n], lst[n+1] = lst[n+1], lst[n]
        n = n + 1
print(lst)

 

posted @ 2019-08-02 11:06  magickang  阅读(118)  评论(0编辑  收藏  举报