这个代码我输出出来,文字显示不对

img

turtle.title('逃生路线')
 
turtle.tracer(0)  # Turns off screen updates
 
grid = turtle.Turtle()
STEP = 20
LENGTH = 300
split_num=15
 
 
def draw_rectangle(width,height):
    for x in range(1, 5):
        if x % 2 == 1:
            n = width
        else:
            n = height
        grid.forward(n)
        grid.right(90)
 
 
def draw_name(x,y):  #给红色区域位置加入文字
    turtle.up()  
    turtle.goto(x+12, y-15)
    turtle.write('楼梯', align="center", font=("Courier", 10, "bold"))
    turtle.down()
 
def draw_room_name(x,y,word):  #给红色区域位置加入文字
    turtle.up()  
    turtle.goto(x+12, y-15)
    turtle.write(word, align="center", font=("Courier", 8, "bold"))
    turtle.down()
 
 
def draw_floor(floor,gap): # 画楼层的形状
    grid.penup()
    grid.setpos(-LENGTH/2-STEP, (LENGTH-gap*STEP))
    x=-LENGTH/2-STEP
    y=LENGTH-gap*STEP
    draw_room_name(x,y,'俱')
    draw_room_name(x,y-10,'乐')
    draw_room_name(x,y-20,'部')
    grid.pendown()
    for x in range(1, 5): # 画每个楼层最左边的矩形,宽为20,高为60
        if x % 2 == 1:
            n = 20
        else:
            n = 60
        grid.forward(n)
        grid.right(90)
 
    turtle.up() # 画楼层的名字
    turtle.goto(-LENGTH/2-2*STEP, LENGTH-STEP*1.5-gap*STEP)
    turtle.write('第{}层'.format(floor), align="center", font=("Courier", 14, "bold"))
    turtle.down()
    turtle.hideturtle()
 
    for i in range(0, LENGTH+STEP, STEP):  # 画楼层的结构
        if(i!=LENGTH):
            if(i==STEP or i==12*STEP): # 其中楼梯区域要填充红色
                grid.begin_fill()
                grid.fillcolor('#FF0000')
                grid.penup()
                grid.setpos((-LENGTH/2 + i), LENGTH-gap*STEP)
                x=-LENGTH/2 + i
                y=LENGTH-gap*STEP
                draw_name(x,y)
                grid.pendown()
                draw_rectangle(20,20)
                
                grid.end_fill()
            else:  # 其他地方只需要画矩形
                grid.penup()
                grid.setpos((-LENGTH/2 + i), LENGTH-gap*STEP)
                x=-LENGTH/2 + i
                y=LENGTH-gap*STEP
                draw_room_name(x,y,'房间')
                grid.pendown()
                draw_rectangle(20,20)
        else: # 画从左往右最后一个矩形,其中最后一个矩形的还要包括右边界
            grid.penup()
            grid.setpos((-LENGTH/2 + i), LENGTH-gap*STEP) # go to start vertical line possition
            grid.pendown()
            grid.setpos((-LENGTH / 2 + i), LENGTH-2*STEP-gap*STEP)
 
    grid.penup() 
    grid.setpos(-LENGTH/2, (-0-2*STEP+LENGTH-gap*STEP)) # go to start hoz line possition
    grid.pendown()
    grid.setpos(LENGTH/2, (0-2*STEP+LENGTH-gap*STEP))
 
    for i in range(0, LENGTH, STEP): # 画这层楼的箭头下面的矩形区域
        grid.penup()
        grid.setpos((-LENGTH/2 + i), LENGTH-2*STEP-gap*STEP) # go to start vertical line possition
        x=-LENGTH/2 + i
        y=LENGTH-2*STEP-gap*STEP
        draw_room_name(x,y,'房间')
        grid.pendown()
        draw_rectangle(20,20)
    grid.hideturtle()
 
