Académique Documents
Professionnel Documents
Culture Documents
Programacin en Python
Variables
Crear aplicaciones web, juegos y motores de bsqueda incluye almacenar y trabajar
con diferentes tipos de datos. Eso se hace usando variables. Una variable almacena
un dato y le da un nombre especfico.
Por ejemplo:
spam = 5
La variable spam ahora almacena el nmero 5
Booleanos
Genial! Acabs de almacenar un nmero en una variable. Los nmeros son un tipo
de datos que usamos en programacin. Un segundo tipo de datos se llama booleano.
Un booleano es como un interruptor de luz. Slo puede tener dos valores, como un
interruptor solo puede estar encendido o apagado. Un booleanopuede
ser True (verdadero) o False(falso).
a = True
b = False
Fuiste reasignado
Ahora sabs cmo usar variables para almacenar valores.
mi_ent = 3
Espacios en blanco
En Python, los espacios en blanco se usan para darle estructura al cdigo. Los
espacios en blanco son importantes as que tens que tener cuidado de cmo los
usas.
Pgina 1 de 28
Python teora
Los comentarios hacen que tu programa sea ms fcil de entender. Cuando volvs a
mirar tu cdigo u otras personas quieren colaborar con vos, ellos pueden leer tus
comentarios y fcilmente entender lo que hace tu cdigo.
Para hacer comentarios en varias lneas pods incluir el bloque entero en un grupo de
tres comillas, as:
"""Aqu me pongo a cantar al comps de la vigela, que al hombre que lo desvela una pena
extraordinaria, como la ave solitaria con el cantar se consuela. Martn Fierro de Jos
Hernndez.
"""
Operaciones matemticas
Genial! Ahora hagamos algunas operaciones matemticas. Pods sumar, restar,
multiplicar y dividir nmeros as:
suma = 72 + 23
resta = 108 - 204
multiplicacin = 108 * 0,5
divisin = 108 / 9
Exponenciacin
Todas las operaciones matemticas se pueden hacer con una calculadora, entonces,
para qu usamos Python? Porque podemos combinar las operaciones matemticas
con otro tipo de datos (por ejemplo conbooleanos) y comandos para crear programas
tiles. Las calculadoras se limitan a los nmeros.
ocho = 2 ** 3
En este ejemplo creamos una nueva variable que se llama ocho y la establecemos
en 8, o el resultado de 2 a la potencia de 3 (2^3).
Pgina 2 de 28
Python teora
Mdulo
Nuestro ltimo operador aritmtico esmodulo. Mdulo da como resultado el resto que
queda de la divisin. Entonces, si escribs 3 % 2, el resultado ser 1 (ya que 2 entra
una vez en 3 y el resto es 1).
Strings (Cadenas)
Otro tipo de datos til en Python son las cadenas. Una cadena puede contener letras,
nmeros, y smbolos.
nombre = "Pedro"
edad = "19"
comida = "queso"
01. En el ejemplo anterior, creamos una variable nombre y la asociamos al valor de la
cadena "Pedro".
Secuencia de escape
Hay caracteres que causan problemas. Por ejemplo:
A cada caracter en una cadena se le asigna un nmero. Este nmero se llama ndice.
Mir el diagrama en el editor.
Pgina 3 de 28
Python teora
g = "gatos"[0]
r = "Pedro"[3]
01. En el ejemplo anterior, creamos una variable que se llama g y la ajustamos a "g",
el caracter en el ndice cero de la cadena "gatos".
02. Despus, creamos una nueva variable que se llama r y la ajustamos a "r", el
caracter en el ndice tres de la cadena "Pedro".
Mtodos de cadenas
Buen trabajo! Ahora que sabemos como almacenar cadenas, veamos como podemos
cambiarlas usandomtodos de cadenas.
Los mtodos de cadenas te dejan realizar tareas especficas para las cadenas.
01. len()
02. lower()
03. upper()
04. str()
Empecemos con len(), que obtiene el largo (la cantidad de caracteres) de una cadena.
lower() (minscula)
Bien hecho.
Pods usar el mtodo lower() para liberarte de todas las maysculas de tu cadena.
Vos llams a lower() de este modo:
"Pablo".lower()
que te va a devolver "pablo"
upper() (maysculas)
Ahora tu string est 100% en minsculas. Existe un mtodo similar para hacer que
una cadena est completamente en maysculas.
Pgina 4 de 28
Python teora
str()
Ahora vamos a ver el mtodo str(), que es menos directo. El mtodostr() convierte
en una cadena algo que no es una cadena. Por ejemplo:
str(2)
debe convertir 2 en "2".
Notacin de puntos
Ahora vamos a ver porqu usaslen(cadenas) y str(objetos), pero usas la notacin de
puntos (como por ejemplo, "Cadena".upper()) con el resto.
leon = "rugido"
len(leon)
leon.upper()
Los mtodos que usan la notacin de puntos solo funcionan con cadenas.
Por otro lado, len() y str() pueden funcionar con otros tipos de datos.
Concatenacin de strings
Sabes acerca de las cadenas, y sabes acerca de los operadores aritmticos. Ahora
vamos a combinar los dos.
El operador + entre cadenas las 'sumar' juntas, una despus de otra. Observ que
hay espacios dentro de las comillas despus de Vida y de dede modo que podamos
hacer que la cadena combinada se vea como tres palabras.
Pgina 5 de 28
Python teora
nombre = "Miguel"
print "Hola %s" % (nombre)
El operador s despus de la cadena se usa para combinar una cadena con variables.
El operador s reemplazar un %s en la cadena con la variable de cadena que viene
despus.
A partir de Python 2.6 hay una nueva forma de formatear cadenas dinmicas. Ahora
hay un mtodo de cadena que se llama .formatque es ms avanzado que %. La razn
por la cual no nos enfocamos en este mtodo en Codecademy (por lo menos por
ahora) es que no va a funcionar en versiones ms antiguas de Python y por lo tanto
no recomendamos su uso en algunas configuraciones. Ac te damos una breve
explicacin.
.format permite que ajustes valores y despus los reemplaces en la cadena. Usa
corchetes {algun_nombre} con el nombre de una variable adentro. Despus el mtodo
ajusta esas variables como argumentos. Tambin soporta muchas ms caractersticas
que si usas %. Es ms fcil de explicar usando ejemplos:
Pgina 6 de 28
Python teora
mi_nombre = "Miguel"
"Hola, mi nombre es {nombre}".format(nombre=mi_nombre)
Hay otros usos tiles y pods mirar los documentos de Python para ms informacin
ac [1], ac [2] y ac [3].
[1]
https://docs.python.org/2/library/stdtypes.html#str.format
[2]https://docs.python.org/3/library/string.html#string-formatting
[3]
http://legacy.python.org/dev/peps/pep-3101/
nombre = "Miguel"
print "Hola %s" % (nombre)
El operador s despus de la cadena se usa para combinar una cadena con variables.
El operador s reemplazar un %s en la cadena con la variable de cadena que viene
despus.
nombre = "Miguel"
print "Hola %s" % (nombre)
Necesitas la misma cantidad de trminos %s en una cadena como la cantidad de
variables en el parntesis:
Ac vamos a usar datetime para mostrar la fecha y la hora con un lindo formato.
Pgina 7 de 28
Python teora
print datetime.now()
La primera lnea importa la biblioteca de la fecha y la hora para poder usarla.
Extraer informacin
Observ ahora que la salida se ve as2013-11-25 23:45:14.317454. Qu pasa si vos
no quers la fecha y hora completas?
anio_actual = ahora.year
mes_actual = ahora.month
dia_actual = ahora.day
Ya tens las dos primeras lneas.
Fecha calurosa
Qu pasa si queremos mostrar la fecha de hoy con el siguiente formato?
mm/dd/yyyy. Usemos la sustitucin otra vez.
print ahora.hour
print ahora.minute
print ahora.second
En el ejemplo anterior, solo mostramos la hora, el minuto y los segundos actuales.
Gran final
Pudimos mostrar la fecha y la hora en forma separada y con una linda forma. Ahora
combinemos las dos cosas.
`
from datetime import datetime
ahora = datetime.now()
Sigue el flujo
As como en la vida real, algunas veces querramos que nuestro cdigo pudiera tomar
decisiones.
Los programas Python que estuvimos escribiendo hasta ahora piensan de una sola
forma: pueden sumar dos nmeros o mostrar en pantalla conprint algo pero no tienen
la capacidad de elegir entre uno de esos resultados.
El control de flujo nos da esa capacidad de elegir entre resultados con base en lo
que est ocurriendo en el programa.
Compar de cerca!
Comencemos con el aspecto ms simple del control de flujo: los comparadores.
Existen seis comparadores:
Pgina 9 de 28
Python teora
1. Igual a (==) *
2. No es igual a (!=)
3. Menor que (<)
4. Menor o igual que (<=)
5. Mayor que (>)
6. Mayor o igual que (>=)
Fjate que == se usa para comparar si dos objetos con iguales, y que = se usa para
asignar un valor a una variable.
# Haceme true!
bool_one = 3 < 5
Vamos a cambiar: te vamos a dar el booleano y vos vas a escribir la expresin, igual
que en el ejemplo de arriba.
Operadores booleanos
---------------------------
Pgina 10 de 28
Python teora
And
El operador booleano and solamente da como resultado True cuando las
expresiones en ambos lados de andson verdaderas (True). Por ejemplo:
Or
El operador booleano or da como resultado True cuando por lo menos una de las
expresiones en cada lado de or es True (verdadera). Por ejemplo:
Not
El operador booleano not da como resultado True para sentencias False yFalse para
sentencias True.
Por ejemplo:
Pgina 11 de 28
Python teora
not False dar como resultado True, al igual que not 40 > 41 dar como
resultado True.
Por ejemplo: True or not False andFalse retornar True. Si no te queda claro, mir
el Consejo.
Los parntesis (()) te aseguran que tus expresiones sern calculadas en el orden que
quers.Cualquier elemento que est entre parntesis es calculado como su propia
unidad.
Consejo
01. True or not False and False. primero se calcula not, as que tenemos
02. True or True and False. a continuacin es calculado and, as que tenemos
03. True or False. Y, como hemos visto, True or False es igual aTrue, as que el
resultado final es True!
if 8 < 9:
print "Ocho es menor que nueve!"
En este ejemplo, 8 < 9 es la expresin controlada y print "Ocho es menor que
nueve!" es el cdigo especfico
Si tens, entonces...
Pgina 12 de 28
Python teora
Vamos a practicar un poco con las sentencias if. Acordate, la sintaxis se ve as:
if some_function():
primera linea del bloque
segunda linea del bloque
etcetera
Mirando el ejemplo anterior en el caso de que some_function()muestra returns True,
entonces el bloque de cdigo indentado despus de l se ejecutar. En el caso de
que muestreFalse, entonces el bloque indentado se saltear.
Tambin, asegurate de ver los dos puntos al final de la sentencia if. Los agregamos
pero son importantes.
if 8 > 9:
print "No me muestro!"
else:
print "Me muestro!"
El gran If
Qu buen trabajo! Ac est lo que aprendiste en esta unidad:
Comparadores
3 < 4
5 >= 5
10 == 10
12 != 13
Operadores booleanos
True or False
(3 < 4) and (5 >= 5)
this() and not that()
Sentencias condicionales
if this_might_be_true():
print "Esto es realmente verdadero."
elif that_might_be_true():
print "Eso es verdadero."
else:
print "Ninguno de los anteriores.
Pgina 13 de 28
Python teora
x = "J123"
x.isalpha() # False
Isalpha
x = "J123"
x.isalpha() # False
La segunda lnea ejecuta la funcin isalpha() que muestra False dado que la cadena
contiene caracteres que no son letras.
Vamos a asegurarnos que la palabra que ingrese el usuario contenga solo caracteres
alfabticos. Pods usar isalpha() para controlar eso
Consejo
# un solo caracter
s[3]
my_string = "Python"
my_string[1:] # "ython"
Consejo
Acordate Cmo usamos %s para mostrar cadenas? Podemos usar%f para mostrar
floats. (Es decir, nmeros con decimales en ellos.)
Pgina 14 de 28
Python teora
Cruce de funciones
Las funciones se definen con tres partes:
```python
"""Muestra con print 'Hola Mundo!' en la ventana de Resultados."""
```
**03.** Y el **cuerpo**, que describe los procedimientos que la funcin lleva a cabo. El
cuerpo est *indentado*, igual que las sentencias condicionales.
```python
print "Hola Mundo!"
```
Ac te mostramos un ejemplo de la funcin toda junta:
```python
def hola_mundo():
"""Muestra con print 'Hola Mundo!' en la ventana de Resultados."""
print "Hola Mundo!"
Llamada y respuesta
Despus de definir una funcin se la debe llamar para que se implemente. En el
ejercicio anterior spam(), en la ltima lnea le dijo al programa que busque la funcin
llamada spam y que la ejecute en la ventana de Resultados
Parmetros y argumentos
Examinemos la primera lnea que defini cuadrado en el ejercicio anterior:
python
def cuadrado(n):
n es un parmetro de cuadrado. Un parmetro acta como el nombre de una variable
para pasar unargumento. Con el ejemplo anterior, llamamos cuadrado con el
argumento10. En esta instancia la funcin se llam, n tiene el valor 10.
Una funcin puede requerir todos los parmetros que quieras, pero cuando llams a la
funcin, por lo general tens que pasar una cantidad de argumentos que coincidan.
Pgina 15 de 28
Python teora
Hasta ahora hemos visto funciones que pueden mostrar texto en la ventana de
Resultados o hacer aritmtica simple, pero las funciones pueden ser mucho ms
poderosas. Por ejemplo, est completamente permitido que una funcin llame a otra.
def fun_one(n):
return n * 5
def fun_two(m):
return fun_one(m) + 7
def gritar(frase):
if frase == frase.upper():
return "ESTAS GRITANDO!"
else:
return "Pods hablar ms fuerte?"
Ya s Kung Fu
Te acords la instruccin import this en el primer ejercicio de este curso? Ese era
un ejemplo de cmo importarun mdulo. Un mdulo es un archivo que contiene
definiciones que pods usar una vez que est importado, incluyendo variables y
funciones.
Antes de intentar hacer una importacin de verdad, vamos a ver qu es lo que Python
sabe sobre las races cuadradas. En la lnea 3 del editor, escrib
print sqrt(25)
cuyo resultado esperamos que sea 5.
Importaciones genricas
Viste eso? Python mostr un mensaje: "NameError: name 'sqrt' is not defined".
Python (todava) no sabe que son las races cuadradas.
Pgina 16 de 28
Python teora
todo lo que debes hacer es usar la instruccin import. Cuando importas un mdulo de
esta manera, se le llama una importacin genrica.
Importacin de funcin
Buen trabajo! Ahora Python sabe cmo calcular la raz cuadrada de un nmero.
Sin embargo, solo necesitbamos la funcin sqrt; y puede ser muy frustrante tener
que seguir escribiendo math.sqrt() .
Importaciones universales
Genial! Encontramos una manera de escoger las variables y funciones que queremos
de los mdulos que las contienen.
Ac hay dragones
Las importaciones universales pueden parecer geniales por fuera, pero no son buena
idea por una razn muy importante: pueden llenar tu programa con una tonelada de
nombres de variables y de funciones, pero sin garantizar que sos nombres sigan
asociados a el(los) mdulo(s) de origen.
Si tienes una funcin propia y se llamasqrt, y usas import math, tu funcin estar a
salvo: existe tu sqrt y existemath.sqrt, y las dos jams se cruzarn. Sin embargo, si
usas frommath import *, tendrs un problema: dos funciones diferentes con el mismo
nombre exacto.
Pgina 17 de 28
Python teora
Aunque tus definiciones propias no entren directamente en conflicto con los nombres
de los mdulos importados, si usas import * en varios mdulos al mismo tiempo, no
vas a tener forma de diferenciar cul variable o funcin vino de qu parte.
max()
La funcin max() toma cualquier cantidad de argumentos y devuelve el mayor de ellos.
(Ac, "el mayor" puede tener significados variados, as que es mejor usar max() en
enteros y reales (floats), en donde los resultados son concretos, y no en otros objetos,
como las cadenas.)
Por ejemplo, max(1,2,3) dar como resultado 3 (el nmero mayor en el conjunto de
argumentos).
min()
min() devuelve de una serie de argumentos, el menor de ellos.
abs()
La funcin abs() devuelve el valor absoluto del nmero que toma como argumento;
es decir, la distancia desde0 hasta ese nmero en una lnea imaginaria de nmeros,
sin importar si es positivo o negativo. Por ejemplo, 3y -3 los dos tienen el mismo valor
absoluto: 3. La funcin abs()siempre devuelve un valor positivo, y a diferencia
de max() y min(), solamente puede tomar un solo nmero.
type()
Pgina 18 de 28
Python teora
Por ltimo, la funcin type() devuelve el tipo de los datos que recibe como
argumento. Si le pides a Python que haga lo siguiente:
print type(42)
print type(4.2)
print type('spam')
Python dar como resultado:
<type 'int'>
<type 'float'>
<type 'str'>
Pods asignar elementos a una lista con una expresin de esta forma:
Las listas son muy parecidas a las cadenas pero tienen algunas diferencias claves.
Los ndices de las listas empiezan con 0, no con 1! Pods acceder al primer
elemento de una lista as:nombre_de_lista[0]. El segundo elemento de una lista est
en el ndice 1: nombre_de_lista[1]. A los expertos en informtica les encanta empezar
a contar desde cero.
Nuevos vecinos
El ndice de una lista funciona como cualquier otro nombre de variable! Puede usarse
para acceder a y asignar valores.
Pgina 19 de 28
Python teora
animales_zoo[0]
#recupera el valor "mono"
```python
animales_zoo[2] = "jirafa"
#cambia "tigre" por "jirafa"
Particionado de listas
A veces solo quers acceder a una parte de una lista.
Pgina 20 de 28
Python teora
4. Finalmente mostramos en pantalla['a', 'b', 'c', 'd', 'e'], solo para mostrar que
no modificamos la listaletras original.
Mantener el orden
Algunas veces tens que buscar un tem en una lista.
1. Primero creamos una lista que se llame animales con tres cadenas.
2. Despus mostramos en pantalla el primer ndice que contenga la cadena"murcielago",
que mostrar en pantalla 1.
animales.insert(1, "perro")
print animales
Instrucciones
Escrib una sentencia en la parte indentada del bucle for que muestre un nmero
igual a 2 * numero por cada elemento de la lista.
Pgina 21 de 28
Python teora
Consejo
El bucle for ejecutar automticamente tu cdigo tantas veces como elementos haya
en mi_lista!
mi_lista = [1,9,3,8,5,7]
print 2 * numero
2
18
6
16
10
14
Ms con 'for'
Si tu lista es un revoltijo, tal vez necesites ordenarla con ayuda de sort().
1. Primero creamos una lista que se llame animales con tres cadenas. Las cadenas no
estn en orden alfabtico.
2. Despus ponemos animales en orden alfabtico. Fijate que .sort()modifica la lista en
lugar de retornar una nueva lista.
Pgina 22 de 28
Python teora
3. Luego, para cada tem de animales, mostramos en pantalla ese tem como "hormiga",
"murcielago", "gato", cada uno en su propia lnea.
4. Escrib un ciclo for que itere sobre lista_inicial y agreg (.append()) cada
nmero al cuadrado (x ** 2) para lista_cuadrado.
5. Despus orden lista_cuadrado.
lista_inicial = [5, 3, 1, 2, 4]
lista_cuadrado = []
lista_cuadrado.append(numeros ** 2)
lista_cuadrado.sort()
print lista_cuadrado
Los diccionarios son grandiosos para cosas como guas telefnicas (asociar un
nombre a un nmero telefnico), pginas de inicio de sesin (asociar una direccin de
correo electrnico a un un nombre de usuario), y mucho ms!
Nuevas entradas
Como las listas, los Diccionarios son "mutables". Esto significa que pueden cambiar
despus de ser creados. Una ventaja de esto es que podemos agregar nuevos pares
clave/valor al diccionario despus de creado, as:
nombre_diccionario[clave_nueva] = valor_nuevo
Pgina 23 de 28
Python teora
Cambiar de idea
Como los diccionarios son mutables, pueden modificarse de varias maneras. Pueden
eliminarse tems de un diccionario con el comando del:
del nombre_diccionario[nombre_clave]
eliminar la clave nombre_clave y su valor asociado del diccionario.
Puede asociarse un nuevo valor con una clave asignando un valor a la clave, as:
nombre_diccionario[clave] = nuevo_valor
beatles = ["john","paul","george","ringo","stuart"]
beatles.remove("stuart")
print beatles
>> ["john","paul","george","ringo"]
Instrucciones
Pgina 24 de 28
Python teora
inventario = {
'oro' : 500,
'morral' : ['piedra', 'soga', 'piedra preciosa'],
'mochila' : ['xilofon','cuchillo', 'bolsa de dormir','pan flauta']
}
inventario['bolsa de arpillera'] = ['manzana', 'rubi chiquito', 'osito panda']
inventario['morral'].sort()
inventario["bolsillo"] = ["caracol", "mora", "lanas"]
inventario['mochila'].sort()
inventario['mochila'].remove('cuchillo')
inventario['oro'] = 500 + 50
Antes de empezar
Antes de empezar nuestro ejercicio vamos a repasar una vez ms los ciclos for de
Python. Por ahora solamente vamos a repasar el ciclofor en trminos de cmo se
relaciona con las listas y diccionarios. En los cursos siguientes vamos a explicar ms
usos de los ciclos for.
Los ciclos fornos permiten iterar por los elementos de una lista, desde el que est en
el extremo izquierdo (el elemento cero) hasta el que est en el extremo derecho. Un
ciclo de ejemplo estara estructurado de la siguiente forma:
Pgina 25 de 28
Python teora
cuidado de evitar usar la palabra list como variable, ya que esa es una palabra
reservada (es decir, significa algo especial) en el lenguaje de Python.
Esto es CLAVE!
Tambin pods usar un ciclo for en un diccionario para iterar por sus claves, con lo
siguiente:
# Un simple diccionario
d = {"foo" : "bar"}
for key in d:
print d[key] # muestra "bar"
Ten en cuenta que los diccionarios estn desordenados, es decir, que cada vez que
hagas un ciclo travs de un diccionario, vas a pasar por cadaclave, pero no vas a
tener la seguridad de poder verlas en un orden particular.
numeros = [1, 3, 4, 7]
for numero in numeros:
if numero > 6:
print numero
print "Mostramos 7."
01. En el ejemplo anterior, creamos una lista con 4 nmeros.
02. Despus recorremos los numerosde la lista y almacenamos cada tem en la lista en
la variable numero.
03. En cada ciclo, si el numero es mayor que 6, lo mostramos con print. Entonces
mostramos 7.
04. Finalmente, mostramos una sentencia.
Listas + Funciones
Las funciones tambin pueden tomar listas como datos de entrada y realizar varias
operaciones en ellas.
def contar_bajos(numeros):
total = 0
for n in numeros:
if n < 10:
Pgina 26 de 28
Python teora
total = total + 1
return total
4. Instrucciones
5. Escrib una funcin que cuente cuntas veces la cadena burbujas aparece en
una lista.
6. 01. Escrib una funcin que se llamecontar_burbujas que toma una lista xcomo
datos de entrada.
02. Cre una variable contar para que tenga la cuenta en curso. Inicializala a
cero.
03. Por (for) cada item en x:, si (if) ese tem es igual a la
cadena"burbujas" aument la variablecontar.
04. Despus del ciclo, devolv conreturn la variable contar.
7. Por ejemplo,contar_burbujas(["burbujas","gato","burbujas"]) debe devolver
con return 2.
def contar_burbujas(x):
contar = 0
for burbuja in x:
if burbuja == "burbujas":
contar += 1
return contar
Pgina 27 de 28
Python teora
x = ["burbujas","gato","burbujas"]
Pgina 28 de 28