zoukankan      html  css  js  c++  java
  • python day 9 函数 —实例:七段数码管的绘制

    函数

    一、函数的理解和定义

    1.函数是一段具有特定功能的、可重用的语句组

    2.函数是执行特定功能的代码的封装,将函数内部的代码与主体代码分离开

    3.输入(实参形参)、处理(语句)、输出(return

    4.两个作用:降低编程难度、实现代码复用

    5.函数是IPOimport process output

    二、def return

    1.函数可以有参数,也可以没有参数,当运行函数时,不管有没有返回值,整个函数都会运行一遍,最后如果有返回值,return返回值。Return 0 也表示程序什么都不返回

    2.局部变量,就是用来占位的,本身并不是真正的变量,所以即使和全局变量重名,也没有关系。

    3.global保留字:在函数内部使用全局变量。很形象:让global 后的变量,变成全球都是使用的,而不仅仅是在函数里面使用的。

    4.函数中没有创建列表,却操作了列表,这是列表默认是全局变量,不需要global。但如果创建了,该列表就是局部变量了,局部变量不return出来的话,就被释放了,也就没什么用了。

    5.#global 须写在def后的第一行!

    三、参数传递

    1.即可以是,位置传参,也可以是关键字传参

    2.可选参数传递:有默认值的参数(default argument),在用户看来,就是可以输入,也可以不输入直接使用默认值的参数,即可选参数。位置在

    3.可变参数传递:*a   参数的数量不确定。也就是说,a是组合数据类型(一般是tuple),是一个可以容纳多个变量的容器。

    4.关键参数:传参时,必须使用赋值语句,a =

    5.python参数顺序:正常参数(可以有多个)>默认参数>可变参数>关键字参数

    (1)所有正常参数,必须在默认参数前面

    (2)如果有可变参数,那么默认参数一定会被重新赋值,即使是可变参数,无参数传递进去,这时print(可变参数) 得  ( )  即空元组

    (3) 在可变参数后面,一定是关键字参数,需要使用赋值语句传参。

    (4)关键字参数也有,可选关键字参数(默认关键字参数),和可变关键字参数(**a)(通常是字典类型)

    def io (a,c,b=1,*d,f,g=3,**h):

        print(a,b,c,d,f,g,h)

    s = io(2,10,12,f=1,g=2,h=34,i=57,j=23)

    print(s)

    >>>2 12 10 () 1 2 {'h': 34, 'i': 57, 'j': 23}

    四、lambda保留字 函数

    1.格式:函数名 = lambda 变量1,变量2, expression

    2.例如:f    =  lambda  sr s//r

    f(10,3) = 3

    3.谨慎使用lambda保留字

    (1)Lambda定义的函数,主要用作参数

    (2)有一些固定的使用方式

    (3)建议使用def

    五、实例:七段数码管绘制

    1.If True :

    Expression1

    就是执行expression1   至于为什么不直接写expression1,是因为还有

    If False

    Expression2

    即,在只有两种选择的时候,可以分别使用true false作为分支条件

    2. 第一版

    import turtle as t

    def drawline(draw):

        t.pendown() if draw else t.penup()

        t.fd(40)

        t.right(90)

    def drawdigit(digit):

        drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False)

        drawline(True) if digit in [0,3,4,5,6,7,8,9] else drawline(False)

        drawline(True) if digit in [0,2,3,5,6,8] else drawline(False)

        drawline(True) if digit in [0,1,2,6,8] else drawline(False)

        t.left(90)

        drawline(True) if digit in [0,1,4,5,6,8,9] else drawline(False)

        drawline(True) if digit in [0,2,3,5,6,7,8,9] else drawline(False)

        drawline(True) if digit in [0,2,3,4,7,8,9] else drawline(False)

        t.left(180)

        t.penup()

        t.fd(20)

    def drawdate(date):

        for i in date:

            drawdigit(eval(i))

    def main():

        t.setup(800,350,200,200)

        t.penup()

        t.fd(-300)

        t.pensize(5)

        drawdate('20191127')

        t.hideturtle()

        t.done()

    main()

     

      

    3.第二版

    import turtle as t

    import time

    def drawgap():

        t.penup()

        t.fd(5)

    def drawline(draw):

        t.pendown() if draw else t.penup()

        t.fd(40)

        t.right(90)

    def drawdigit(digit):

        drawgap()

        drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False)

        drawgap()

        drawline(True) if digit in [0,3,4,5,6,7,8,9] else drawline(False)

        drawgap()

        drawline(True) if digit in [0,2,3,5,6,8,9] else drawline(False)

        drawgap()

        drawline(True) if digit in [0,1,2,6,8] else drawline(False)

        t.left(90)

        drawgap()

        drawline(True) if digit in [0,1,4,5,6,8,9] else drawline(False)

        drawgap()

        drawline(True) if digit in [0,2,3,5,6,7,8,9] else drawline(False)

        drawgap()

        drawline(True) if digit in [0,2,3,4,7,8,9] else drawline(False)

        t.seth(0)

        t.penup()

        t.fd(20)

    def drawdate(date):

        for i in date:

            if i == '-':

                t.write('',font=("Arial",18,"normal"))

                t.pencolor('green')

                t.fd(40)

            elif i =='=':

                    t.write('',font=("Arial",18,"normal"))

                    t.pencolor("blue")

                    t.fd(40)

            elif i == '+':

                    t.write('',font=("Arial",18,"normal"))

            else:

                    drawdigit(eval(i))

    def main():

        t.penup()

        t.fd(-300)

        for i in range(10):

            drawdigit(i)

            t.seth(0)

            t.penup()

            t.fd(20)

    def main2():

        t.setup(800,350,200,200)

        t.penup()

        t.fd(-350)

        t.pensize(5)

        t.pencolor('red')

        drawdate(time.strftime('%Y-%m=%d+',time.gmtime()))

        t.hideturtle()

        t.done()

    main2()

     

    六、Thoughts

    1.函数:模块化思维,分而治之,“封装”,“接口”

    2.规则化思维:不写特定场景下的函数,使用参数控制,让一个函数,能做一类事情,而不是一件事情

    3.高内聚低耦合

  • 相关阅读:
    Power of Cryptography
    Radar Installation
    Emag eht htiw Em Pleh
    Help Me with the Game
    89. Gray Code
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    82. Remove Duplicates from Sorted List II
  • 原文地址:https://www.cnblogs.com/cfqlovem-521/p/11945522.html
Copyright © 2011-2022 走看看