for i in range(7): # 循环遍历画每一层楼层
    gap=i*4
    floor=7-i
    draw_floor(floor,gap) 
    if(i==0 or i==2 or i==4): # 给第753层楼画箭头
        arraw1 = turtle.Turtle() # 画左边的箭头
        arraw1.penup()
        arraw1.setpos(-150,LENGTH-STEP-10-gap*STEP)
        arraw1.pendown()
        arraw1.forward(240)
 
        arraw2 = turtle.Turtle()
        arraw2.penup() # 画右边的箭头
        arraw2.setpos(150, LENGTH-STEP-10-gap*STEP)
        arraw2.pendown()
        arraw2.left(180)
        arraw2.forward(50)
    if(i==1 or i==3 or i==5): # 给第642层录画箭头
        arraw1 = turtle.Turtle()
 
        arraw1.penup() # 画左箭头
        arraw1.setpos(-150, LENGTH-STEP-10-gap*STEP)
        arraw1.pendown()
        arraw1.forward(20)
 
        arraw2 = turtle.Turtle()
        arraw2.penup() # 画右边的箭头
        arraw2.setpos(150, LENGTH-STEP-10-gap*STEP)
        arraw2.pendown()
        arraw2.left(180)
        arraw2.forward(260)
    elif(i==6): # 给第一层楼画箭头
        arraw1 = turtle.Turtle()
 
        arraw1.penup() # 最左边的箭头
        arraw1.setpos(-150, LENGTH-STEP-10-gap*STEP)
        arraw1.pendown()
        arraw1.forward(20) 
 
 
        arraw2 = turtle.Turtle() # 最右边的箭头
        arraw2.penup()
        arraw2.setpos(150, LENGTH-STEP-10-gap*STEP)
        arraw2.pendown()
        arraw2.left(180)
        arraw2.forward(50)
 
        arraw3 = turtle.Turtle() # 中间靠右的箭头
        arraw3.penup()
        arraw3.setpos(0, LENGTH-STEP-10-gap*STEP)
        arraw3.pendown()
        arraw3.forward(90)
 
        arraw4 = turtle.Turtle() # 中间靠左的箭头
        arraw4.penup()
        arraw4.setpos(0, LENGTH-STEP-10-gap*STEP)
        arraw4.pendown()
        arraw4.left(180)
        arraw4.forward(120)
 
def draw_description(x,y):  #给红色区域位置加入文字
    turtle.up()  
    turtle.goto(x+60, y-5)
    turtle.write('疏散路线', align="center", font=("Courier", 10, "bold"))
    turtle.down()
 
def draw_tuli(x,y):
    turtle.up()  
    turtle.goto(x, y-5)
    turtle.write('图例:', align="center", font=("Courier", 10, "bold"))
    turtle.down()
 
def draw_description_v2(x,y):  #给红色区域位置加入文字
    turtle.up()  
    turtle.goto(x+40, y-15)
    turtle.write('房间', align="center", font=("Courier", 10, "bold"))
    turtle.down()
 
arraw5 = turtle.Turtle() # 中间靠左的箭头
arraw5.penup()
x=-LENGTH/2
y=LENGTH-5*STEP-gap*STEP
arraw5.setpos(x, y)
draw_description(x,y)
draw_tuli(x-STEP,y)
arraw5.pendown()
arraw5.forward(30)
 
arraw6 = turtle.Turtle() # 中间靠左的箭头
arraw6.penup()
x=-LENGTH/2+5*STEP
y=LENGTH-4.5*STEP-gap*STEP
arraw6.setpos(x, y)
draw_description_v2(x,y)
arraw6.pendown()
for x in range(1, 5): # 画每个楼层最左边的矩形,宽为20,高为60
    if x % 2 == 1:
        n = 20
    else:
        n = 20
    arraw6.forward(n)
    arraw6.right(90)
arraw6.hideturtle()
 
 
def draw_description_v3(x,y):  #给红色区域位置加入文字
    turtle.up()  
    turtle.goto(x, y+25)
    turtle.write('N', align="center", font=("Courier", 10, "bold"))
    turtle.down()
 
arraw2 = turtle.Turtle() # 最右边的箭头
arraw2.penup()
x=200
y=LENGTH-STEP
arraw2.setpos(200, LENGTH-STEP)
draw_description_v3(x,y)
arraw2.pendown()
arraw2.left(90)
arraw2.forward(20)
 
turtle.update() 
turtle.exitonclick() # 按任意按键退出

文字不是正常的中文吗?只是你的字体选的不合适,可以用“宋体”,"仿宋",bold不要用粗体就正常了
比如选font=("仿宋", 8, "") ,结果如图

img

可能是因为中文字符集的问题导致文字显示不正确。可以尝试更改Python环境的字符集,或者将中文文字替换成英文文字。

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

这段代码使用了Python的Turtle模块来绘制一个逃生路线的示意图。下面是对代码的逐行解释:

  1. turtle.title('逃生路线') - 设置窗口标题为"逃生路线"。
  2. turtle.tracer(0) - 关闭屏幕更新,以便加快绘制速度。
  3. grid = turtle.Turtle() - 创建一个名为grid的乌龟实例。
  4. STEP = 20 - 定义每个方格的边长为20。
  5. LENGTH = 300 - 定义绘制区域的长度为300。
  6. split_num=15 - 定义楼层数量为15。

接下来的代码是一些辅助函数和绘制楼层的逻辑。

函数draw_rectangle(width,height)用于绘制指定宽度和高度的矩形。它通过循环和条件判断绘制矩形的四条边。

函数draw_name(x,y)用于在指定位置(x, y)处添加文字"楼梯"。

函数draw_room_name(x,y,word)用于在指定位置(x, y)处添加指定文字。

函数draw_floor(floor,gap)用于绘制每一层的楼层形状。它首先根据楼层数和间隔计算出每层的起始位置,并调用其他函数绘制矩形和添加文字。

接下来的循环用于绘制每一层的楼层,包括楼层形状和箭头。

最后,绘制了一些描述文字和图例。

汉字编码问题?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^