O problema vai ser dividido em dois: primeiro desenvolvemos um programa para desenhar uma barra, a partir de uma dada posição e com um certo tamanho. Podemos também controlar a cor e a espessura da barra; depois, usamos este programa como auxiliar a ser usado pelo programa que desenha todas as barras contidas numa lista.
Vamos então ao primeiro sub-problema.
Também este pode ser dividido em três faes: posiciona a tartaruga; define os parâmetros (cor, espessura, etc.) e desenha.
01.
def
barra(pos,tamanho, cor,width):
02.
""" Desenha uma barra na posição pos de altura tamanho."""
03.
# posiciona
04.
turtle.up()
05.
turtle.goto(pos)
06.
turtle.setheading(
90
)
07.
# parâmetros
08.
turtle.colormode(
255
)
09.
turtle.pencolor(cor)
10.
turtle.width(width)
11.
# desenha
12.
turtle.down()
13.
turtle.forward(tamanho)
14.
turtle.hideturtle()
Simples não é?
Agora o mais complicado. Ou será que não é assim tão difícil? Se analisar o código abaixo verá que não é assim tão complexo. Temos que inicialmente desenhar o eixo horizontal e defginir os parâmetros para esse eixo (cor, espessura,...) e desenhar o eixo. Como a tartaruga fica fora do local inicial temos a seguir de a reposicionar e preparar para desenhar. Finalmente um ciclo que se serve da nossa função auxiliar para desenhar de modo iterativo cada uma das barras.
01.
def
plot_barras(lista):
02.
# Define o eixo dos Xs
03.
numero
=
len(lista)
04.
largura
=
10
05.
tamanho_recta
=
numero
*
largura
06.
# Define parâmetros do eixo dos Xs
07.
turtle.width(
5
)
08.
turtle.pencolor(
'blue'
)
09.
turtle.setheading(
0
)
10.
turtle.goto((
-
tamanho_recta
/
2
,
0
))
11.
# desenha eixo
12.
turtle.down()
13.
turtle.forward(tamanho_recta)
14.
# reposiciona a tartaruga
15.
turtle.up()
16.
turtle.goto((
-
tamanho_recta
/
2
,
0
))
17.
turtle.hideturtle()
18.
# Prepara para desenhar
19.
turtle.down()
20.
turtle.setheading(
90
)
21.
pos
=
(
-
tamanho_recta
/
2
)
+
largura
/
2
22.
# desenha as barras
23.
for
indice
in
range(numero):
24.
barra((pos,
0
), lista[indice],
'red'
,
5
)
25.
pos
=
pos
+
largura
Falta testar e ver o efeito.
1.
if
__name__
=
=
'__main__'
:
2.
plot_barras([
50
,
30
,
20
,
40
,
32
,
7
,
5
,
77
,
67
])
3.
turtle.exitonclick()

Moral da história: quando um problema aparenta ser complexo o melhor é pensar primeiro como o podemos dividir em sub-problemas mais simples!