2016-04-11 230 views
0

我是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(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() 

這是我到目前爲止。

感謝您的幫助!

+2

我認爲你必須把欄的顏色前begin_fill – Adib

+0

歡迎SO。請在您的帖子中格式化代碼。 –

回答

0

我認爲你需要在begin_fill()之前分配一個顏色。因爲計算機是這樣的:「好吧,我會填滿盒子,但我沒有顏色」,所以它使用黑色的默認值。

你提供的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() 
+0

這就是我以前的樣子,它適用於着色整個條形圖,但是我需要根據數字的什麼值以及我已經嘗試過的任何東西已經工作,爲單個條形上色。 –

+0

@DMondi查看最新的編輯。基本上,我把你的'if'聲明放在函數中,如果有其他條件來處理不同的塊。 – Adib

+0

@DMondi那麼...發生了什麼? – Adib

相關問題