You are on page 1of 10

p re vio u s | n e x t | in d e x

C m o P e n sa r co m o u n In fo rm tico : E l a p re n d e r co n P yth o n vE d 2 d o cu m e n ta tio n


3 . H o la ,
t o r t u g u it a s !
H a y m u ch o s m d u lo s d e P yth o n q u e p ro p o rcio n a n ca ra cte rstica s m u y p o d e ro sa s q u e p o d e m o s u sa r e n
n u e stro s p ro p io s p ro g ra m a s. A lg u n o s d e e sto s p u e d e n e n via r co rre o e le ctr n ico , o b u sca r p g in a s w e b . A
co n tin u a ci n ve re m o s e n e ste ca p tu lo cre a r to rtu g a s y co n se g u ir q u e d ib u je n fo rm a s y p a tro n e s.
La s to rtu g a s so n d ive rtid a s, p e ro e l ve rd a d e ro p ro p sito d e l ca p tu lo e s e n se a rn o s a n o so tro s m ism o s u n
p o co m s d e P yth o n y e l d e sa rro llo d e n u e stro te m a d e l p e n sa m ie n to co m p u ta cio n a l , o p e n sa r co m o u n
cie n tfico d e la co m p u ta ci n . La m a yo ra d e P yth o n cu b re a q u , a u n q u e se e stu d ia r n e n p ro fu n d id a d m s
a d e la n te .

3 .1 . N u e s tro p rim e r p ro g ra m a d e to rtu g a


V a m o s a in te n ta r u n p a r d e ln e a s e n la te rm in a l d e P yth o n p a ra cre a r u n a n u e va to rtu g a y e m p e z a r a
d ib u ja r u n re ct n g u lo . (V a m o s a lla m a r a la va ria b le q u e se re fie re a n u e stra p rim e ra to rtu g a a le x , p e ro
p u e d e e le g ir o tro n o m b re si u ste d sig u e la s re g la s d e d e n o m in a ci n d e l ca p tu lo a n te rio r).

1 >>> import turtle


2 >>> turtle.setup(800, 600)
3 >>> alex = turtle.Turtle()
4 >>> alex.forward(300)
5 >>> alex.left(90)
6 >>> alex.forwrad(200)
7 >>> exit()

D e sp u s d e la se g u n d a o rd e n , u n a n u e va ve n ta n a se a b rir . E l te rce r co m a n d o co lo ca u n cu rso r lla m a n d o


ca ri o sa m e n te a u n a tortuga e n e ste m d u lo q u e h e m o s lla m a d o alex.
La s sig u ie n te s tre s ln e a s m u e ve n a le x h a cia a d e la n te , d a n u n a vu e lta h a cia la iz q u ie rd a , y lo m u e ve h a cia
a d e la n te u n a ve z m s, co m p le ta n d o d o s la d o s d e u n re ct n g u lo . D e sp u s d e e sto s co m a n d o s se h a n
in tro d u cid o , a p a re ce r u n a ve n ta n a q u e se p a re ce a e sto :

A q u h a y u n p a r d e co sa s q u e u ste d n e ce sita e n te n d e r a ce rca d e e ste p ro g ra m a .

La p rim e ra ln e a le d ice a P yth o n p a ra ca rg a r u n m d u lo lla m a d o turtle. D ich o m d u lo n o s tra e d o s


n u e vo s tip o s q u e p o d e m o s u tiliz a r: e l tip o d e Turtle, y e l tip o d e Screen. La n o ta ci n d e p u n to s
turtle.Turtle sig n ifica E l tip o d e to rtu g a q u e se d e fin e e n e l m d u lo d e to rtu g a . (R e cu e rd a q u e
P yth o n d istin g u e e n tre m a y scu la s y m in scu la s, a s q u e e l n o m b re d e l m d u lo , co n u n a t m in scu la ,
e s d ife re n te a l ca r cte r T o rtu g a .)
A co n tin u a ci n , cre a r y a b rir lo q u e lla m a m o s u n a p a n ta lla (q u e se p e rfe r lla m a rlo d e u n a ve n ta n a ),
q u e se le a sig n a a la va ria b le wn. C a d a ve n ta n a co n tie n e u n l i e n z o ( c a n v a s ) , q u e e s e l re a d e n tro d e
la ve n ta n a e n la q u e p o d e m o s sa ca r. E n la ln e a 3 cre a m o s u n a to rtu g a . La va ria b le d e alex se h a ce

converted by W eb2PDFConvert.com
p a ra re fe rirse a e sta to rtu g a . E sta s tre s p rim e ra s ln e a s n o s se p re p a ra , listo p a ra h a ce r a lg u n a s co sa s
tile s.
E n la s ln e a s 4 -6 , in stru im o s a l o b je c t o d e a le x q u e se m u e va , y q u e g ire . H a ce m o s e sto m e d ia n te la
i n v o c a c i n , o la a ctiva ci n , lo s m t o d o s d e a le x e sta s so n la s in stru ccio n e s q u e to d a s la s
to rtu g a s sa b e n c m o re sp o n d e r.
La ltim a ln e a ta m b i n d e se m p e a u n p a p e l: la va ria b le wn se re fie re a la ve n ta n a a ctiva . C u a n d o se
in vo ca e l m to d o exitonclick, d e tie n e la e je cu ci n d e l p ro g ra m a , y e sp e ra a q u e e l u su a rio h a g a clic
co n e l ra t n e n a lg n lu g a r d e la ve n ta n a . C u a n d o e ste e ve n to click se p ro d u ce , la re sp u e sta e s ce rra r
la ve n ta n a d e la to rtu g a y la sa lid a (la e je cu ci n d e la p a ra d a ) d e l p ro g ra m a d e P yth o n .

