在Python中更改条形图颜色

在Python中更改条形图颜色,python,Python,我是Python新手,我正在努力学习我们书中的一节课,我们必须改变条形图中的颜色。我不确定我做错了什么。没有错误消息,颜色只是打印黑色 import turtle tess = turtle.Turtle() def draw_bar(t, height): t.begin_fill() t.left(90) t.forward(height) t.write(" "+ str(height)) t.right(90) t.forward(

我是Python新手,我正在努力学习我们书中的一节课,我们必须改变条形图中的颜色。我不确定我做错了什么。没有错误消息,颜色只是打印黑色

import turtle
tess = turtle.Turtle()

def draw_bar(t, height):

    t.begin_fill() 
    t.left(90)
    t.forward(height)
    t.write(" "+ str(height))

    t.right(90)
    t.forward(40)
    t.right(90)
    t.forward(height)
    t.penup()
    t.left(90)
    t.end_fill() 
    t.forward(10)
    t.pendown()

    tess.pensize(3)

    if xs is 48:
        tess.color("blue")
    if xs is 117:
        tess.color("yellow")

wn = turtle.Screen() 
wn.bgcolor("lightgreen")



xs = [48,117,200,240,160,260,220]

for a in xs:
    draw_bar(tess, a)

wn.mainloop()
这就是我目前所拥有的


谢谢你的帮助

我认为您需要在开始填充之前指定颜色()。因为计算机是这样的:“好吧,我会填满这个盒子,但是我没有颜色”,所以它使用默认的黑色

您提供的if语句没有意义,因此我在函数中将其上移,并在可以检查函数内高度的位置对其进行了修改。我建议使用字典,而不是if/else

这一新准则的作用是:

import turtle
tess = turtle.Turtle()

def draw_bar(t, height):

    # Select Color
    if height is 48:
        color = "blue"
    elif height is 117:
        color = "yellow"
    else:
        color = "black"

    # Assign color
    t.color(color)

    # The rest of your code
    t.begin_fill() 
    t.left(90)
    t.forward(height)
    t.write(" "+ str(height))

    t.right(90)
    t.forward(40)
    t.right(90)
    t.forward(height)
    t.penup()
    t.left(90)
    t.end_fill() 
    t.forward(10)
    t.pendown()

    tess.pensize(3)

wn = turtle.Screen() 
wn.bgcolor("lightgreen")


xs = [48,117,200,240,160,260,220]

for a in xs:
    draw_bar(tess, a)

wn.mainloop()

我想你必须在开始之前确定酒吧的颜色。请在您的帖子中设置代码的格式。这是我以前使用过的,它可以为整个条形图着色,但我需要根据数字的值为各个条形图着色,而我尝试过的任何操作都不起作用。@DMondi查看最新的编辑。基本上,我在函数中向上移动了您的“if”语句,并放置了if-else条件来处理不同的块。@DMondi那么……发生了什么事?