You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Turtle判断两个圆是否相交并实现绘制验证

实现逻辑说明
  • 先做相交判定:计算两个圆心的欧氏距离,和两个半径的和、半径差的绝对值对比即可得出结果
  • Turtle绘制逻辑:移动到对应圆心正下方、距离为半径长度的位置,从该点画圆即可(Turtle的circle()方法默认圆心在海龟左侧半径距离的位置,调整初始绘制位置后刚好可以让目标坐标成为圆心)
  • 输入直接用内置的input()函数实现,转换为数值类型即可,逻辑简单好理解
完整可运行代码
import turtle
import math

# 1. 输入第一个圆的参数
x1 = float(input("请输入第一个圆的圆心x坐标:"))
y1 = float(input("请输入第一个圆的圆心y坐标:"))
r1 = float(input("请输入第一个圆的半径:"))

# 2. 输入第二个圆的参数
x2 = float(input("请输入第二个圆的圆心x坐标:"))
y2 = float(input("请输入第二个圆的圆心y坐标:"))
r2 = float(input("请输入第二个圆的半径:"))

# 3. 判定两个圆是否相交
# 计算两个圆心的欧氏距离
distance = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
# 如果需要严格相交(排除相切的情况),把下面判定条件的>=改成>、<=改成<即可
if distance > r1 + r2:
    result = "两个圆外离,不相交"
elif distance < abs(r1 - r2):
    result = "两个圆内含,不相交"
else:
    result = "两个圆相交(包含外切、内切的相切情况)"
# 控制台输出判定结果
print(result)

# 4. 用Turtle绘制两个圆
t = turtle.Turtle()
t.speed(2) # 控制绘制速度,数值越大绘制越快

# 绘制第一个圆
t.penup()
t.goto(x1, y1 - r1) # 移动到第一个圆圆心正下方的绘制起点
t.pendown()
t.circle(r1)

# 绘制第二个圆
t.penup()
t.goto(x2, y2 - r2) # 移动到第二个圆圆心正下方的绘制起点
t.pendown()
t.circle(r2)

# 在画布左上角显示判定结果
t.penup()
t.goto(-turtle.window_width()//2 + 20, turtle.window_height()//2 - 40)
t.pendown()
t.write(result, font=("微软雅黑", 14, "normal"))

# 保持绘制窗口不自动关闭,点击窗口即可关闭
turtle.done()
运行说明
  • 运行代码后先在控制台按提示依次输入两个圆的参数,输入完成后会自动弹出Turtle绘制窗口
  • 相交判定结果会同时在控制台和Turtle窗口左上角显示
  • 所有逻辑都加了注释,你可以修改参数测试外离、内含、相交、相切等不同场景,对应看代码的判定逻辑

内容的提问来源于stack exchange,提问作者Lucas Gago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:15:06