美文网首页
千锋的第七天

千锋的第七天

作者: 堪怜咏絮才 | 来源:发表于2018-07-24 21:49 被阅读61次

    一、函数的作用

    1、当同一个功能的代码需要重复写多次的时候
    2、当功能发生改变,需要修改多个地方的时候

    二、函数的定义

    1、函数就是对某一特定功能的代码进行封装
    2、函数的作用:主要是封装的作用(将特定的功能绑定在一个函数中,当需要用到这个功能的时候,调用函数就可以实现)
    3、声明函数
    def 函数名(参数):
    函数体
    def:关键字
    函数名:标识符,PEP8的命名规则
    参数:用来接收从外部传导到函数内部的数据
    函数体:实现函数功能的代码块
    4.初学者声明函数的步骤:
    a.确定函数的功能
    b.确定函数名
    c.确定参数
    确定需不需要参数
    确定需要几个参数
    (看实现函数的功能需不需要从外面传数据到函数里面)
    d.实现函数的功能
    e.确定返回值
    5.函数的调用
    函数名(实参列表)
    函数名:调用的函数一定是已经声明过的,想要使用什么功能就调用对应的函数
    实参列表:实参是用来给形参赋值的
    重点--------函数的调用过程:
    0.回到函数声明的地方
    1.使用实参给形参赋值
    2.执行函数体
    3.函数体执行完成后,回到函数调用的位置,再执行后面的代码

    注意:
    1.函数只有在调用的时候才会执行
    2.函数调用的时候一定要保证每个形参都有值
    3.一个函数可以调用多次

    三、函数的参数

    1、位置参数:传参的时候实参按位置的顺序给形参赋值
    2、关键字参数:用关键字调用函数的时候,参数的顺序可以打乱,如

    def func1(a, b, c):
        print(a, b, c)
    func1(c=20, b=10, a=80)
    结果:80 10 20
    

    3、参数的默认值
    在声明函数的时候,参数可以有默认值,但是有默认值的参数在声明的时候必须放在形参的最后面,否则会报错。
    在调用函数有默认值参数的时候,有默认值的参数可以传参也可以不传参。

    def func1(a, b, c=10):
        print(a, b, c)
    func1(10,20)
    func1(10,20,30)
    结果:10 20 10
    10 20 30
    

    4、参数个数不定
    参数的个数不确定的时候,就在声明函数的时候,形参的前面加一个*,将形参变成元组
    调用函数的时候,这个参数会将对应的实参作为元组的元素保存起来

    def func1(*x):
        print(x)
    func1(1,2,3,4,5,6)
    结果:(1, 2, 3, 4, 5, 6)
    
    def func1(*x,y):#参数个数不定的时候,个数不定的参数只能放到形参的最后
        print(x,y)
    func1(1,2,3,4,5,6)
    结果:1 (2, 3, 4, 5, 6)
      File "C:/Users/VM590/Desktop/Python/我的程序/day7-学生管理系统/练习.py", line 15, in <module>
        func1(1,2,3,4,5,6)
    TypeError: func1() missing 1 required keyword-only argument: 'y'
    

    作业

    1.编写一个函数,求1+2+3+....+N

    def my_sum():
        sum1 = 0
        number = int(input('请输入一个N值:'))
        for i in range(1,number+1):
            sum1 += i
        print(sum1)
    my_sum()
    结果:请输入一个N值:89
    4005
    

    2.编写一个函数,求多个数中的最大值

    def max1(*x):
        print(max(x))#元组也可以用max实现求其中的最大值
    max1(1,2,58,96,74,52,34)
    结果:96
    

    3.编写一个函数,实现摇色子的功能,打印n个色子的点数和

    法1:
    def my_sum():
        number = int(input('请输入色字的个数:'))
        count = 0
        list1 = []
        sum1 = 0
        while True:
            count += 1
            import random
            n = random.randint(1,6)#random函数会包括结束下标的数字,比如该题是产生1~6之间的随机数字(包括6)
            list1.append(n)
            if count == number:
                for i in  list1:
                    sum1 += i
                print(sum1)
                break
    my_sum()
    结果:请输入色字的个数:5
    15
    法2:
    def sum1(x):#x代表色子的个数
        sum1 = 0
        count = 0
        while True:
            count += 1
            import random
            n = random.randint(1,6)
            sum1 += n
            if count == x:
                break
        print(sum1)
    sum1(50)
    结果:188
    法3
    def my_sum():
        number = int(input('请输入N值:'))
        sum1 = 0
        for item in range(1,number+1):
            import random
            n = random.randint(1,6)
            print(n)
            sum1 += n
        print('和:',sum1)
    my_sum()
    结果:请输入N值:5
    4
    1
    4
    5
    1
    和: 15
    

    4.编写一个函数,交换指定字典的key和value。

    法1:
    dict1 = {'name':'张三','age':18,'weight':50,'hight':1.7}
    def change_key_value(dict1):
        print(dict((key,value) for value,key in dict1.items()))
    change_key_value({'name':'张三','age':18,'weight':50,'hight':1.7})
    结果:{'张三': 'name', 18: 'age', 50: 'weight', 1.7: 'hight'}
    法2
    dict1 = {'name':'张三','age':18,'weight':50,'hight':1.7}
    def change_key_value(dict1):#dict1表示一个字典,任何字典都可以
        list2 = []
        for key,value in dict1.items():
            list1 = [value,key]
            list2.append(list1)
        dict2 = dict(list2)         #将列表转化成字典
        print(dict2)
    change_key_value(dict1)
    结果:{'张三': 'name', 18: 'age', 50: 'weight', 1.7: 'hight'}
    法3
    dict1 = {'name':'张三','age':18,'weight':50,'hight':1.7}
    def change_key_value(dict1):
        dict2 = {}
        for key,value in dict1.items():
            dict2[value] = key
        print(dict2)
    change_key_value(dict1)
    结果:{'张三': 'name', 18: 'age', 50: 'weight', 1.7: 'hight'}
    

    5.编写一个函数,三个数中的最大值

    def max1(x,y,z):
        print(max(x,y,z))
    max1(10,8,15)
    结果:15
    

    6.编写一个函数,提取指定字符串中的所有的字母,然后拼接在一起后打印出来

    def print_str():
        str1 = input('请随便输入一串字符:')
        str2 =''
        for i in str1:
            if 'a'<=i<='z' or 'A'<=i<='Z':
                str2 += i
        print(str2)
    print_str()
    结果:请随便输入一串字符:jjk1457ADJJHGJ8315&&^%$#@**&&
    jjkADJJHGJ
    

    7.写一个函数,求多个数的平均值

    def average(*number):
        sum1 = 0
        count = 0
        for x in number:
            count += 1
            sum1 += x
        print('平均数:',sum1/count)
    average(10,20,30)
    结果:平均数: 20.0
    

    8.写一个函数,默认求10的阶层,也可以求其他数的阶层

    def hierarchy(x):
        mul1 = 1
        for i in range(1,x+1):
            mul1 *= i
        print(mul1)
    hierarchy(10)
    结果:3628800
    

    9.写一个函数,可以对多个数进行不同的运算

    例如: operation('+', 1,2,3) --->求1+2+3的结果

    operation( '-',10,9) --->求10-9的结果

    operation( '',2,4,8,10) --->求24* 8* 10的结构

    def operation(option,*number):
        if option == '+':
            sum1 = 0
            for item in number:
                sum1 += item
            print(sum1)
        if option == '-':
            diff = 0
            for item in number:
                diff -= item
            print(diff)
        if option == '*':
            mul1 = 1
            for item in number:
                mul1 *= item
            print(mul1)
    operation('*',10,25,89,14)
    结果:311500
    

    相关文章

      网友评论

          本文标题:千锋的第七天

          本文链接:https://www.haomeiwen.com/subject/ibjymftx.html