A d e la n te , h a g a clic e n la ve n ta n a d e sp e s d e h a b e r in tro d u cid o e l ltim o co m a n d o .


U n o b je to p u e d e te n e r va rio s m to d o s la s co sa s q u e p u e d e h a ce r y q u e ta m b i n p u e d e n te n e r
a t r i b u t o s (a ve ce s so n lla m a s p ro p ie d a d e s ). P o r e je m p lo , ca d a to rtu g a (tu rtle ) tie n e u n a trib u to d e co lo r .
E l m to d o d e in vo ca ci n alex.color("rojo") q u e h a r a le x ro jo , y e l d ib u jo se r d e co lo r ro jo ta m b i n .
E l co lo r d e la to rtu g a (tu rtle ), la a n ch u ra d e la p lu m a , la p o sici n d e la to rtu g a d e n tro d e la ve n ta n a , la cu a l
fo rm a e n q u e se e n fre n ta , y a s su ce siva m e n te , so n p a rte s d e su e s t a d o a ctu a l. D e l m ism o m o d o , e l o b je to
d e la ve n ta n a tie n e u n co lo r d e fo n d o y u n te x to e n la b a rra d e ttu lo , y u n ta m a o y p o sici n e n la p a n ta lla .
T o d o s e llo s fo rm a n p a rte d e l e sta d o d e l o b je cto d e la ve n ta n a .
U n b u e n n m e ro d e m to d o s q u e e x iste n , q u e n o s p e rm ite n m o d ifica r la s to rtu g a s y lo s o b je to s d e la
ve n ta n a . V a m o s a m o stra r u n p a r. S lo h e m o s co m e n ta d o la s lin e a s q u e so n d ife re n te s a lo s e je m p lo s
a n te rio re s (y q u e h e m o s u tiliz a d o u n n o m b re d e va ria b le d ife re n te p a ra e sta to rtu g a ). A d e m s, va m o s a
p o n e r e ste e je m p lo e n u n scrip t lla m a d o tess.py, ya q u e e s co n se g u ir u n p o co d e m a sia d o tie m p o p a ra
e scrib ir u n a y o tra ve z e n e l in t rp re te :

1 import turtle
2
3 turtle.setup(800, 600) # establecer el tamao de la ventana de 800 por 600 pxeles
4 wn = turtle.Screen() # establecer wn al objeto de la ventana
5 wn.bgcolor("lightgreen") # establecer el color de fondo de la ventana
6 wn.title("Hola, Tess!") # establecer el ttulo de la ventana
7 tess = turtle.Turtle()
8 tess.color("blue") # hacer tess azul
9 tess.pensize(3) # establecer el ancho de la pluma
10 tess.forward(300)
11 tess.left(120)
12 tess.forward(300)
13
14 wn.exitonclick()

La e je cu ci n d e e ste p ro g ra m a cre a r u n a ve n ta n a g r fica q u e se ve a s:

C u a n d o e je cu ta m o s e ste p ro g ra m a , e sta n u e va ve n ta n a a p a re ce , y p e rm a n e ce r e n la p a n ta lla h a sta q u e


h a g a clic e n l.
E x ten d er es te p ro g ra m a ...

converted by W eb2PDFConvert.com
1. M o dific arem o s es te pro gram a antes de c rear la v entana, s e le pedir al us uario que intro duzc a el c o lo r de
fo ndo des eado . Se debe alm ac enar las res pues tas del us uario en una v ariable, y m o dific ar el c o lo r de la
v entana de ac uerdo a lo s des eo s del us uario . (Pis ta: s e puede enc o ntrar una lis ta de no m bres de c o lo res
perm itido s en http://w w w .tc l.tk /m an/tc l8.4/Tk C m d/c o lo rs .htm . Inc luy e alguno s bas tante inus uales , c o m o
peac h puff (bo c anada de m elo c o t n) y H o tPink (ro s ado c aliente). )
2. Lo s c am bio s s im ilares para perm itir al us uario , en tiem po de ejec uc i n, para es tablec er el c o lo r de Tes s .
3. H aga lo m is m o para el anc ho de la plum a de Tes s . Sugerenc ia: el dilo go c o n el us uario dev o lv er una c adena,
pero el m to do de tes s pensize es pera que s u argum ento es un entero . A s que tendrs que c o nv ertir la
c adena en un entero de pas ar a pensize.

3 .2 . C a s o s u n a m a n a d a d e to rtu g a s
A l ig u a l q u e p o d e m o s te n e r m u ch o s e n te ro s d ife re n te s e n u n p ro g ra m a , p o d e m o s te n e r m u ch a s to rtu g a s.
C a d a u n o d e e llo s se lla m a u n a i n s t a n c i a . C a d a in sta n cia tie n e su s p ro p io s a trib u to s y m to d o s - p o r lo
q u e A le x p u e d e d ib u ja r co n u n l p iz n e g ro d e lg a d o y e sta r e n a lg u n a p o sici n , m ie n tra s q u e T e ss q u e
p o d ra e sta r p a sa n d o e n su p ro p ia d ire cci n co n u n b o lg ra fo d e co lo r ro sa d e g ra sa (fa t p in k). A s q u e a q u
e st lo q u e su ce d e cu a n d o A le x te rm in a su re ct n g u lo , y T e ss co m p le ta su tri n g u lo , e n u n p ro g ra m a
lla m a d o :d o w n lo a d : tess_y_alex.py <recursos/cap03/tess_y_alex.py>:

