使用python編寫的七段數碼管繪製

本文旨在記錄python學習中七段數碼管繪製的一個小例子

1.程序分段解析

1.1.設置每小段數碼管的間距

def drawGap():
	turtle.penup()
	turtle.fd(5)	#每一小段LED間距

1.2.繪製單段數碼管

def drawLine(draw):		#繪製單段數碼管
	drawGap()
	turtle.pendown() if draw else turtle.penup()
	turtle.fd(40)		#每一小段LED長度
	drawGap()
	turtle.right(90)

1.3.根據數字繪製七段數碼管

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)

2.完整代碼.py


# 獲取當前日期的七段數碼管.py
import turtle, time

def drawGap():
	turtle.penup()
	turtle.fd(5)	#每一小段LED間距

def drawLine(draw):		#繪製單段數碼管
	drawGap()
	turtle.pendown() if draw else turtle.penup()
	turtle.fd(40)		#每一小段LED長度
	drawGap()
	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):
	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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章