上一篇写道:
使用保留字def定义函数
lambda定义匿名函数
电子表,交通路口常见七段数码管
turtle绘图体系绘制七段数码管
我们需要考虑每次绘制完向前移动的距离
就有了下一步
步骤三:获取系统时间,绘制七段数码管
使用time库获得系统当前时间
增加年月日标记
年月日颜色不同
import turtle
import time
def drawGap():#绘制数码管间隔,在绘制线之前和之后分别增加一些小的像素作为间隔
turtle.penup()
turtle.fd(4)#嵩天老师的代码写的是5,放到我的代码中出不来效果,改了一下,这会效果挺满意的
def drawLine(draw): #绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDigit(digit):#根据数字绘制七段数码管 ,根据参数digit来决定如何绘制对应的函数,这个digit是一个数字,它的取值范围是0到9也就是整数
drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False) #这条语句表示0,1,7的第一条线段不需要被绘制,像8这个数字每条线都需要画出来,可见后面的语句中都含有8
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):#获得要输入的数字,drawDate是将一串字符串拆分成一个个字符的函数(data为日期,格式‘%Y-%m=%d+’)
turtle.pencolor("magenta")#这个洋红色好像紫色呀
for i in date:
if i =='-':
turtle.write('年',font=("Arial",18,"normal")) #turtle中使用turtle.write函数去绘制一个具体的汉字(这个函数自己应该去学习学习学习)
turtle.pencolor("gold")
turtle.fd(40)
elif i =='=':
turtle.write('月',font=("Arial",18,"normal"))
turtle.pencolor ("purple")#这个紫色太紫了呵呵呵,是有区分的
turtle.fd(40)
elif i =='+':
turtle.write('日',font=("Arial",18,"normal"))
else:
drawDigit(eval(i)) #通过eval()函数将数字变为整数
def main():#定义一个主函数main,这个main设定了当前画布的大小,
turtle.setup(800,350,200,200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
# drawDate('20230102')#通过调用函数drawDate参数给main赋予一个参数
turtle.hideturtle()
turtle.done()
main()
turtle库是我们学的第一个标准库
但之前没整理这里用到了
整理一下方便理解
turtle的绘图窗体
turtle的一个画布空间最小单位是像素
比如绘制一个100长的直线
指的是100像素长的直线
turtle.setup(width,height,startx,starty) #setup()设置窗体大小及位置,width,height(指窗体本身的宽度和高度)startx,starty(指的是窗子起始点的坐标<左上角>)
#setup()不是必须的,四个参数中后两个可选
turtle.setup(800,400,0,0) #指的是我们生成的窗体它的宽度是800,高是400,窗体的左上角就在电脑屏幕的左上角
turtle.setup(800,400) #宽度是800,高是400,由于没有指定它左上角在屏幕中的位置,系统会默认该窗口在屏幕的正中心
turtle空间坐标体系
在turtle的窗体内部的空间坐标体系
包括绝对坐标和海龟坐标
绝对坐标
是turtle最开始在画布的正中心
正中心的坐标是(0,0)
海龟的运行方向向着画布的右侧
整个的窗体的右方向是x轴
上方向是y轴
由此构成了一个绝对坐标系
这里有一个很重要的函数叫goto
海龟坐标
对于海龟来讲它的当前行进方向
无论这个方向是朝哪个方向的
它都叫前进方向
反方向是后退方向
海龟运行的左侧叫做左侧方向
右侧叫做右侧方向
#海龟坐标
turtle.fd(d) #指的是向海龟的正前方向运行
turtle.bk(d) #bk表示向海龟的反方向运行
turtle.circle(r,angle)#表示以海龟当前位置,左侧的某一个点为圆心,进行曲线运动
turtle角度坐标体系
包括绝对角度和海龟角度
绝对坐标下的叫绝对角度
正方向向左转
(0°,90°,180°,270°,360°)
负方向向右转
(0°,-90°,-180°,-270°,-360°)
和数学上是一致的
#绝对角度
turtle.seth(angle) #seth()改变海龟行进方向,只改变方向但不进行,angle为绝对度数
turtle.seth(45) #让海龟的运行方向朝向45°方向
turtle.seth(-135) #让海龟的运行方向朝向反向的-135°方向
#如果在这样的方位中进一步的使用turtle.fd(),它会朝着当前设定的方向直线运行
海龟坐标下的叫海龟角度
#海龟角度
turtle提供了turtle.left(angle), turtle.right(angle)这两个函数,分别让当前的海龟向左或者向右去改变运行方向
这个角度我是弄不清楚了呜呜呜
RGB指红蓝绿三中颜色构成万物色
覆盖视力所能感知的所有颜色
RGB每色取值范围0-255整数或0-1小数
RGB色彩体系
英文名称 | RGB整数值 | RGB小数值 | 中文名称 |
white | 255,255,255 | 1,1,1 | 白色 |
yellow | 255,255,0 | 1,1,0 | 黄色 |
magenta | 255,0,255 | 1,0,1 | 洋红 |
cyan | 0,255,255 | 0,1,1 | 青色 |
blue | 0,0,255 | 0,0,1 | 蓝色 |
black | 0,0,0 | 0,0,0 | 黑色 |
seashell | 255,245,238 | 1,0.96,0.93 | 海贝色 |
gold | 255,215,0 | 1,0.84,0 | 金色 |
pink | 255,192,203 | 1,0.75,0.80 | 粉色 |
brown | 165,42,42 | 0.65,0.16,0.16 | 棕色 |
purple | 160,32,240 | 0.63,0.13,0.94 | 紫色 |
tomato | 255,99,71 | 1,0.39,0.28 | 番茄色 |
turtle库默认使用
RGB的小数值来表示颜色
可以切换为整数值来表示颜色
turtle.colormode(mode)
1.0:RGB小数值模式
255:RGB整数值模式
#turtle.colormode(1.0) ,在之后修改颜色时,需要使用RGB小数值
#turtle.colormode(255) ,在之后修改颜色时,需要使用RGB整数值
turtle画笔控制函数
penup() 抬起画笔,海龟在飞行 |
turtle.penup() 别名 turtle.pu() |
pendown() 画笔落下,海龟在爬行 |
turtle.pendown() 别名turtle.pd() |
pensize() 设置画笔宽度的 |
turtle.pensize(width) 别名 turtle.width(width) |
pencolor() 修改画笔颜色的函数 |
turtle.pencolor(color) color为颜色字符串或r,g,b值 |
pencolor中color参数可以有三种形式
颜色字符串 :turtle.pencolor("purple") |
purple是字符串形式而且是小写 |
RGB的小数值:turtle.pencolor(0.63,0.13,0.94) |
RGB的元组值:turtle.pencolor((0.63,0.13,0.94)) |
turtle运动控制函数
控制海龟行进:走直线&走曲线
turtle.forward(d) 别名 turtle.fd(d) 向前行进,海龟走直线 |
d:行进距离,可以为负数(单位是像素) |
turtle.circle(r,extent=None) 根据半径r绘制extent角度的弧形 |
r:默认圆心在海龟左侧r距离的位置 |
extent:绘制角度,默认是360度整圆 |
turtle.circle(100) #指的是在海龟当前位置上,以100像素为半径绘制一个圆形,因为没有给出第二个参数,默认画出整个圆形
turtle.circle(-100,90)#圆心在海龟的右侧,以100像素为半径,绘制的弧度是90度,形成1/4个弧形
方向控制函数
控制海龟面对方向:绝对角度&海归角度
turtle.setheading(angle) 别名turtle.seth(angle) 改变行进方向,海龟走角度 |
angle:改变行进方向,海龟走角度 |
#绝对坐标
turtle.seth(45)#表名将海龟的方向转向为绝对坐标系中的45度方向
turtle.seth(-135)#表名将海龟的方向转向为绝对坐标系中的-135度方向
turtle.left(angle) 海龟向左转 |
turtle.right(angle) 海龟向右转 |
angle:在海龟当前行进方向上旋转的角度 |
这篇拖了好久我觉得
希望大家都有个快快乐乐的学习心态