2020年2月12日星期三
在验证本实例之前我们先复习一下函数的定义与使用相关知识点
函数的定义与使用
1、函数的定义
2、函数的调用
3、函数的参数传递
函数可以有参数,也可以没有,但必须保留括号
可选参数传递
说明:Python中要求在定义函数时,所有的可选参数必须放在非可选参数之前,来看一个例子:
fact(10)没有提供第二个参数,默认为1,fact(10,5),指定第二个参数为5
可变参数传递
不确定参数的个数,如max()和min()
b是自己定义的变量名,也可以是a等,下面看一个例子:
参数传递的两种方式
4、函数的返回值
5、局部变量和全局变量
使用规则
6、lambda函数
第一行定义一个函数f,有两个参数x,y,内容是x+y
第四行定义一个函数f,但没有参数,后面是一个表达式
注:lambda函数只是一些特殊函数来使用的,一般建议用def来定义普通函数
七段数码管实例验证
实例一:用七段数码管显示时间
代码一:
#SevenDightsDarwV1.py
import turtle
def drawline(draw): #绘制单段数码管
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
turtle.right(90)
def drawdights(dight): #根据数字绘制七段数码管
drawline(True) if dight in [2,3,4,5,6,8,9] else drawline(False)
drawline(True) if dight in [0,1,3,4,5,6,7,8,9] else drawline(False)
drawline(True) if dight in [0,2,3,5,6,8,9] else drawline(False)
drawline(True) if dight in [0,2,6,8] else drawline(False)
turtle.left(90)
drawline(True) if dight in [0,4,5,6,8,9] else drawline(False)
drawline(True) if dight in [0,2,3,5,6,7,8,9] else drawline(False)
drawline(True) if dight in [0,1,2,3,4,7,8,9] else drawline(False)
turtle.left(180)
turtle.penup()
turtle.fd(40)
def drawdate(date): #获得要输出的数字
for i in date:
drawdights(eval(i)) #通过eval()函数将数字变为整数
def main():
turtle.setup(650,350)
turtle.penup()
turtle.pensize(5)
turtle.color("black")
turtle.fd(-300)
drawdate('20200212')
turtle.hideturtle()
turtle.done()
main()
结果一:
实例二:获取当期日期显示用七段数码管显示
代码二:
#SevenDightsDarwV2.py
import turtle,time
def drawgap():#绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawline(draw): #绘制单段数码管
drawgap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawgap()
turtle.right(90)
def drawdights(dight): #根据数字绘制七段数码管
drawline(True) if dight in [2,3,4,5,6,8,9] else drawline(False)
drawline(True) if dight in [0,1,3,4,5,6,7,8,9] else drawline(False)
drawline(True) if dight in [0,2,3,5,6,8,9] else drawline(False)
drawline(True) if dight in [0,2,6,8] else drawline(False)
turtle.left(90)
drawline(True) if dight in [0,4,5,6,8,9] else drawline(False)
drawline(True) if dight in [0,2,3,5,6,7,8,9] else drawline(False)
drawline(True) if dight in [0,1,2,3,4,7,8,9] else drawline(False)
turtle.left(180)
turtle.penup()
turtle.fd(40)
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")
elif i=='+':
turtle.write("日",font=("Arial",18,"normal"))
else:
drawdights(eval(i)) #通过eval()函数将数字变为整数
def main():
turtle.setup(850,350)
turtle.penup()
turtle.pensize(5)
turtle.fd(-400)
date=time.strftime("%Y-%m=%d+",time.gmtime())
drawdate(date)
turtle.hideturtle()
turtle.done()
main()
结果二: