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

Python turtle库绘制小车重叠且无法显示对应车辆名称问题求解

问题修复说明

你的代码主要存在3处核心问题:

  • 坐标计算逻辑错误:x、y赋值的独立循环结束后仅保留了最后一组坐标,且在收集车辆信息的循环中嵌套了冗余的绘制循环,导致所有车辆都绘制在同一个位置产生重叠
  • 名称绘制未定位:调用write方法时没有将画笔移动到对应车辆的正上方,文本默认输出在画布原点
  • 排列方向错误:原代码按垂直方向计算y轴偏移,和预期的水平并排排布逻辑不符
修复后完整代码
import turtle
import random
turtle.setup(575,575)
pen = turtle.Turtle()
turtle.bgcolor("white")
pen.speed(0)
pen.pensize(2)
pen.hideturtle()

colorCar = []
carName = []

# 获取车辆总数
carNum = int(turtle.numinput("cars", "Enter how many cars you have: ", 1, 1, 10))

# 尺寸计算
widthPadding = turtle.window_width()/carNum 
carWidth = widthPadding * 0.6
padding = widthPadding * 0.2
carLength = carWidth * 0.4
wheelWidth = carWidth * .1

# 先收集所有车辆的颜色和名称
for i in range(carNum):
    color = turtle.textinput("car color", f"Enter Color of Car {i +1}").lower().strip() 
    colorCar.append(color)
    name = turtle.textinput("car name", f"Enter Name of Car {i +1}").lower().strip()
    carName.append(name)

# 逐辆绘制车辆
for i in range(carNum):
    # 计算当前车辆左下角坐标
    x = - turtle.window_width()/2 + padding + i * widthPadding
    y = - turtle.window_height()/2 + padding

    pen.up()
    pen.setpos(x, y)
    pen.down()

    # 绘制车身
    pen.color("black")
    pen.pensize(4)
    pen.fillcolor(colorCar[i])
    pen.begin_fill()
    for _ in range(4):
        if _%2 == 0:
            pen.forward(carWidth)
        else:
            pen.forward(carLength)
        pen.left(90)
    pen.end_fill()

    # 绘制车辆名称
    pen.up()
    pen.setpos(x + carWidth/2, y + carLength + 10)
    pen.down()
    pen.write(carName[i], align="center", font=("Arial", 12, "normal"))

turtle.done()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:27:03