2016-04-11 21 views
0

Python'da yeniyim ve bir çubuk grafikteki renkleri değiştirmemiz gereken bir dersle uğraşıyorum. Ne yaptığımı bilmiyorum. Renklerin sadece siyah yazdırdığı hata mesajı yok.Python'da çubuk grafik renklerini değiştirme

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

Şimdiye dek sahip olduğum şey budur.

Yardımın için teşekkürler!

+2

Sana begin_fill – Adib

+0

Hoşgeld SO önce barda rengini yerleştirmek zorunda düşünüyorum. Lütfen kodunuzdaki kodu biçimlendirin. –

cevap

0

Başlamadan önce bir rengin atanması gerektiğini düşünüyorum(). Bilgisayar şöyle: "Kutuyu dolduracağım ama rengim yok", bu yüzden siyahın varsayılanını kullanıyor.

Sağladığınız if ifadesi bir anlam ifade etmiyor, bu yüzden bu işlevi yukarı taşıdım ve işlev içindeki yüksekliğini inceleyebileceğiniz yer değiştirdim./Else 'i kullanmak yerine, sözlükleri tavsiye ederim.

Bu yeni kod çalışır:

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

Daha önce sahip olduğum şey buydu ve tüm çubuk grafiğini renklendirmek için çalışıyor, ancak sayının değerine ve çalıştığım hiçbir şeyin işe yaramadığına göre bireysel çubukları renklendirmem gerekiyor. –

+0

@DMondi En son düzenlemeye göz atın. Temel olarak, 'if' ifadenizi işlevde yukarı taşıdım ve farklı blokları işlemek için başka bir koşul varsa yerleştirdim. – Adib

+0

@DMondi Peki ... ne oldu? – Adib

İlgili konular