ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Python Turtle绘图:奥运五环(用最简单的方法实现五环套接)【难度2星】 ![](http://h.yiniuedu.com/46e585ade5f999366338d74b33cadde3) **北京冬季奥运会,即将在2022年2月4日开幕。北京冬奥会、冬残奥会的主题口号是“一起向未来”。** **【重难点突破】** ****1. 奥运五环的色彩构成**** ![](http://h.yiniuedu.com/fab8a23b73ab9cfed2250e651db7ca23) **颜色对比:** 下图中的两种蓝色和黄色,前面的颜色就是官方指定的规范颜色,后面是我们经常使用的“blue”和“yellow”。颜色差别很大,所以我们在绘制奥运五环的时候,一定要先去官网查看五环的规范色彩以及其他相关知识。绘制奥运五环,态度一定要严谨。 ![](http://h.yiniuedu.com/f3fcf2e51914cb40c23e3af3d649200f) ****2. 观察海龟画圆特点**** ![](http://h.yiniuedu.com/2f65fa818868a09eedf7da429872aa41) 上图中,海龟画了两种粗线对比明显的圆,并画了简易坐标系,对比观察后很容易发现海龟画圆的特点: **特点一:** turtle.circle(100)画出的圆在x轴上方,也就是圆心在海龟头部左侧; **特点二:** 红圈的粗为2,黑圈的粗为30。可以看出画笔加粗后圈里圈外都会平均增厚。 五环的颜色是有明确规定的。如蓝色是"#0081c8",并不是我们通常使用的“blue”。具体规范如下: ****3. circle( )函数的扩展用法**** **语法格式:circle(****半径****,****角度****)** 半径为正值,则圆心在海龟头部的左边;半径为负值,圆心在海龟头部的右边。 角度为正值,则按海龟的前进方向画图;角度为负值,按海龟倒退的方向画图。 半径正负与角度正负,四种组合举例: ![](http://h.yiniuedu.com/8edef78f6bf055715e3bf5cad1ad39ec) ****4. 确定五环绘制的起点坐标**** 注意:是海龟画圆时的起点坐标,而不是圆心坐标。 举例:画黑环时,直接从默认坐标位置(0,0)开始画,但是画蓝环时,海龟要先抬笔移动到坐标(-s1,0)处,再落笔开始画圆。 ![](http://h.yiniuedu.com/fa37e7477fd79da28e047f4649fc1df2) ****5.  如何实现五环套接?**** 如上图中的蓝环压黄环,可以从蓝环顶部坐标(-s1,2\*r)位置开始画半径为负值的圆弧,遮挡住黄环。半径为负值,圆心在海龟头部的右边。 turtle.circle(-r,100) 如红环压绿环,可以从红环底部坐标(s1,0)位置开始画角度为负值的圆弧,遮挡住绿环。角度为负值,海龟按倒退的方向画图。 turtle.circle(r,-20) 代码如下: ``` # 画奥运五环标志(标准颜色+五环套接) import turtle turtle.speed(0) ### 设置半径与画笔粗细 # r=float(input("请输入五环的半径:"))   # input()函数接收到的是字符串,float()可以将其转换为浮点型数字 r=80 # 暂时设置一个固定值,方便调试程序 pensize=r/6 # 改动半径,环的粗细以及环与环的间距会等比例缩放 turtle.pensize(pensize)        # 设置画笔的粗细为pensize ### 【1】画五个环 s1=2*r+2*pensize # 左右两环的圆心到中间环圆心的距离是s s2=r+pensize # 左右两环的圆心到y轴的距离是s # ① 画中间的黑环,起点坐标为(0,0),即海龟的默认坐标 turtle.pencolor("#000000") # #000000是黑色,也就是blake turtle.circle(r) # 海龟画半径为r的圆 # ② 画左上的蓝环,起点坐标为(-s1,0) turtle.pencolor("#0081C8") # #0081C8是一种蓝色,切记不是blue turtle.penup() # 海龟抬笔,没有移动(绘画)痕迹 turtle.goto(-s1,0) # 让海龟移至坐标(-s1,0) turtle.pendown() # 海龟落笔,移动(绘画)有痕迹 turtle.circle(r)               # ③ 画右上的红环,起点坐标为(s1,0) turtle.pencolor("#EE334E") # #EE334E是一种红色,切记不是red turtle.penup() turtle.goto(s1,0)              # 让海龟移至坐标(s1,0)     turtle.pendown() turtle.circle(r)               # ④ 画左下的黄环,起点坐标为(-s2,-r) turtle.pencolor("#FCB131") # #FCB131是一种黄色,切记不是yellow turtle.penup() turtle.goto(-s2,-r)            # 让海龟移至坐标(-s2,-r) turtle.pendown() turtle.circle(r)             # ⑤ 画右下的绿环,起点坐标为(s2,-r) turtle.pencolor("#00A651") # #00A651是一种绿色,切记不是green turtle.penup() turtle.goto(s2,-r) # 让海龟移至坐标(s2,-r)             turtle.pendown() turtle.circle(r)               ### 【2】 实现五环套连 # ① 黑环压黄环,移至黑环起点坐标(0,0) turtle.pencolor("#000000") # #000000是黑色 turtle.penup() turtle.goto(0,0) # 海龟移至黑环起点坐标(0,0) turtle.pendown() turtle.circle(r,-20) # 海龟画半径为r,度数为-20的圆弧 # ② 红环压绿环,移至红环起点坐标(s1,0) turtle.pencolor("#EE334E") # #EE334E是一种红色 turtle.penup() turtle.goto(s1,0)              # 海龟移至红环起点坐标(s1,0) turtle.setheading(0) # 因为海龟刚刚画过圆弧,方向发生了改变,所以要重新设置方向 turtle.pendown() turtle.circle(r,-20) # 海龟画半径为r,度数为-20的圆弧 # ③ 黑环压绿环,移至黑环的上端坐标(0,2*r) turtle.pencolor("#000000") # #000000是黑色 turtle.penup() turtle.goto(0,2*r) # 海龟移至黑环上端坐标(0,2*r) turtle.setheading(0) # 因为海龟刚刚画过圆弧,方向发生了改变,所以要重新设置方向 turtle.pendown() turtle.circle(-r,100)          # 海龟画半径为-r,度数为100的圆弧 # ④ 蓝环压黄环,移到蓝环的上端坐标(-s1,2*r) turtle.pencolor("#0081C8") # #0081C8是一种蓝色 turtle.penup() turtle.goto(-s1,2*r) # 海龟移至蓝环上端坐标(-s1,2*r) turtle.setheading(0) # 因为海龟刚刚画过圆弧,方向发生了改变,所以要重新设置方向 turtle.pendown() turtle.circle(-r,100)          # 海龟画半径为-r,度数为100的圆弧 ### 绘图结束,隐藏海龟 turtle.hideturtle() turtle.done() ```