九、函数的定义和使用

一、函数的定义

在这里插入图片描述

def fact(n):#使用关键字def进行函数定义,可以没有参数,但是必须保留括号
    s = 1
    for i in range(1, n+1):
        s *=i
    return s
a = fact(10)#调用函数,给形参赋值
print(a)

1.在函数进行定义的过程中,参数分为非可选参数,和可选参数(可以进行赋值),前后关系如下:

在这里插入图片描述

2.可变参数:有时,为了使函数方便调试,增加了可变参数,可变参数放在最后,用*进行标识。

在这里插入图片描述

3.参数的两种传递方式:位置传递,按照位置进行参数赋值;名称赋值,按照名称进行赋值,与位置无关。在这里插入图片描述

4.局部变量和全局变量

在这里插入图片描述
在这里插入图片描述
注:使用global保留字可以将函数局部变量声明为全局变量

5.在函数体内,如果函数参数没有在函数体内定义,则使用全局变量在这里插入图片描述

二、lambda函数

在这里插入图片描述
在这里插入图片描述
注:表达式 = 函数体+返回值,lambda函数中,参数可以省略,直接返回结果

f = lambda x, y:x**y
print(f(3,3))
f = lambda :'没有参数'
print(f())

结果:
没有参数

三、实例

1.绘制七段数码管

import turtle
def drawLine(draw): #绘制单段数码管
    turtle.pendown() if draw else turtle.penup()    #判断是否开始绘制
    turtle.fd(40)
    turtle.right(90)    #持续右转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,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)     #绘制五六七段数码管
    drawLine(True) if digit in [0,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,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()  #为后续数字绘制确定位置
    turtle.fd(20)
def drawDate(date): #获取绘制的数字
    for i in date:
         drawDigit(eval(i))
def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate('20200121')
    turtle.hideturtle()
    turtle.done()
main()

结果:
在这里插入图片描述

2.绘制系统时间

import turtle
import time
def drawLine(draw): #绘制单段数码管
    turtle.pendown() if draw else turtle.penup()    #判断是否开始绘制
    turtle.fd(40)
    turtle.right(90)    #持续右转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,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)     #绘制五六七段数码管
    drawLine(True) if digit in [0,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,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()  #为后续数字绘制确定位置
    turtle.fd(20)
def drawDate(date): #获取绘制的数字
    turtle.pencolor('red')
    for i in date:
        if i == '-':
            turtle.write('年',font=('Arial',18,'normal'))
            turtle.pencolor('green')
            turtle.fd(40)
        elif i == '=':
            turtle.write('月', font=('Arial', 18, 'normal'))
            turtle.pencolor('blue')
            turtle.fd(40)
        elif i == '+':
            turtle.write('日', font=('Arial', 18, 'normal'))
        else:
            drawDigit(eval(i))


def main():
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()
main()

结果:
在这里插入图片描述

发布了40 篇原创文章 · 获赞 0 · 访问量 712

猜你喜欢

转载自blog.csdn.net/qq_43280851/article/details/104063561
今日推荐