1 import turtle
2
3 # setup the window and its attributes
4 turtle.setup(800, 600)
5 wn = turtle.Screen()
6 wn.bgcolor("lightgreen")
7 wn.title("Tess & Alex")
8
9 # instantiate (create) tess and set her attributes
10 tess = turtle.Turtle()
11 tess.color("hotpink")
12 tess.pensize(5)
13
14 # instantiate alex
15 alex = turtle.Turtle()
16
17 # draw an equilateral triangle with tess
18 tess.forward(320)
19 tess.left(120)
20 tess.forward(320)
21 tess.left(120)
22 tess.forward(320)
23 tess.left(120)
24
25 # turn tess around and move her away from the origin
26 tess.right(180)
27 tess.forward(320)
28
29 # make alex draw a square
30 alex.forward(200)
31 alex.left(90)
32 alex.forward(200)
33 alex.left(90)
34 alex.forward(200)
35 alex.left(90)
36 alex.forward(200)
37
38 wn.exitonclick()

q u e g e n e ra e ste cu a n d o se e je cu ta :

converted by W eb2PDFConvert.com
A q u e st n a lg u n a s C m o p e n sa r co m o u n e x p e rto e n co m p u ta ci n o b se rva cio n e s:

H a y 3 6 0 g ra d o s e n u n crcu lo co m p le to . S i se su m a n to d o s la s vu e lta s q u e u n to rtu g a h a ce , n o


im p o rta la s m e d id a s q u e se p ro d u jo e n tre la s cu rva s , u ste d p u e d e f cilm e n te a ve rig u a r si se su m a n a
u n m ltip lo d e 3 6 0 . E sto d e b e co n ve n ce rn o s d e q u e A le x se e n fre n ta e x a cta m e n te e n la m ism a
d ire cci n q u e te n a cu a n d o fu e cre a d o . ( C o n ve n io s d e la g e o m e tra a 0 g ra d o s m ira n d o h a cia e l E ste ,
y e se e s e l ca so a q u .)
P o d ra m o s h a b e r d e ja d o fu e ra e l ltim o tu rn o d e A le x , p e ro e so n o h a b ra sid o ta n sa tisfa cto ria . S i se
le p re g u n ta a d ib u ja r u n a fo rm a ce rra d a co m o u n cu a d ra d o o u n re ct n g u lo , q u e e s u n a b u e n a id e a
p a ra co m p le ta r to d a s la s vu e lta s y d e ja r a la to rtu g a d o n d e co m e n z , e n la m ism a d ire cci n co n la
q u e co m e n z . E sto h a ce q u e e l ra z o n a m ie n to so b re e l p ro g ra m a y lo s tro z o s d e la co m p o sici n d e
c d ig o e n p ro g ra m a s m s g ra n d e s m s f cil p a ra n o so tro s lo s se re s h u m a n o s.
H icim o s lo m ism o co n te ss: sa c su tri n g u lo , y se co n virti a tra v s d e u n to ta l 3 6 0 g ra d o s. E n to n ce s
e lla se d io la vu e lta y se tra sla d a u n la d o . In clu so la ln e a e n b la n co 2 3 e s u n a p ista a ce rca d e c m o
e l fra ccio n a m ie n to m e n ta l d e l p ro g ra m a d o r e st tra b a ja n d o : e n cu a n to a g ra n d e s m o vim ie n to s d e
T e ss se fra g m e n ta d a co m o d ib u ja r e l tri n g u lo (ln e a s 1 7 -2 2 ) y lu e g o se a le ja n d e l o rig e n (ln e a s
2 5 y 2 6 ).
U n o d e lo s u so s p rin cip a le s d e lo s co m e n ta rio s e s re g istra r su fra ccio n a m ie n to m e n ta l, y g ra n d e s
id e a s. N o sie m p re so n e x p lcita s e n e l c d ig o .
Y , u h -h u h , d o s to rtu g a s p u e d e n n o se r su ficie n te s p a ra u n re b a o , p e ro u ste d co n sig u e la id e a !

3 .3 . El b u c le fo r
C u a n d o n o so tro s d ib u ja m o s e l cu a d ra d o , fu e a lg o b a sta n te te d io so . T u vim o s q u e p a sa r y lu e g o a su ve z
cu rva r, e ct, e ct., e n cu a tro o ca sio n e s. S i tu vi ra m o s q u e d ib u ja r u n h e x g o n o , o u n O ct g o n o , o u n
p o lg o n o d e 4 2 la d o s, h u b ie ra sid o u n a p e sa d illa .
P o r lo q u e u n b lo q u e d e co n stru cci n b sico d e to d o s lo s p ro g ra m a s d e b e d e se r ca p a z d e re p e tir e l
c d ig o , u n a y o tra ve z .
P yth o n b u cle f o r re su e lve e sto p a ra n o so tro s.
D ig a m o s q u e te n g o a lg u n o s a m ig o s, y n o s g u sta ria e n via rle s u n co rre o e le ctr n ico ca d a in vit n d o lo s a
n u e stro p a rtid o . D a d o q u e n o sa b e m o s c m o e n via r co rre o e le ctr n ico , sin e m b a rg o , p o r e l m o m e n to s lo
te n d re m o s q u e im p rim ir u n m e n sa je p o r ca d a a m ig o :

