
画同心圆看似简单,但背后蕴含了编程中的重要思维——就是如何将重复动作转化为循环。本文带你理清“怎么想”再“怎么写”的完整过程。
先想清楚:人类怎么画同心圆?
如果你手动画三个同心圆,步骤大概是:
1. 选一个中心点
2. 画一个小圆
3. 向外移动一点,画一个更大的圆
4. 重复第3步
画第2个圆时,会想着这一个圆要比上一次更大一些,也就是半径每次都增加一定的量。
这就是编程的起点:把人的思考过程翻译成计算机能懂的语言。
拆解问题:画同心圆需要知道什么?
要画一个圆,turtle库需要知道两件事:
一是圆心在哪?(默认是海龟当前位置);二是半径多大?
但turtle.circle(r)有个特点:它以海龟当前位置为圆的底部,逆时针画圆。这意味着:
如果海龟在(0,0),画出的圆底部在(0,0),圆心在(0, r)。所以如果要让所有圆共用一个圆心,海龟必须移动(0, -r)再画圆
这就是关键的数学关系:圆心y坐标 =(0, 半径的相反数)。
列出设计清单
在写代码之前,先在纸上列出要做的事:
1. 准备一个半径列表,比如[30, 60, 90, 120]
2. 准备对应的颜色列表(可选)
3. 对每个半径:
抬起画笔(移动时不留痕迹)
移动到(0, -半径)的位置
放下画笔
画一个指定半径的圆
4. 所有圆画完后,隐藏海龟,保持窗口
这个清单就是代码的“施工图纸”。
写代码:把设计翻译成Python
import turtle as t # 设置速度最快 t.speed(0) # 设计数据:半径列表 radii = [30, 60, 90, 120] colors = ["red", "blue", "green", "orange"] # 按设计清单执行 for i in range(len(radii)): #len函数返回列表元素个数 r = radii[i] t.penup() t.goto(0, -r) # 移动到圆的底部 t.pendown() t.pencolor(colors[i]) t.circle(r) # 画圆 t.hideturtle() t.done() |
运行代码,你会看到四个颜色不同、大小递增的同心圆。

如果让你修改,你会怎么做?
掌握了基础版本后,可以尝试以下变化:
修改1:让圆的数量可调
num = int(input("你想画几个同心圆?")) radii = [30 * (i+1) for i in range(num)] |
用列表推导式自动生成半径。
修改2:让半径每次增加固定步长
start_r = 20 step = 25 radii = [start_r + step * i for i in range(5)] |
修改3:给圆填充颜色
t.fillcolor(colors[i]) t.begin_fill() t.circle(r) t.end_fill() |
动手试试
练习1:修改代码,画出5个半径分别为20、40、60、80、100的同心圆
练习2:让同心圆从外向内画(提示:半径从大到小)
练习3:画一组同心半圆(提示:circle(r, 180)画半圆)
练习1:画一个彩色五边形
import turtle as t |
或者
import turtle as t |

练习2:画一朵四瓣花
import turtle as tfor i in range(4): |

练习3:画一个彩色螺旋圆
import turtle as t colors = ["red", "orange", "black", "green", "blue", "purple"]for i in range(12): |

精彩回顾:
一起学Python(009):从零开始学绘图@turtle库使用
一起学Python(008):站在巨人的肩膀上编程@Python库引用
一起学Python(007):Python赋值语句轻松入门@每日饮水记录器
一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例
一起学Python(004):Python程序三种控制结构:顺序、分支和循环
一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”
一起学Python(002):计算机的“数字秘密”——0和1如何统治世界?
一起学Python(001):为什么文科生也要学Python?
欢迎【点赞】+【转发】❤️
