Dibujos quelonios

Nota: Algunas celdas de este notebook no se puede correr usando binder, unicamente desde una instalacion local de jupyter. Si la celda se puede correr usando binder, estara indicado en un comentario en la celda correspondiente.


In [ ]:
import turtle                    # necesitamos un módulo llamado turtle para esta parte

In [ ]:
ventana = turtle.Screen()        # crea una ventana para dibujar
henry = turtle.Turtle()          # crea una tortuga (cursor) que se llama henry

In [ ]:
henry.forward(150)               # le decimos a henry que avance 150 pasos
henry.left(90)                   # henry, da una vuelta de 90 grados hacia la derecha

In [ ]:
henry.undo()                     # deshace la instruccion anterior

Trata de dibujar un cuadrado de 150 pasos de lado.


In [ ]:
henry.position()                 # Esto es un atributo

In [ ]:
henry.color()                    # Esto también es un atributo, y se puede cambiar

In [ ]:
henry.color("pink")           
henry.forward(100)               # Esto es un método que cambia la posición del cursor

In [ ]:
# Si quiero volver a empezar, pero cambiando el color del fondo
ventana.clear()             
ventana.bgcolor("lightgreen")
henry = turtle.Turtle()

In [ ]:
henry.pensize(3)

In [ ]:
henry.goto(100,100)             # Qué diferencia hay con el método forward?

In [ ]:
henry.penup()
henry.goto(100,0)

In [ ]:
henry.pendown()
henry.goto(0,0)

¿Para qué escribimos turtle.Turtle() para obtener un nuevo objeto Turtle (tortuga)?

  • (a) Por claridad. También funcionaría escribir Turtle().
  • (b) El punto (.) le dice a Python que necesitamos un nuevo objeto.
  • (c) La primera turtle le dice a Python que necesitamos el módulo turtle en el cual encontramos el objeto Turtle.

Trata de dibujar una X con la tortuga.


In [ ]:
julian = turtle.Turtle()     # crea otra tortuga que se llama julian

Haz que henry dibuje un triángulo verde al tiempo que julián dibuja un cuadrado amarillo (poniendo las instrucciones todas en la misma celda).

El ciclo for


In [ ]:
# esta celda funciona en binder
for amiga in ['Jacinta','Nepomucena','Gertrudis','Poncha','Domitila']:
    print("Mi mejor amiga hoy es",amiga) # indentación es un tab para lo que quiero que se repita en el ciclo

In [ ]:
# esta celda funciona en binder
for i in ['Jacinta','Nepomucena','Gertrudis','Poncha','Domitila']:
    print("Mi mejor amiga hoy es",i)

In [ ]:
# esta celda funciona en binder
amigas=['Jacinta','Nepomucena','Gertrudis','Poncha','Domitila'] # esto es un objeto llamado lista
amigas

In [ ]:
# esta celda funciona en binder
for amiga in amigas:
    print("Mi mejor amiga hoy es",amiga)

In [ ]:
# esta celda funciona en binder
type(amigas)

In [ ]:
# esta celda funciona en binder
type(amiga)

In [ ]:
# esta celda funciona en binder
amiga

In [ ]:
# esta celda funciona en binder
k=1
for amiga in amigas:
    print("Mi amiga numero",k,"es",amiga)
    k+=1

In [ ]:
ventana.clear()             
german = turtle.Turtle()

for i in [0, 1, 2, 3]:      # repite cuatro veces las instrucciones
    german.forward(150)
    german.left(90)

In [ ]:
for aColor in ["yellow", "red", "purple", "blue"]:      
    german.forward(50)
    german.left(90)

In [ ]:
for aColor in ["yellow", "red", "purple", "blue"]: 
    german.color(aColor)
    german.forward(50)
    german.left(90)

In [ ]:
for aColor in ["yellow", "red", "purple", "blue"]: 
    german.color(aColor)
print(aColor)
    german.forward(50)
    german.left(90)

¿En este código, cuántas líneas se muestran?

for numero in [5, 4, 3, 2, 1, 0]:
    print("Tengo", numero, "galletas.")
  • (a) 1
  • (b) 5
  • (c) 6
  • (d) 10

¿En el código anterior, cuál es el número del segundo mensaje que se muestra?

  • (a) 2
  • (b) 1
  • (c) 4

¿Cómo sabe Python cuáles instrucciones debe seguir durante el ciclo?

  • (a) Se indentan con un tab.
  • (b) Siempre hay exactamente una línea dentro del ciclo.
  • (c) El ciclo termina con dos puntos.

Este material fue recopilado para Clubes de Ciencia Colombia 2017 por Luis Henry Quiroga (GitHub: lhquirogan) - Germán Chaparro (GitHub: saint-germain), y fue traducido y adaptado de http://interactivepython.org/runestone/static/thinkcspy/index.html

Copyright (C) Brad Miller, David Ranum, Jeffrey Elkner, Peter Wentworth, Allen B. Downey, Chris Meyers, and Dario Mitchell. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with Invariant Sections being Forward, Prefaces, and Contributor List, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.