for f in ["Joe", "Amy", "Brad", "Angelica", "Zuki", "Thandi", "Paris"]:


invitacin = "Hola " + f + ". Por favor, ven a mi fiesta el sbado!
print(invitacin)

C u a n d o lle va m o s a ca b o e sto , la sa lid a se ve a si:

converted by W eb2PDFConvert.com
Hola Joe. Por favor, ven a mi fiesta el sbado!
Hola Amy. Por favor, ven a mi fiesta el sbado!
Hola Brad. Por favor, ven a mi fiesta el sbado!
Hola Angelina. Por favor, ven a mi fiesta el sbado!
Hola Tsuki. Por favor, ven a mi fiesta el sbado!
Hola Thandi. Por favor, ven a mi fiesta el sbado!
Hola Pars. Por favor, ven a mi fiesta el sbado!

E stu d io d e e ste e je m p lo a te n ta m e n te y te n g a e n cu e n ta lo sig u ie n te :

["Joe", "Amy", "Brad", "Angelica", "Zuki", "Thandi", "Paris"] e s u n n u e vo tip o d e d a to s, lla m a d o


l i s t a , q u e p u e d e co n te n e r u n co n ju n to d e va lo re s. V a m o s a e stu d ia r la s lista s d e m a n e ra m s fo rm a l
e n u n ca p tu lo p o ste rio r, p e ro p o r a h o ra s lo tie n e q u e sa b e r q u e p o se e n u n co n ju n to d e va lo re s
se p a ra d o s p o r co m a s y e n ce rra d o s e n tre co rch e te s ([,]).
f e n e sta d e cla ra ci n for q u e se lla m a la v a r i a b l e d e b u c l e (lo o p va ria b le ). Q u e se a sig n a a ca d a
va lo r e n la lista , u n o a la ve z y e n e l o rd e n e n q u e a p a re ce n e n la lista .
Ln e a s 2 y 3 so n e l c u e r p o d e l b u c l e (lo o p b o d y). E l cu e rp o d e l b u cle e s sie m p re sa n g ra . E l
sa n g ra d o se d e te rm in a e x a cta m e n te q u e sta d o s e st n e n e l b u cle .
E n ca d a ite ra ci n o p a so d e l b u cle , e n p rim e r lu g a r u n a co m p ro b a ci n se re a liz a p a ra ve r si h a y
e le m e n to s a n m s p a ra se r p ro ce sa d o . S i n o h a y n in g u n o a la iz q u ie rd a (e sto se lla m a la c o n d i c i n
d e f i n a l i z a c i n d e l b u cle ), e l ciclo h a te rm in a d o . E je cu ci n d e l p ro g ra m a co n tin a e n la sig u ie n te
se n te n cia d e sp u s d e q u e e l cu e rp o d e l b u cle .
S i h a y te m a s q u e n o h a ya n p ro ce sa d o , la va ria b le d e b u cle se a ctu a liz a p a ra h a ce r re fe re n cia a l
sig u ie n te e le m e n to d e la lista . E sto sig n ifica , e n e ste ca so , q u e e l cu e rp o d e l b u cle se e je cu ta a q u
sie te ve ce s, y ca d a ve z q u e f se re fie re n a u n a m ig o d ife re n te .
A l fin a l d e ca d a e je cu ci n d e l cu e rp o d e l b u cle , P yth o n vu e lve a la for d e cla ra ci n , p a ra ve r si h a y m s
e le m e n to s p a ra se r m a n ip u la d o s.

3 .4 . F lu jo d e la e je c u c i n d e l b u c le fo r
C o m o u n p ro g ra m a se e je cu ta , e l in t rp re te sie m p re co m p ru e b a q u e la d e cla ra ci n e st a p u n to d e se r
e je cu ta d o . Lla m a m o s a e sto e l c o n t r o l d e f l u jo , e l f l u jo d e e je c u c i n d e l p ro g ra m a . C u a n d o lo s
h u m a n o s e je cu ta n lo s p ro g ra m a s, a m e n u d o u sa n su s d e d o s p a ra se a la r a ca d a in stru cci n e n tu rn o . P o r
lo q u e p o d ra p e n sa r e n e l flu jo d e co n tro l co m o d e d o q u e se m u e ve e n P yth o n .
C o n tro l d e flu jo h a sta a h o ra h a sid o e stricta m e n te d e a rrrib a a a b a jo , u n a d e cla ra ci n a la ve z . E l la z o d e
b u cle for ca m b ia e sto .
C o n tro l d e flu jo e s a m e n u d o f cil d e visu a liz a r y co m p re n d e r si se d ib u ja u n d ia g ra m a d e flu jo . E sto
m u e stra lo s p a so s e x a cto s y la l g ica d e c m o fu n cio n a la in stru cci n for p a ra e je cu ta r.

3 .5 . El b u c le s im p lific a n u e s tro p ro g ra m a d e to rtu g a


P a ra d ib u ja r u n cu a d ra d o , n o s g u sta ra h a ce r lo m ism o cu a tro ve ce s m o ve r la to rtu g a , y d a rle vu e lta .
A n te s u tiliz b a m o s 8 ln e a s q u e a le x u tiliz a b a p a ra d ib u ja r cu a tro la d o s d e u n cu a d ra d o . E sto h a ce
e x a cta m e n te lo m ism o , p e ro u tiliz a n d o s lo tre s ln e a s:

