O que aparece no lugar do ponto de interrogação?
1.
>>> x
=
'abacadabra'
2.
>>> x[
1
]
=
'zeus'
3.
Traceback (most recent call last):
4.
Python Shell, prompt
2
, line
1
5.
builtins.TypeError:
'str'
object does
not
support item assignment
P2
Como saber se uma moeda está enviesada? Fazemos vários lançamentos e comparamos com o valor esperado para uma das duas opções. Como nada neste mundo é perfeito aceitamos uma pequena discrepância em relação a esse valor. Para resolver o problema, vamos devagar e por partes. Primeiro uma versão simples que apenas simula e compara com o caçoe médio esperado.
1.
def
enviesada_a(n):
2.
# lança e conta
3.
conta
=
0
4.
for
i
in
range(n):
5.
conta
=
conta
+
random.randint(
0
,
1
)
6.
# analisa
7.
return
conta !
=
n
/
/
2
Vamos partir desta solução para a solução final pretendida. A moeda estará enviesada se o valor obtido estiver fora de um dado intervalo.
01.
def
enviesada(n,perc):
02.
"""
03.
n = número de lançamentos
04.
perc = percentagem aceitável [0,1]
05.
"""
06.
# lança e conta
07.
conta
=
0
08.
for
i
in
range(n):
09.
conta
=
conta
+
random.randint(
0
,
1
)
10.
# analisa
11.
espera
=
n
/
2
12.
inf_
=
(
1
-
perc)
*
espera
13.
sup_
=
(
1
+
perc)
*
espera
14.
return
(conta < inf_)
or
(conta > sup_)
P3
Queremos desenhar bonecos como o da figura. Olhando para a figura observamos que precisamos saber desenhar balões coloridos e uma cauda que é composta de repetições de uma sequência de quatro segmentos com orientações alternadas. Uma solução simples vai envolver três passos:
1.
def
boneco(n,raio_1, raio_2, posx,posy, orientacao, cor_1,cor_2,cor_3):
2.
# desenha balão grande
3.
# desenha balão pequeno
4.
# desenha cauda
5.
pass
01.
def
bola(raio, posx,posy, orientacao, cor):
02.
turtle.penup()
03.
turtle.goto(posx,posy)
04.
turtle.pendown()
05.
turtle.setheading(orientacao)
06.
turtle.fillcolor(cor)
07.
turtle.begin_fill()
08.
turtle.circle(raio)
09.
turtle.end_fill()
10.
turtle.hideturtle()
01.
def
cauda(n, tipo, posx, posy,orientacao, comp, cor):
02.
turtle.penup()
03.
turtle.goto(posx,posy)
04.
turtle.pendown()
05.
turtle.setheading(orientacao)
06.
turtle.pencolor(cor)
07.
for
i
in
range(n):
08.
turtle.forward(comp)
09.
turtle.right(tipo
*
60
)
10.
turtle.hideturtle()
Resolvidas as três questões (balão grande, balão pequeno e cauda), vamos juntar tudo. A primeira questão é a de saber como juntamos os dois balões. A ideia é desenhar o maior e depois, a partir da posição final e da orientação, calcular a posição do centro do balão pequeno. Uma hipótese é:
01.
def
boneco(n,raio_1, raio_2, posx,posy, orientacao, cor_1,cor_2,cor_3):
02.
# desenha balão grande
03.
bola(raio_1, posx,posy, orientacao, cor_1)
04.
# desenha balão pequeno
05.
turtle.penup()
06.
turtle.setheading(orientacao
-
90
)
07.
turtle.forward(
2
*
raio_2)
08.
turtle.setheading(orientacao)
09.
turtle.pendown()
10.
bola(raio_2, turtle.xcor(),turtle.ycor(), orientacao, cor_2)
11.
# desenha cauda
1.
def
balao(n,raio_1, raio_2, posx,posy, orientacao, cor_1,cor_2,cor_3):
2.
bola(raio_1, posx,posy, orientacao, cor_1)
3.
bola(
-
raio_2, turtle.xcor(),turtle.ycor(), orientacao, cor_2)
Só falta acrescentar a cauda…
01.
def
balao(n,raio_1, raio_2, posx,posy, orientacao, cor_1,cor_2,cor_3):
02.
bola(raio_1, posx,posy, orientacao, cor_1)
03.
turtle.penup()
04.
turtle.setheading(orientacao
-
90
)
05.
turtle.forward(
2
*
raio_2)
06.
turtle.setheading(orientacao)
07.
turtle.pendown()
08.
bola(raio_2, turtle.xcor(),turtle.ycor(), orientacao, cor_2)
09.
for
i
in
range(n):
10.
cauda(
3
,(
-
1
)
*
*
i,turtle.xcor(),turtle.ycor(),turtle.heading(),
20
,cor_3)
11.
turtle.hideturtle()
Pode usar este programa para criar variantes. Por exemplo:
01.
def
baloes(n,raio_1, raio_2, posx,posy, orientacao, cor_1,cor_2,cor_3):
02.
# balão grande
03.
bola(raio_1, posx,posy, orientacao, cor_1)
04.
# n balões pequenos à volta do balão grande...
05.
for
i
in
range(n):
06.
turtle.penup()
07.
turtle.circle(raio_1,
360
/
n)
08.
turtle.pendown()
09.
bola(
-
raio_2, turtle.xcor(),turtle.ycor(), turtle.heading(), cor_2)
10.
turtle.hideturtle()
Sem comentários:
Enviar um comentário