Un poco más de Python
ExactasPrograma
Facultad de Ciencias Exactas y Naturales, UBA
Verano 2019
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 1 / 16
Resumen
Asignación
Anastasio = 4
Pedrito = 8
Laura = 5
Micaela = 10
Asignación
En Python podemos darle nombre a las cosas y asociarles un valor. Esto se llama
asignar un valor a una variable.
Anastasio es la variable y 4 es el valor.
Estado de un programa
El estado de un programa en un momento de su ejecución está definido por el valor de
todas sus variables en ese momento. Cuando se analiza qué es lo que hace el
programa, nos interesa ver y entender cómo cambian los valores de las variables.
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 2 / 16
Resumen
¿Cómo se ve la ejecución de un programa?
Este sitio permite ejecutar paso a paso nuestro programa.
Nos permite ver el resultado de cada instrucción (estado del programa).
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 3 / 16
Resumen
Listas
En Python existen las listas, que sirven para almacenar valores:
Anastasio = []
Pedrito = []
Laura = []
Micaela = []
[Link](4)
[Link](8)
[Link](5)
[Link](10)
[Link](6)
[Link](9)
[Link](6)
[Link](13)
¿Qué pasa si ejecuto la lı́nea print("Anastasio:", Anastasio)?
La salida me muestra: Anastasio: [4, 6]
Es una manera linda de ver el contenido de la lista... pero hay algo más ahı́,¿no?
Se puede definir una lista (por extensión) como:
milistita = [2, -1, 4, -2, 8, 17]
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 4 / 16
Resumen Cadenas de caracteres
Cadenas de caracteres
Definición
Es una secuencia de caracteres definida por medio de comillas, es parecida a una
lista, pero no es igual (es un tipo inmutable):
’Hola, trencito’
Las operaciones básicas (algunas también funcionan con listas) son:
+: concatenación. 'Hola' + ', trencito' da 'Hola, trencito'.
int: convierte una cadena a número entero. int('33') da 33.
float: convierte una cadena a número con coma. float('4.5') da 4.5.
Al igual que con cualquier lista, dos de las funciones más usadas son:
[]: para acceder a los contenidos de posiciones individuales dentro de una cadena.
Por ejemplo, 'Hola'[3] da 'a'.
len: devuelve la longitud de la cadena de caracteres. len('abc') devuelve 3.
lower: devuelve la misma cadena pero en minúsculas. 'Hola'.lower() da
'hola'.
upper: similar a la anterior, pero pasa a mayúsculas. 'Hola'.upper() da 'HOLA'.
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 5 / 16
Resumen Funciones
Funciones en Python
Son una construcción que permite encerrar un pedacito de programa.
Ası́ como append, hay muchı́simas funciones que se pueden utilizar y aprovechar.
Permiten definir cierto comportamiento interesante y no tener que volverlo a
programar cada vez.
Los lenguajes de programación tienen un mecanismo para definir funciones.
Los valores que recibe una función se llamas parámetros o argumentos.
Tabulación
Python sabe donde termina la definición de una función por la tabulación: las
instrucciones que componen la función están un tab o 4 espacios hacia la izquierda.
Tabulación, el retorno
Es importante usar una cantidad de espacios o tabulación, pero no mezclar, sino
empiezan a aparecer errores muy raros de Python. ¡Sean prolijos!
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 6 / 16
Resumen Ciclos
Ciclos
El while permite repetir una serie de instrucciones mientras se cumpla una
condición.
Si, desde el principio, sabemos que el rango del ciclo es fijo, se puede usar for.
Definamos la función suma_elem, que suma todos los elementos de una lista
usando for y while:
Con while:
Con for:
def suma_elem(l):
suma = 0 def suma_elem(l):
i = 0 suma = 0
while i<len(l): for i in range(0,len(l),1):
suma = suma + l[i] suma = suma + l[i]
i = i+1 return suma
return suma
range(inf, sup, paso): devuelve una estructura que toma los números
desde inf hasta sup de a paso. Por default, inf vale 0 y paso vale 1 (si no se los
escribe explı́citamente).
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 7 / 16
Resumen If
Otra estructura de control: if
Permite ejecutar una serie de instrucciones si se cumple cierta condición.
Supongamos que queremos usar la función proc_jugadas cuando la lista de
jugadas no esté vacı́a o si lo estuviera, que el resultado fuera −1:
if Anastasio!=[]:
suma_Anastasio = proc_jugadas(Anastasio)
else:
suma_Anastasio = -1
if Pedrito!=[]:
suma_Pedrito = proc_jugadas(Pedrito)
else:
suma_Pedrito = -1
if Laura!=[]:
suma_Laura = proc_jugadas(Laura)
else:
suma_Laura = -1
if Micaela!=[]:
suma_Micaela = proc_jugadas(Micaela)
else:
suma_Micaela = -1
Los dos puntos (:) son obligatorios, ¡No olvidarse!
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 8 / 16
Resumen If
Comparaciones y condiciones
Se pueden realizar distintas comparaciones:
< menor
<= menor o igual
> mayor
>= mayor o igual
== igual
!= distinto
También se pueden combinar distintas condiciones utilizando los operadores
lógicos:
not negación, si se aplica a True, da False y a la inversa.
and se usa x and y. Solo da True cuando x e y son True.
or se usa x or y. Da True cuando alguna de las dos (o las dos) es True.
Esto aplica tanto para las condiciones del if como a las del while.
if a>x and a<y: if a*a>x or a<y*y:
c = x*x+y*y c = a*a-y*y
else: else:
c = 2*x*y c = x*y/2
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 9 / 16
Módulos
Módulos para usar otras funciones
Si bien Python tiene muchas funciones que se pueden usar directamente, hay
muchas otras que están disponibles como módulos.
Un módulo es una colección de funciones que alguien (o una comunidad)
desarrollaron y empaquetaron para que estén disponibiles para todo el mundo.
Para que las funciones estén disponibles para ser utilizadas en mi programa,
tengo que usar la instrucción import.
Si quiero generar números aleatorios, que están en el módulo random, tengo que
escribir:
import random
print([Link]())
print([Link]())
print([Link]())
¿Cómo sé que funciones o módulos hay? ¡¡¡Google!!!
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 10 / 16
Spyder
Existe vida más allá del pythontutor: spyder
open source
cross-platform
integrated development environment (IDE)
incluye un editor de texto que remarca las palabras clave del lenguaje
tiene soporte para distintas versiones de Python
permite escribir programas y probarlos de manera muy sencilla
En las máquinas de los laboratorios, ya está instalado y listo para usarse (tipear
spyder3 o spyder como comando).
Para aquellos que tienen máquina Windows:
[Link] y bajar Python 3.7
version para Windows (64 bits para máquinas nuevas, 32 bits si tenes una
medio viejita).
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 11 / 16
Spyder
Un entorno de desarrollo en Python: spyder
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 12 / 16
Actividad de hoy
Nano Jack: como el Blackjack, pero con problemitas
Es uno de los juegos que habitualmente se
encuentran en los casinos.
Se juega entre varios jugadores (más de
dos).
Se usan las cartas francesas (las de
poker).
Cada jugador pide cartas tratando de que
sus valores sumen 21.
Si te pasas de 21, perdiste.
Nano Jack
Vamos a tomar el espiritu del Blackjack para armar un juego que podamos
implementar con un programa, ası́ que las reglas van a estar relajadas (ya las vamos a
ir viendo).
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 13 / 16
Actividad de hoy
Empecemos con cartas de poker
Cada mazo de cartas tiene cuatro palos.
Dos palos son rojos, dos negros.
Las cartas van del 1 al 10 y tres figuras: J, Q, K.
A las figuras se les asigna valores: J vale 11, Q
vale 12 y K vale 13.
Pensemos entre todos
Nuestra tarea será hacer un programa de computadora que simule varios jugadores
en una partida de Nano Jack. ¿Cómo encaramos esto?
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 14 / 16
Actividad de hoy
Modelando el juego
Cuando se enfrenta una situación ası́, lo mejor es revisar cómo es el juego y
cuáles son sus principales caracterı́sticas.
Si todo fue como lo planeado, tendremos algunos mazos de cartas para jugar un
poco entre nosotros.
Junto con divertirnos y conocernos, tratemos de buscar qué serı́a lo que un
programa tendrı́a que ir haciendo para jugar.
¿Qué esperan?
¡A armar los grupos y a jugar un ratito!
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 15 / 16
Actividad de hoy
¡A trabajar!
Con todo lo que vimos, podemos empezar a solucionar el problema planteado en
el primer taller.
Recuerden que los docentes estamos para ayudar, aprovechen a consultar todo,
no se traben.
El material de las clases y las actividades del curso van a estar en el campus
virtual. El curso depende del Departamento de Computación.
Si no tiene cuenta, deberı́an poder acceder como “guest”. El curso depende del
Dto de Computación y está asociado al cuatrimestre de Verano 2019.
Importante
Aprender a programar se basa en equivocarse y aprender de los errores, ¡No tengan
miedo de experimentar y preguntar!
ExactasPrograma (Exactas-UBA) Un poco más de Python Verano 2019 16 / 16