for i in [0, 1, 2, 3]:


alex.forward(250) # forward (adelante)
alex.left(90) # left (izquierda)

M ie n tra s q u e a h o rra r u n a s ln e a s d e c d ig o q u e p u e d e se r co n ve n ie n te , p e ro n o e s e l p ro b le m a a q u . Lo
q u e e s m u ch o m s im p o rta n te e s q u e h e m o s e n co n tra d o u n p a tr n d e re p e tici n d e la s d e cla ra cio n e s, y
re o rg a n iz a d o n u e stro p ro g ra m a p a ra re p e tir e l p a tr n . E n co n tra r lo s tro z o s y d e a lg u n a m a n e ra co n se g u ir
n u e stro s p ro g ra m a s o rg a n iz a d o s a lre d e d o r d e lo s tro z o s e s u n a h a b ilid a d vita l e n C m o p e n sa r co m o u n
cie n tfico d e la co m p u ta ci n .
Lo s va lo re s e n la lista , [0, 1, 2, 3], se le s p ro p o rcio n p a ra q u e e l cu e rp o d e l b u cle e je cu ta cu a tro ve ce s.
P o d ra m o s h a b e r u sa d o cu a lq u ie ra d e lo s cu a tro va lo re s, p e ro e sto s so n lo s co n ve n cio n a le s p a ra su u so . D e
h e ch o , so n ta n p o p u la re s q u e P yth o n n o s d a u n a e sp e cia l fu n ci n incorporada d e se rie p a ra e ste p ro p sito .

>>> for i in range(4):


... print(i)
...
0
1
2
3
>>>

converted by W eb2PDFConvert.com
T e n g a e n cu e n ta q u e :

range (ra n g o ) cre a u n o b je to q u e p u e d e o fre ce r u n a se cu e n cia d e va lo re s p a ra e l b u cle for.


C ie n tfico s d e la co m p u ta ci n le g u sta co n ta r d e sd e 0 ! C u a n d o se p a sa u n range (ra n g o ) a rg u m e n to
d e tip o e n te ro , lo s va lo re s a sig n a d o s a la va ria b le d e b u cle e m p e z a r a 0 , y su b ir p o r u n o a u n o m e n o s
q u e e l va lo r d e l a rg u m e n to .

T a m b i n p o d e m o s cre a r u n a lista d e n m e ro s a l p a sa r la sa lid a d e u n a lla m a d a a la fu n ci n d e range


(ra n g o ) a la fu n ci n d e tip o d e la list (lista ):

>>> list(range(6))
[0, 1, 2, 3, 4, 5]
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In ten te lo s ig u ien te ...


Q u list(range(0)) a c am bio ? Q u pas a c o n la list(range(1))?

N u e stro p e q u e o tru co a n te s p a ra a se g u ra rse d e q u e Alex h iz o la ltim a vu e lta p a ra co m p le ta r 3 6 0 g ra d o s


h a d a d o su s fru to s: si n o h u b i ra m o s h e ch o e so , e n to n ce s n o h a b ra sid o ca p a z d e u tiliz a r u n b u cle p a ra e l
cu a rto la d o d e e l cu a d ra d o . S e h a b ra co n ve rtid o e n u n ca so e sp e cia l, d ife re n te d e lo s o tro s la d o s. C u a n d o
se a p o sib le , n o s g u sta ra m u ch o p re fe rid a m e n te h a ce r n u e stro c d ig o a ju sta d o a u n p a tr n g e n e ra l, e n
lu g a r d e te n e r q u e cre a r u n ca so e sp e cia l.
A s q u e p a ra re p e tir a lg o cu a tro ve ce s, u n b u e n p ro g ra m a d o r d e P yth o n p o d ra h a ce r e sto :

for i in range (4):


alex.forward (250)
alex.left (90)

A e sta s a ltu ra s ya d e b e ra se r ca p a z d e ve r la fo rm a p a ra ca m b ia r n u e stro p ro g ra m a a n te rio r p a ra q u e tess


ta m b i n p u e d a u tiliz a r u n b u cle for p a ra d ib u ja r su tri n g u lo e q u il te ro .

Q u p a s a ra s i h ic i ra m o s e s te c a m b io ? ...
for clr in ["amarillo", "rojo", "prpura", "azul"]:
alex.color(clr)
alex.forward(250)
alex.left(90)

U na v ariable tam bin s e le puede as ignar un v alo r que es una lis t (lis ta). A s que las lis tas tam bin s e pueden
utilizar en o tras s ituac io nes que el buc le for. El c digo anterio r s e po dra rees c ribir as :

