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

Python Turtle笛卡尔网格绘制:条件中断与宽度适配问题求助

笛卡尔坐标系绘制程序问题修复

存在的问题

  • 输入宽度以50为增量从200到400时,网格绘制出现异常
  • 选择不绘制网格(No)时,程序仍会绘制部分网格
  • 代码硬编码网格线条,无法适配不同宽度的需求
  • 缩进、条件判断逻辑存在错误,导致流程混乱

修复思路

  1. 严格控制代码缩进,确保循环和条件分支内的代码逻辑正确
  2. 用循环动态计算网格线条数量,替代硬编码的固定线条,适配200-400步长50的宽度
  3. 优化网格选择的判断逻辑,只有明确选择Yes时才执行网格绘制,No或其他输入直接跳过网格绘制
  4. 简化方向控制代码,避免backward(-Height)这类易混淆的写法
  5. 修正错误的条件判断表达式

修复后的代码

import turtle

# 初始化turtle对象和画布
t = turtle.Turtle()
screen = turtle.Screen()

# 获取用户输入参数
width = int(turtle.numinput("笛卡尔坐标系", "输入宽度", 200, minval=200, maxval=400))
height = int(turtle.numinput("笛卡尔坐标系", "输入高度", 200, minval=200, maxval=400))
grid_choice = turtle.textinput("笛卡尔坐标系", "是否绘制网格?(Yes/No)")

# 绘制坐标系外框
def draw_border(w, h):
    t.penup()
    t.goto(-w, h)
    t.pendown()
    t.goto(-w, -h)
    t.goto(w, -h)
    t.goto(w, h)
    t.goto(-w, h)
    t.penup()

# 绘制垂直网格线
def draw_vertical_grid(w, h):
    current_x = -w
    # 从左边界开始,每50像素绘制一条垂直线,直到右边界
    while current_x < w:
        current_x += 50
        t.goto(current_x, -h)
        t.pendown()
        t.goto(current_x, h)
        t.penup()

# 绘制水平网格线(可选,如需完整网格可取消注释)
def draw_horizontal_grid(w, h):
    current_y = -h
    while current_y < h:
        current_y += 50
        t.goto(-w, current_y)
        t.pendown()
        t.goto(w, current_y)
        t.penup()

# 主执行逻辑
if grid_choice and grid_choice.strip().lower() == "yes":
    draw_border(width, height)
    draw_vertical_grid(width, height)
    # draw_horizontal_grid(width, height)  # 如需水平网格,取消此行注释
elif grid_choice and grid_choice.strip().lower() == "no":
    draw_border(width, height)
else:
    # 输入无效时默认只绘制外框
    draw_border(width, height)

# 保持画布窗口显示
screen.mainloop()

代码说明

  • 将重复的绘制逻辑封装为函数,提升代码可读性和可维护性
  • 通过循环动态计算网格线条数量,自动适配200、250、300、350、400等不同宽度
  • 严格判断用户的网格选择指令,避免非预期的网格绘制
  • 修正了原代码中的缩进、方向控制等逻辑错误
  • 补充了水平网格线的绘制函数,可按需启用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:53:13