python day 9 函數 —實例:七段數碼管的繪製

函數python

1、函數的理解和定義git

1.函數是一段具備特定功能的、可重用的語句組express

2.函數是執行特定功能的代碼的封裝,將函數內部的代碼與主體代碼分離開編程

3.輸入(實參形參)、處理(語句)、輸出(returnide

4.兩個做用:下降編程難度、實現代碼複用模塊化

5.函數是IPOimport process output函數

2、def returnspa

1.函數能夠有參數,也能夠沒有參數,當運行函數時,無論有沒有返回值,整個函數都會運行一遍,最後若是有返回值,return返回值。Return 0 也表示程序什麼都不返回orm

2.局部變量,就是用來佔位的,自己並非真正的變量,因此即便和全局變量重名,也沒有關係。blog

3.global保留字:在函數內部使用全局變量。很形象:讓global 後的變量,變成全球都是使用的,而不單單是在函數裏面使用的。

4.函數中沒有建立列表,卻操做了列表,這是列表默認是全局變量,不須要global。但若是建立了,該列表就是局部變量了,局部變量不return出來的話,就被釋放了,也就沒什麼用了。

5.#global 須寫在def後的第一行!

3、參數傳遞

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}

4、lambda保留字 函數

1.格式:函數名 = lambda 變量1,變量2, expression

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

f(10,3) = 3

3.謹慎使用lambda保留字

(1)Lambda定義的函數,主要用做參數

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

(3)建議使用def

5、實例:七段數碼管繪製

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()

 

 

 

6、Thoughts

1.函數:模塊化思惟,分而治之,「封裝」,「接口」

2.規則化思惟:不寫特定場景下的函數,使用參數控制,讓一個函數,能作一類事情,而不是一件事情

3.高內聚低耦合

相關文章
相關標籤/搜索