3 .6 . A p o c o m s d e m to d o s d e to rtu g a s y tru c o s
M to d o s d e to rtu g a p u e d e u tiliz a r lo s n g u lo s n e g a tivo s o la s d ista n cia s. A s tess.foward (-100) se m o ve r
te ss h a cia a tr s y tess.left (-30) le d a vu e lta a la d e re ch a . A d e m s, d a d o q u e h a y 3 6 0 g ra d o s e n u n crcu lo ,
d e cu m p lir lo s 3 0 a la iz q u ie rd a te n d r fre n te a u ste d e n la m ism a d ire cci n d e g iro d e 3 3 0 a la d e re ch a ! (La
a n im a ci n e n la p a n ta lla se r d ife re n te , a u n q u e u ste d se r ca p a z d e d e cir si T e ss se e st co n virtie n d o e n
se n tid o h o ra rio o a n tih o ra rio !)
E sto su g ie re q u e n o n e ce sita m o s ta n to u n m to d o d e g ira r a la iz q u ie rd a y a la d e re ch a q u e p o d ra se r
m in im a lista s, y s lo h a y u n m to d o . T a m b i n h a y u n m to d o h a cia a tr s . (S i u ste d e s m u y n e rd , e s p o sib le
d isfru ta r d e d e cir alex.backward (-100) p a ra m o ve r a le x h a cia a d e la n te !)
P a rte d e p e n sa r co m o u n cie n tfico e s co m p re n d e r m e jo r la e stru ctu ra y re la cio n e s rica s e n su ca m p o . A s
q u e re visa r a lg u n o s h e ch o s b sico s a ce rca d e la g e o m e tra y la s ln e a s d e n m e ro , co m o e sta m o s h a cie n d o
a q u e s u n b u e n co m ie n z o si va m o s a ju g a r co n la s to rtu g a s.
L p iz d e la to rtu g a se p u e d e n re co g e r o d e ja r. E sto n o s p e rm ite m o ve r u n a to rtu g a a u n lu g a r d ife re n te sin
d ib u ja r u n a ln e a . Lo s m to d o s so n

alex. penup()
alex. forward(100) # esto hace que mueva alex, pero no hay lnea dibujada
alex. pendown ()

C a d a to rtu g a p u e d e te n e r su p ro p ia fo rm a . Lo s q u e e st n d isp o n ib le s fu e ra d e la ca ja so n la arrow (fle ch a ),


blank (e sp a cio e n b la n co ), circle (crcu lo ), classic (cl sico ), square (cu a d ra d o ), triangle (tri n g u lo ), turtle
(to rtu g a ).

converted by W eb2PDFConvert.com
alex.shape("turtle")

U ste d p u e d e a ce le ra r o ra le n tiz a r la ve lo cid a d d e la to rtu g a d e a n im a ci n . (A n im a ci n co n tro la la ra p id e z


co n la to rtu g a g ira y se m u e ve h a cia a d e la n te ). Lo s a ju ste s d e ve lo cid a d se p u e d e a ju sta r e n tre 1 (le n to ) a
1 0 (m s r p id o ). S in e m b a rg o , si se e sta b le ce la ve lo cid a d a 0 , q u e tie n e u n sig n ifica d o e sp e cia l
d e sa ctiva r la a n im a ci n e ir lo m s r p id o p o sib le .

alex.speed(10)

U n a to rtu g a p u e d e cre a r u n se llo d e su h u e lla co n e l lie n z o , y e sto se g u ir a s d e sp u s q u e la to rtu g a se


h a ya m o vid o a o tra p a rte . S e lla n d o lo s tra b a jo s, a u n cu a n d o la p lu m a e st h a cia a rrib a .
V a m o s a h a ce r u n e je m p lo q u e m u e stra a lg u n a s d e e sta s n u e va s ca ra cte rstica s e n spiral.py:

import turtle
turtle.setup(800, 600)
wn = turtle.Screen()
wn.bgcolor("lightgreen")
wn.title("Tess's Spiral")
tess = turtle.Turtle()
tess.shape("turtle")
tess.color("blue")

tess.penup() # this is new


size = 20
for i in range(30):
tess.stamp() # leave an impression on the canvas
size = size + 3 # increase the size on every iteration
tess.forward(size) # move tess along
tess.right(24) # and turn her
wn.exitonclick()

q u e g e n e ra e sto cu a n d o se e je cu ta :

T e n cu id a d o a h o ra : co n to d o s e x ce p to u n a d e la s fo rm a s q u e se ve e n la p a n ta lla d e a q u so n la s h u e lla s
cre a d a s p o r e l se llo . P e ro e l p ro g ra m a s lo cu e n ta co n u n a in sta n cia d e to rtu g a - S e p u e d e a ve rig u a r cu l
e s e l te ss re a l? (P ista : si u ste d n o e st se g u ro , e scrib a u n a n u e va ln e a d e c d ig o d e sp u s d e l b u cle fo r p a ra
ca m b ia r e l co lo r d e T e ss, o p o n e r su p lu m a y d ib u ja u n a ln e a , o p a ra ca m b ia r su fo rm a , e tc)

3 .7 . G lo s a rio
a t t r ib u t e
A lg n e sta d o o va lo r q u e p e rte n e ce a u n o b je to p a rticu la r. P o r e je m p lo , T e ss tie n e u n co lo r.
canvas
U n a su p e rficie d e n tro d e u n a ve n ta n a d e d ib u jo , d o n d e se lle va a ca b o .
c o n t r o l d e f lu j o

