Python小案例
一、前置内容
数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管。
1.1、使用到turtle库
可以参考turtle --- 海龟绘图 — Python 3.11.4 文档或者第三篇:使用Python画条鱼 - 掘金 (juejin.cn)
1.2、使用到函数
1.2.1、函数的理解
函数是一段代码的表示
函数是一段具有特定功能的可重用的语句组
函数是一种功能的抽象,一般函数表达特定功能
两个作用: 降低编程难度 和 代码复用
1.2.2、函数的定义
举个例子:打印n的阶乘
1.2.3、函数的使用及调用过程
1.2.4、函数的参数传递
参数个数
函数可以有参数也可以没有参数 , 但是要保留()
可选参数传递
函数定义时可以为某些参数指定默认值, 构成可选参数
可变参数传递
参数传递的两种方法
1、按照位置
下面第一个print语句
2、按照名称
下面第二print语句
1.2.5、函数的返回值
返回多个值
1.2.6、局部变量和全局变量
基本数据类型,无论是否重名,局部变量与全局变量不同
可以通过global保留字在函数内部声明全局变量
组合数据类型和,如果局部变量未真实创建,则是全局变量
1.2.7、lambda函数
二、案例需求
使用程序绘制七段数码管
三、案例分析与解决过程
1、怎么设计这个七段数码的代码? 答案:设计一个划线的函数,设计一个画七段数码管的函数 , 设计一个解析字符日期的函数 , 设计启动函数
2、画线函数
这七条管有一定顺序,给定直行多少,然后右转90
3、七段数码管函数
每一段数码管可能构成的数字形成一个集合 , 如果你输出的数字存在这个集合中,就去调用划线函数
比如 下面的 ___ 可能构成0,2,3,5,6,8,9这几个数字 , 这几个数字形成一个集合
4、解析字符日期的函数
遍历字符串,把通过eval函数将这个字符串拿出来,给到七段数码管函数中
5、设计启动函数
设置窗口等
四、完整代码
import turtle
def drawLine(draw):
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
turtle.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,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("20230619")
turtle.hideturtle()
turtle.done
main()
五、检验与验收代码
六、复盘所学知识
1、函数的定义、参数、调用 def 函数名(): 函数体 返回值
2、函数的作用:复用 , 降低编程难度