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

如何用turtle实现用户输入绘制多边形并定时循环重绘?

问题与解决方案

问题说明

需要开发一个Python程序,通过turtle库实现以下功能:

  • 根据用户输入的边数、边长绘制正多边形
  • 绘制完成后等待几秒清除画面
  • 重复上述流程直至程序终止

当前代码使用for循环仅执行3次,尝试改用while True循环时,出现窗口关闭后无法重新打开的问题。

问题根源

turtle.clearscreen()方法会完全重置turtle环境,包括关闭绘图窗口、清除所有turtle实例。因此在while循环中调用该方法后,后续的绘图操作无法再创建新窗口,导致程序失效。

修复后的代码

# 绘制自定义正多边形
import turtle
import time

def draw_polygon(sides, length):
    # 正多边形每个外角为360/边数,转向角度直接用这个值即可
    angle = 360 / sides
    for _ in range(sides):
        turtle.forward(length)
        turtle.left(angle)

# 主循环,支持用户主动退出
while True:
    try:
        # 获取边数,输入'exit'退出程序
        sider_input = input("请输入多边形的边数(输入'exit'退出):")
        if sider_input.lower() == 'exit':
            break
        sider = int(sider_input)
        if sider < 3:
            print("边数必须大于等于3,请重新输入!")
            continue
        
        # 获取边长并转换为像素(mm转像素系数)
        lengde_side = float(input("请输入边长(单位:mm):"))
        lengde_side *= 3.7795275591

        # 计算并输出角度信息
        interior_angle = (sider - 2) * 180 / sider
        print(f"多边形内角和为 {(sider-2)*180} 度,每个内角为 {interior_angle:.2f} 度")

        # 绘制多边形
        draw_polygon(sider, lengde_side)
        
        # 等待4秒后清除绘图(不关闭窗口)
        time.sleep(4)
        turtle.clear()
        
    except ValueError:
        print("输入无效,请输入数字或'exit'!")

# 程序结束时关闭窗口
turtle.bye()

优化要点

  • 替换清屏方式:用turtle.clear()替代turtle.clearscreen(),仅清除画布上的绘图,保留窗口和turtle实例,确保循环中能持续绘图
  • 简化角度计算:正多边形的转向角度直接用360/边数(外角),无需复杂的内角推导,逻辑更简洁
  • 增加退出机制:支持用户输入exit主动终止程序,避免强制关闭窗口
  • 输入验证:捕获非数字输入的异常,同时限制边数必须≥3(正多边形的基本要求)
  • 代码模块化:将绘图逻辑封装为draw_polygon函数,提高代码可读性和可维护性
  • 格式化输出:用f-string优化角度信息的输出格式,更清晰直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:23:28