converted by W eb2PDFConvert.com
V e r e l flu jo d e e je cu ci n e n e l p r x im o ca p tu lo .
S e n t e n c ia F o r L o o p
U n a d e cla ra ci n e n P yth o n p a ra la re p e tici n co n ve n ie n te d e se n te n cia s e n e l cu e rp o d e l b u cle .
L IS T :
U n tip o d e d a to s e n P yth o n q u e co n tie n e u n a co le cci n d e va lo re s. Lista s e n P yth o n e st n e n tre
co rch e te s ([,]) y e le m e n to s d e la lista e st n se p a ra d o s p o r co m a s (,).
c u e r p o d e l b u c le
C u a lq u ie r n m e ro d e in stru ccio n e s a n id a d a s d e n tro d e u n b u cle . La a n id a ci n se in d ica p o r e l h e ch o
d e q u e la s d e cla ra cio n e s se in se rta d e b a jo d e la se n te n cia d e b u cle fo r.
v a r ia b le d e b u c le
U n a va ria b le q u e se u tiliz a co m o p a rte d e u n b u cle fo r. S e le a sig n a u n va lo r d ife re n te e n ca d a ite ra ci n
d e l b u cle , y se u tiliz a co m o p a rte d e la co n d ici n d e te rm in a ci n d e l b u cle , e je m p lo U n o b je to q u e
p e rte n e ce a u n a cla se d e T e ss. Y A le x so n la s d ife re n te s in sta n cia s d e la T o rtu g a d e cla se
M to d o
U n a fu n ci n q u e se a d ju n ta a u n o b je to . In vo ca r o a ctiva r e l m to d o h a ce q u e e l o b je to d e re sp o n d e r
d e a lg u n a m a n e ra , p o r e je m p lo , h a cia a d e la n te e s e l m to d o a l d e cir te ss.fo rw a rd (1 0 0 ).
in v o c a r
U n o b je to tie n e m to d o s. N o so tro s u sa m o s e l ve rb o e n e l se n tid o d e in vo ca r a ctiva r e l m to d o . La
in vo ca ci n d e u n m to d o se h a ce p o n ie n d o e n tre p a r n te sis d e sp u s d e l n o m b re d e l m to d o , co n
a lg u n o s a rg u m e n to s p o sib le s. A s w n .e x ito n click () e s u n a in vo ca ci n d e l m to d o e x ito n click.
m d u lo
U n a rch ivo q u e co n tie n e d e fin icio n e s d e P yth o n y d e cla ra cio n e s d e stin a d o s a se r u tiliz a d o s e n o tro s
p ro g ra m a s P yth o n . E l co n te n id o d e u n m d u lo se p o n e n a d isp o sici n d e l o tro p ro g ra m a co n la
in stru cci n d e im p o rta ci n .
O b je to
U n a co sa a la q u e p u e d e re fe rir u n a va ria b le . E sto p o d ra se r u n a ve n ta n a d e la p a n ta lla , o u n a d e la s
to rtu g a s q u e h a cre a d o .
a lc a n c e
U n a fu n ci n in te g ra d a e n P yth o n p a ra g e n e ra r se cu e n cia s d e n m e ro s e n te ro s. E s e sp e cia lm e n te til
cu a n d o te n e m o s q u e e scrib ir u n b u cle p a ra q u e se e je cu te u n n m e ro d e te rm in a d o d e ve ce s.
t e r m in a c i n d e c o n d ic i n
U n a co n d ici n q u e se p ro d u ce lo q u e p ro vo ca u n b u cle p a ra d e te n e r la re p e tici n d e su cu e rp o . E n lo s
b u cle s fo r q u e vim o s e n e ste ca p tu lo , la co n d ici n d e fin a liz a ci n h a sid o , cu a n d o h a y e le m e n to s n o
a sig n a r a la va ria b le d e b u cle .

3 .8 . Eje rc ic io s
1 . E scrib a u n p ro g ra m a q u e im p rim a Nosotros nos gusta trabajar con la tortuga de Python! 1 0 0 ve ce s.
2 . E l vo ca b u la rio u tiliz a d o e n lo s o b je to s d e so ftw a re se in sp ir e n lo s o b je to s d e l m u n d o re a l. V a m o s a
in ve rtir e l p ro ce so d e l p e n sa m ie n to , y d e scrib ir u n o b je to d e l m u n d o re a l, su te l fo n o ce lu la r,
u tiliz a n d o e l m ism o vo ca b u la rio q u e u sa m o s co n lo s o b je to s d e so ftw a re .
D tre s a trib u to s y tre s m to d o s d e su te l fo n o m vil.
3 . C re a r u n a lista lla m a d a meses q u e co n te n g a 1 2 ca d e n a s co n lo s n o m b re s d e lo s m e se s d e l a o e n e l
o rd e n e n q u e o cu rre n .
4 . E scrib ir u n p ro g ra m a q u e u tiliz a u n b u cle p a ra re co rre r meses p a ra im p rim ir

Uno de los meses del ao es Enero


Uno de los meses del ao es Febrero
... e tc

5 . S u p o n g a q u e tie n e la a sig n a ci n x = [1 2 , 1 0 , 3 2 , 3 , 6 6 , 1 7 , 4 2 , 9 9 , 2 0 ]
a . E scrib ir u n b u cle q u e im p rim a ca d a u n o d e lo s n m e ro s e n la n u e va ln e a .
b . E scrib ir u n b u cle q u e im p rim a ca d a n m e ro y su cu a d ra d o e n u n a n u e va ln e a .

D e s a f o s a d ic io n a le s (p a ra lo s e s tu d ia n te s m a s in te lig e n te s )...

converted by W eb2PDFConvert.com
c . Es c riba un buc le que s um a to do s lo s nm ero s de la lis ta en una v ariable llam ada total. U s ted
debe es tablec er la v ariable total para tener el v alo r 0 antes de c o m enzar a agregar, y im prim a el
v av o l en total des pus del c ic lo s e ha c o m platado .
d. Im prim ir el pro duc to de to do s lo s nm ero s en la lis ta. (Pro duc to de to do s lo s m edio s
m ultiplic ado s entre s i).

