ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# Python Turtle绘图:红灯笼(初一数学坐标知识的具体应用)【难度1星】 ![](http://h.yiniuedu.com/067e26fb96692ddb72d2a838cf31fe6a) **红灯笼,展现东方之美,是中国文化的符号。** 红灯笼象征着阖家团圆、事业兴旺、红红火火;寓意着幸福、光明、活力、圆满与富贵。 **案例:** **红灯笼** **难度:★☆☆☆☆☆** **“小错误”成就“小惊喜”** 画灯笼主体部分交错的三个圆时,我是直接在默认状态下,让海龟每前进30个像素画一个圆。 灯笼快画完的时候,我突然意识到因为起始位置没有重新定位,所以灯笼的重心偏向了右上方。有点郁闷,想立即修改代码,但又想都快画完了,还是等画完后再做整体修改。 灯笼画完后,我正要修改代码的时候,突然发现这个“小错误”带来的美感。比起灯笼生硬的摆放在画布正中央,灯笼偏向右上方,倒是在灯笼左侧和下方形成了留白,画面有了呼吸感,也更显出灵动来。 在此基础上,我又在留白处点缀了几个大小不一的圆点,顿时有了灯光随意散落的真实感,灯笼烘托的节日氛围也更浓厚。 所以写代码时,如果不小心犯了此类小错误,千万不要抱怨,当我们乐观对待错误的时候,好多时候这种小小的错误倒反会成就一段“小惊喜”呢。  【配色参考】 **“从喜欢的图片中找寻配色灵感”** ![](http://h.yiniuedu.com/851030d7806064b75de2dcbce67d7269) ![](http://h.yiniuedu.com/206b2197b4e1a31c4cf2ee2c8eb7f607) **【重难点突破】** **1. 灯笼主体部分**的**绘制方法** 灯笼的主体部分是由三个半径为100像素的圆交错形成。 这种画法非常简单,但是画出的灯笼会有瑕疵,不够完美,因为灯笼上下的两个小长方形将无法遮挡三圆交接的地方。不过瑕不掩瑜,我还是非常喜欢啦~! ******2. 初一数学“坐标”知识的具体应用****** 代码中多次使用了goto( )坐标定位,坐标知识是初一数学下册中的重要内容。 画灯笼是对数学课本上坐标知识的一次具体应用。只要用心观察用心体会,不同坐标带来的位置变化,即使没有学过坐标,也能自如应用坐标去定位。 ******3. 用“邻近色”做背景,更能烘托节日氛围****** 在此案例中,背景颜色设置为#490305深红色,与灯笼的红色属于邻近色。你也可以尝试用其他颜色做背景看看效果,如 #02102d深蓝色, #610327深紫色,#160005黑红色等。 一一尝试完后,你会发现用“邻近色”做背景,更能烘托主题氛围。关于背景颜色的设置。  【代码参考】 温馨提示:本案例代码虽长,但都是顺序结构,容易理解。 ``` # 画红灯笼 ### 程序初始化设置 import turtle turtle.bgcolor("#490305") # 设置背景颜色为#490305深红色。可试其他颜色(#02102d深蓝色 #610327深紫色 #160005黑红色) turtle.speed(0) # 设置海龟绘图的速度,参数为0时最快 turtle.pensize(5) # 设置画笔粗细,即画灯笼线条的粗线为5 ### ① 画灯笼主体部分(三个圆交错) turtle.pencolor("#ffbd11") # 设置画笔颜色,即灯笼线条颜色为#ffbd11,一种黄色 turtle.fillcolor("#de0b02") # 设置填充颜色,即灯笼颜色为#de0b02,一种红色 turtle.begin_fill() # 开始填充颜色 turtle.circle(100) # 画半径为100的圆 turtle.forward(30) # 画完一个圆后,海龟向前移动30像素 turtle.circle(100) # 继续再画一个半径为100圆 turtle.forward(30) # 海龟再向前移动30像素 turtle.circle(100) # 最后再画一个圆。形成三圆交错效果。 turtle.end_fill() # 结束填充颜色 ### ② 画灯笼下面的长方形(长80,宽20) turtle.pencolor("#de0b02") # 长方形描边 一种红色 turtle.fillcolor("#ffbd11") # 长方形填充颜色,一种黄色 turtle.begin_fill() turtle.forward(10) turtle.right(90) turtle.forward(20) # 长方形的宽 turtle.right(90) turtle.forward(80) # 长方形的长 turtle.right(90) turtle.forward(20) # 长方形的宽 turtle.right(90) turtle.forward(80) # 长方形的长 turtle.end_fill() # 海龟移动到上面,准备画上面的长方形 turtle.penup() turtle.setheading(90) # 假如你想让海龟向上走,但一时又想不明白是左还是右,就可以用setheading() turtle.forward(200) turtle.pendown() ### ③ 画灯笼上面的长方形(长80,宽20) turtle.pencolor("#de0b02") # 长方形描边,一种红色 turtle.fillcolor("#ffbd11") # 长方形填充颜色,一种黄色 turtle.begin_fill() turtle.forward(20) # 长方形的宽 turtle.left(90) turtle.forward(80) # 长方形的长 turtle.left(90) turtle.forward(20) # 长方形的宽 turtle.left(90) turtle.forward(80) # 长方形的长 turtle.end_fill() ### ④ 画提绳(长60,宽30) turtle.setheading(90) turtle.forward(20) turtle.setheading(180) turtle.forward(25) turtle.setheading(90) turtle.forward(60) # 提绳的长 turtle.setheading(180) turtle.forward(30) # 提绳的宽 turtle.setheading(-90) turtle.forward(60) # 海龟移动最下面,准备画掉穗 turtle.penup() turtle.home() # 让海龟返回原点(0,0) turtle.setheading(-90) turtle.forward(25) turtle.pendown() ### ⑤ 画掉穗(从左至右画7条穗子) turtle.pencolor("#ffbd11") turtle.forward(60) # 画第1穗 turtle.backward(60) turtle.setheading(0) turtle.forward(10) turtle.setheading(-90) turtle.forward(90) # 画第2穗 turtle.backward(90) turtle.setheading(0) turtle.forward(10) turtle.setheading(-90) turtle.forward(120) # 画第3穗 turtle.backward(120) turtle.setheading(0) turtle.forward(10) turtle.setheading(-90) turtle.forward(150) # 画第4穗(最中间的穗子) turtle.backward(150) turtle.setheading(0) turtle.forward(10) turtle.setheading(-90) turtle.forward(120) # 画第5穗 (和第3穗一样长) turtle.backward(120) turtle.setheading(0) turtle.forward(10) turtle.setheading(-90) turtle.forward(90) # 画第6穗(和第2穗一样长) turtle.backward(90) turtle.setheading(0) turtle.forward(10) turtle.setheading(-90) turtle.forward(60) # 画第7穗(和第1穗一样长) turtle.backward(60) turtle.setheading(0) ### ⑥ 写字“春节” turtle.penup() turtle.goto(8,110) turtle.write("春",font=("隶书",40)) # 写“春” turtle.pendown() turtle.penup() turtle.goto(8,50) turtle.write("节",font=("隶书",40)) # 写“节” turtle.pendown() ### ⑦ 画散落的圆点(6个圆点坐标要不同) # turtle.speed(1) # 可减慢画图速度,观察调整圆的坐标位置 turtle.penup() turtle.goto(-200,100) turtle.dot(26,"#de0b02") # 画第1个点 turtle.pendown() turtle.penup() turtle.goto(-250,-100) turtle.dot(20,"#de0b02") # 画第2个点 turtle.pendown() turtle.penup() turtle.goto(200,-60) turtle.dot(30,"#de0b02") # 画第3个点 turtle.pendown() turtle.penup() turtle.goto(180,180) turtle.dot(12,"#de0b02") # 画第4个点 turtle.pendown() turtle.penup() turtle.goto(-150,-170) turtle.dot(22,"#de0b02") # 画第5个点 turtle.pendown() turtle.penup() turtle.goto(140,-150) turtle.dot(18,"#de0b02") # 画第6个点 turtle.pendown() ### 海龟结束画图,隐藏海龟 turtle.hideturtle() turtle.done() ```