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

如何用Turtle绘制正多边形?我的代码为何未达作业要求?

你的代码不符合作业要求的问题分析

你的代码虽然能运行,但和作业要求存在几个明显偏差,具体问题如下:

  • 函数未按要求接收边数参数:poly()函数没有定义参数,直接依赖全局变量side,不符合“函数需以边数为参数”的要求,导致函数无法独立传入不同边数调用,复用性差。
  • 函数耦合全局状态:函数内部直接使用全局的turtle实例,没有将绘图对象作为参数传入或在函数内管理,使得函数和全局状态绑定,独立性不足。
  • 缺少输入合法性校验:用户可能输入小于3的数字(比如1、2),这时候无法构成正多边形,但你的代码没有做任何判断,会绘制出不符合预期的图形。
  • 角度计算未封装在函数内:角度计算360 / side依赖全局变量,没有体现“函数负责计算角度”的要求,应该基于函数接收的边数参数在内部完成计算。

修正后的代码示例

from turtle import Turtle

def draw_polygon(turtle, num_sides):
    # 校验边数合法性,正多边形至少3条边
    if num_sides < 3:
        print("正多边形边数至少为3,请重新输入!")
        return
    # 计算每次转向的角度
    turn_angle = 360 / num_sides
    # 绘制多边形
    for _ in range(num_sides):
        turtle.forward(100)
        turtle.right(turn_angle)

# 循环接收用户输入,确保输入有效
while True:
    try:
        side = int(input("Enter the number of the sides: "))
        if side >= 3:
            break
        print("边数不能小于3,请重新输入!")
    except ValueError:
        print("请输入有效的整数!")

# 创建绘图实例并调用函数
t = Turtle()
draw_polygon(t, side)

修正说明

  • 函数draw_polygon接收turtle实例和num_sides参数,完全符合作业中“函数以边数为参数”的要求,同时解耦了全局变量。
  • 角度计算逻辑放在函数内部,基于传入的边数参数完成,满足“计算角度”的要求。
  • 增加了输入合法性校验,确保用户输入的是有效整数且边数≥3,避免无效输入导致的错误。
  • 函数逻辑独立,可重复调用绘制不同边数的多边形,扩展性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:40:27