1 . U se for b u cle s p a ra h a ce r u n a to rtu g a d ib u ja r e sto s p o lg o n o s re g u la re s (re g u la r sig n ifica q u e to d o s


lo s la d o s tie n e n la m ism a lo n g itu d , to d o s lo s n g u lo s so n ig u a le s):
Un tri n g u lo e q u il te ro
Un cu a d ra d o
Un h e x g o n o (se is la d o s)
Un o ct g o n o (o ch o la d o s)
2 . U n e stu d ia n te b o rra ch o h a ce u n g iro a l a z a r y lu e g o to m a 1 0 0 p a so s h a cia a d e la n te , d a o tro g iro a l
a z a r, y lu e g o d a o tro s 1 0 0 p a so s m a s, y sig u e g ira n d o o tra ca n tid a d a l a z a r, e tc. E l e stu d ia n te d e
cie n cia s so cia le s re g istra lo s a n g lo s d e ca d a ve z a n te s d e lo s p r x im o s 1 0 0 p a so s q u e to m o e l
e stu d ia n te b o rra ch o . S u s d a to s e x p e rim e n ta le s so n [160, -43, 270, -97, -43, 200, -940, 17, -86].
(Lo s n g u lo s p o sitivo s so n h a cia la iz q u ie rd a .) U se la to rtu g a p a ra d ib u ja r e l ca m in o re co rrid o p o r
n u e stro a m ig o b o rra ch o .
3 . M e jo re su p ro g ra m a a n te rio r p a ra q u e ta m b i n n o s d ig a lo q u e e l e stu d ia n te b o rra ch o d o n d e h a
fin a liz a d o d a n d o tu m b o s. (S u p o n g a q u e co m ie n z a e n la p a rtid a 0 ).
4 . S i se va a d ib u ja r u n p o lg o n o re g u la r d e 1 8 la d o s, q u n g u lo se tie n e q u e u tiliz a r p a ra g ira r a la
to rtu g a e n ca d a e sq u in a ?
5 . E n e l m o d o in te ra ctivo , a n ticip a rse a lo q u e ca d a u n a d e la s sig u ie n te s ln e a s se h a ce n , y lu e g o g ra b a r
lo q u e su ce d e . P u n tu a ci n m ism o , d a n d o u n p u n to p o r ca d a u n o q u e a n ticip a r co rre cta m e n te

>>> import turtle


>>> wn = turtle.Screen()
>>> tess = turtle.Turtle()
>>> tess.right(90)
>>> tess.left(3600)
>>> tess.right(-90)
>>> tess.speed(10)
>>> tess.left(3600) >>> tess.speed(0)
>>> tess.forward(-100)

6 . E scrib ir u n p ro g ra m a p a ra d ib u ja r u n a fo rm a d e e sta m a n e ra :

S u g eren c ias
Prube es to en un pedazo de papel, el m o v im iento y dar v uelta a s u telfo no m o v il c o m o s i fuera una
to rtuga. M ira c untas ro tac io nes c o m pletas tu m v il hac e antes de c o m pletar la es trella. Ya que c ada
giro c o m pleto es de 360 grado s , s e puede av eriguar el nm ero to tal de grado s que s u telfo no fue
girado . Si us ted div ide es o po r 5, po rque hay c inc o punto s de la es trella. U s ted s abra c unto s grado s a
s u v ez a la to rtuga en c ada punto .
Puede o c ultar una to rtuga detrs de s u c apa de inv is ibilidad, s i us ted no quiere que s e m ues tra. To dav a
s ac ar s us lneas s i s u plum a es hac ia abajo . El m to do es inv o c ado c o m o tess.hideturtle().
tess.showturtle() hac e que la to rtuga v is ible de nuev o .

7 . E scrib a u n p ro g ra m a q u e a tra ig a a u n a p a n ta lla q u e se ve a lg o co m o e sto :

converted by W eb2PDFConvert.com
H int
U s e una c o m binac i n de lo s penup, forward, pendown, stamp, y backward m eto do s de la turtuga para
c o ns eguir que es to func io ne.

La to rtu g a d e b e te rm in a r d e n u e vo e n d o n d e e m p e z o cu a n d o e l p ro g ra m a te rm in e .
8 . A h o ra se b a sa n e n la so lu ci n d e l e je rcicio a n te rio r e scrib ir u n p ro g ra m a p a ra d ib u ja r u n a e sfe ra d e
u n re lo j q u e se ve a lg o co m o e sto :

9 . C re a r u n a to rtu g a , y a sig n e le a u n a va ria b le . C u a n d o se le p re g u n ta p o r su tip o , q u se o b tie n e ?


1 0 . C u l e s e l n o m b re co le ctivo p a ra la s to rtu g a s? (P ista : n o vie n e n e n m a n a d a s.)

p re vio u s | n e x t | in d e x
C m o P e n sa r co m o u n In fo rm tico : E l a p re n d e r co n P yth o n vE d 2 d o cu m e n ta tio n
Copyright 2009, Jeffrey Elkner, Allen B. Downey, Chris Meyers y Gregorio Inda. Created using Sphinx 1.0.1.

converted by W eb2PDFConvert.com

You might also like