Você está na página 1de 37

Bienvenido al "Flying Circus"

Python es un lenguaje de programacin flexible y poderoso, que puedes


usar en desarrollo web/de Internet, para escribir interfaces grficas de
usuario (GUI) de escritorio, crear juegos, y mucho ms. Python es:
De alto nivel, lo que quiere decir que leer y escribir en Python es
realmente fcil; se parece mucho al ingls comn y corriente!
Interpretado: quiere decir que no necesitas un compilador para
escribir y ejecutar Python! Puedes escribirlo aqu, en Codecademy, o
incluso en tu propio computador (muchos ya vienen con
elintrprete Python incorporado; ms adelante en esta leccin
hablaremos del intrprete).
Orientado a los objetos, quiere decir que les permite a los usuarios
manipular estructuras de datos llamadas objetos, para construir y
ejecutar programas. Ms adelante aprenderemos ms sobre los objetos.
Divertido de usar. El nombre de Python viene de la comedia
britnicaMonty Python's Flying Circus, y el cdigo y los tutoriales de
ejemplo a menudo incluyen bromas del programa, con el fin de hacer
que el aprendizaje del lenguaje sea ms interesante.
Para este curso no se requieren conocimientos previos de Python en
particular, ni de programacin o informtica en general.
Variables
Uno de los conceptos ms bsicos en programacin son las variables.
Una variable es una palabra/identificador que capta un nico valor. Por
ejemplo, digamos que para tu programa necesitas el nmero 5, pero no
lo vas a usar de inmediato. Puedes establecer una variable,
digamos jamon, para que capte el valor 5 y guardarla para usarla ms
tarde, as:
jamon = 5
Es fcil declarar variables en Python; solamente tienes que escribir un
nombre/identificador, como jamon, y usar = para asignarle un valor, y
listo!
Tipos de datos
Grandioso! Ahora, cada vez que lo necesitemos, podemos tomar el
valor10 refirindonos al nombremi_variable.
En este caso, el tipo de datos demi_variable es entero (un nmero
entero positivo o negativo). Hay tres tipos de datos en Python que nos

interesan en este momento: enteros,reales (nmeros fraccionarios


escritos con un punto decimal, como 1.970), ybooleanos (que pueden
ser True oFalse).
Los programas de computador, en gran parte, son creados para
manipular datos. Por lo tanto, es importante entender los diferentes
tipos de datos que podemos incorporar en nuestros programas.
Nunca uses las comillas (' o ") con los booleanos, y siempre usa
mayscula inicial! Python distingue entre maysculas y minsculas.
Usaremos las comillas cuando lleguemos a los strings, los cuales
veremos en la siguiente unidad.
Has sido reasignado
Buen trabajo. Ahora sabes cmo declarar variables en Python y fijarles
diferentes valores, y has aprendido sobre tres diferentes tipos de
valores: enteros, reales, y booleanos.
Puedes reasignar una variable en cualquier momento. Si primero
fijastemi_ent como 7, pero luego quieres cambiarla a 3, todo lo que
tienes que hacer es decirle a Python mi_ent = 3, y cambiar el valor
de mi_ent por ti.
Intntalo y observa!

Qu es una sentencia?
Imagina que una sentencia en Python es parecida a una oracin en
espaol: es la unidad ms pequea del lenguaje que tiene sentido
propio. As como "Me", "gusta", "el" y "jamn" no son oraciones por s
solas, pero "Me gusta el jamn" s lo es, las variables y los tipos de datos
en Python no son sentencias por s solos, pero son los bloques que las
forman.
Siguiendo esta comparacin con las oraciones; es claro que adems
necesitamos algn tipo de signo de puntuacin para que sea obvio en
qu punto termina una sentencia y en qu punto comienza otra. Si
conoces JavaScript, sabrs que en ese lenguaje las sentencias terminan
con un punto y coma (;). En Python, las sentencias estn separadas
por espacios en blanco. As como no se puede colocar punto y coma
donde quieras en JavaScript, no puedes colocar espacios en blanco al
azar en Python.
Tal vez te tome un poco de tiempo acostumbrarte a esto, en especial si
vienes de practicar con un lenguaje de programacin donde no importan
los espacios en blanco.
Los espacios en blanco son espacios correctos
Observa el error que apareci cuando ejecutaste el cdigo en el
editor:IndentationError: expected an indented block. Vers este mensaje
de error cada vez que tus espacios en blanco en Python no estn donde
deben. (Si has estudiado JavaScript, imagina que el uso inadecuado de
los espacios es como el uso inadecuado de ; o {}). Cuando tu
puntuacin no est bien, lo que quieres dar a entender puede cambiar
completamente.
El campesino dijo, "La bruja me convirti en un tritn!"
"El campesino", dijo la bruja, "me convirti en un tritn!"
Ves a qu nos referimos?
Una cuestin de interpretacin
En la introduccin a esta unidad mencionamos que Python es un
lenguaje interpretado (es decir, que se ejecuta usando un intrprete). En
el contexto de Codecademy, el intrprete es la ventana de
consola/salida en la esquina inferior derecha de la pantalla.
Por ahora, imagina que el intrprete es un programa que toma el cdigo
que escribes, lo revisa en busca de errores de sintaxis, y ejecuta las
sentencias en ese cdigo, lnea por lnea. Funciona como un mediador

entre el computador y t, y te permite saber el resultado de las


instrucciones que le das a la mquina.

Comentarios de una sola lnea


Habrs notado algunas instrucciones en el editor que comienzan con un
smbolo de # (numeral). Estas lneas del cdigo se llaman comentarios,
y el intrprete no las leeno afectan al cdigo en absoluto. Son simples
comentarios en espaol escritos por el programador, que sirven como
instrucciones o explicaciones del funcionamiento de una parte del
programa en particular.
Como los comentarios mejoran en gran medida la legibilidad de nuestro
cdigo (y te servirn para depurar los programas de forma ms rpida,
ya que podrs identificar de un vistazo lo que se supone que debe hacer
cada parte del programa), te recomendamos que escribas comentarios
en tu cdigo cuando su propsito no sea inmediatamente obvio.
Comentarios de varias lneas
A veces tienes que escribir un comentario realmente largo. #nicamente
funciona en una sola lnea; y si bien podras escribir un comentario de
varias lneas y comenzar cada una con #, esa tarea puede ser fastidiosa.
Si quieres escribir un comentario que abarque varias lneas, puedes
incluir el bloque entero en un grupo de tres comillas, as:
"""Soy un leador y me siento con energa, duermo toda la noche, y
trabajo todo el da!"""

Operadores aritmticos
Las sentencias de Python no se limitan a simples expresiones de
asignacin como jamon = 3; tambin comprenden una cantidad de
expresiones matemticas usando operadores aritmticos.
Hay seis operadores aritmticos en los cuales nos vamos a concentrar:
Suma (+)
Resta (-)
Multiplicacin (*)
Divisin (/)
Exponenciacin (**)
Mdulo (%)
Exponenciacin
Excelente trabajo!
Todas las operaciones aritmticas que has hecho hasta el momento
probablemente han sido intuitivas o han reflejado el trabajo que ya has
hecho en otros lenguajes de programacin (como JavaScript). Sin
embrago, tal vez la exponenciacin sea nueva, as que requiere un poco
de explicacin.
El operador ** eleva el primer nmero, la base, a la potencia del
segundo nmero, el exponente. As que, si escribes 2 ** 3,
obtendrs 8(2 ** 3 es lo mismo que 2 * 2 * 2, ambos son igual
a 8). 5 ** 2 = 25, 2** 4 = 16, y as sucesivamente.
Mdulo
Impresionante! Esos eran muchos huevos. Ojal hayas dejado espacio
para el jamn!
Nuestro ltimo operador aritmtico esmdulo. Mdulo da como resultado
el residuo que queda de la divisin de nmeros enteros. Entonces, si le
pides al intrprete que evale 5 % 2, el resultado ser 1 (ya que 2 cabe
en 5dos veces, y sobra 1). 10 % 5 = 0, 113 % 100 = 13, y as
sucesivamente.

Repaso general
Buen trabajo! Hasta el momento has aprendido lo siguiente en Python:
Variables, que son referencias que contienen valores;
Tipos de datos (tales como enteros, reales, and booleanos);
Espacios en blanco (y por qu son importantes!);
Sentencias (y la manera en que las sentencias de Python son similares
a las oraciones en el espaol normal);
Comentarios (y por qu son buenos para tu cdigo!); y
Operadores aritmticos (incluyendo +, -, *, /, **, y %).

Tu comida favorita
Este proyecto se dise para complementar la Unidad 1: Sintaxis de
Python. Supone la familiarizacin nicamente del material cubierto en
dicho curso.
Acabas de terminar una deliciosa cena de huevos con jamn. Sin
embargo, el computador del restaurante no funciona; as tendrs que
calcular el costo de la cena t mismo.
Vamos a dividirlo de esta manera:
Costo de la comida: $44.50
Impuesto del restaurante: 6.75%
Propina: 15%
Vas a calcular la propina sobre el costo total de la comida (incluyendo el
impuesto).
El impuesto
Bien! Ahora vamos a crear una variable para el porcentaje de
impuestos.
En este restaurante, el impuesto sobre tu comida es de 6.75%. Sin
embargo, como vamos a multiplicar reales y no porcentajes, tendrs que
dividir 6.75 por 100 para obtener el nmero en su forma decimal.
Entiendes por qu? (Si no, mira la sugerencia.)
La propina
Como te prestaron un buen servicio durante la cena, quieres dejar un
15% de propina sobre el costo de la comida (incluido el impuesto).
Antes de calcular la propina de toda la cuenta, vamos a definir una
variable para la propina (15%). Nuevamente, esto es un porcentaje,
entonces tendrs que dividir 15.0 por 100 para obtener la propina
expresada en decimal.
Reasignar en una sola lnea
Muy bien! Tenemos las tres variables que necesitamos para realizar
nuestro clculo, y conocemos un montn de operadores aritmticos que
nos podrn ayudar.
Vimos en la Unidad 1 que podamosreasignar una variable cuando fuera
necesario; por ejemplo, podramos decir jamon = 7 en un punto del
programa, y despus cambiar de opinin y decir que jamon = 3.

Segundo verso, lo mismo que el primero


Bueno, casi lo mismo. Aqu, vamos a presentar una nueva variable en
lugar de cambiar una variable existente.
Ahora que comida indica el valor del costo de la comida + impuesto,
incorporemos una nueva variable en la lnea 8, total, igual a la
nueva comida+ comida * propina. (Debera ser algo muy parecido a lo
que acabas de hacer en el ejercicio anterior.)
El cdigo de la lnea 10 formatear el valor de total de una forma bien
presentada y mediante print lo mostrar en la consola con dos nmeros
decimales. (Aprenderemos sobre formato de los strings, la consola, y la
instruccin print en la Unidad 2!)

Paso uno: strings


(Para este curso se requiere haber visto la Unidad 1: Sintaxis de Python.)
Otro tipo de datos til en Python son los string. Los strings
son cadenas de caracteres, lo que es una manera ms formal de decir
que en realidad son frases en espaol comn y corriente. Pueden incluir
nmeros, letras, y varios smbolos como: "Somos los#1!"
Un string literal es un string creado al escribirlo literalmente en medio de
comillas (' ' o " "). Sin embargo, debes usar el mismo tipo de comillas en
cada extremo del string: no debe ser 'string" ni "string'!
Paso tres: escape!
Todava no te pongas cmodo: no puedes usar cualquier smbolo en un
string, y algunos resultados solamente se pueden conseguir con
caracteres especiales. La prctica de incluir dichos caracteres en un
string requiere que stos estn escapados, o sea, que se marquen como
nicos. El caracter de la barra invertida (\) hace este trabajo por
nosotros!
Acceso por desplazamiento
Buen trabajo! (A propsito, tambin podras haber corregido el string
reemplazando las comillas simples de los extremos con comillas dobles,
as:"Help! Help! I'm being repressed!".)
Recuerdas que te dijimos que, tcnicamente hablando, los strings son
cadenas de caracteres? No sera maravilloso si pudieras obtener de
forma individual cada caracter de un string?
Pues s puedes!
Cada caracter en un string tiene unsubndice o desplazamiento, lo que
es una manera extravagante de decir que tiene un nmero unido a l. El
nmero comienza en 0, para el caracter del extremo izquierdo, y
aumenta en uno a medida que te mueves hacia la derecha, caracter por
caracter. Revisa el diagrama en el editor!
Cuatro mtodos para la locura
Buen trabajo! Ahora hablaremos acerca de algunos de los mtodos que
estn disponibles para ser usados con strings.
Un mtodo es una funcin de unobjeto especfico (veremos los objetos
ms adelante). Una funcin es un fragmento de cdigo que resuelve un
problema particular o que desempea una tarea especfica. (En la
Unidad 4 veremos las funciones.) Por ahora, la idea principal es que los

mtodos de string son fragmentos de cdigo pre-construidos que


desempean tareas especficas para los strings.
En esta seccin, vamos a concentrarnos en cuatro mtodos de string:
len()
lower()
upper()
str()
lower()
Bien hecho. Observa que len()retorna la longitud (es decir, la cantidad
de caracteres) del string con el cual es usado.
Pero, digamos que no quieres que tu string (en este caso, "Azul
Noruego") lleve ninguna mayscula. En este ejemplo, cambiar "Azul
Noruego" a"azul noruego" representa un poco de trabajo manual. Pero,
qu tal si quisieras pasar miles de palabras de maysculas a
minsculas? Hacerlo de forma manual podra tardar por siempre.
str()
Parece que de verdad ests dominando los mtodos de strings en
Python. En caso de que te ests aburriendo un poco (y sabemos que
ajustar las maysculas y minsculas de un string no es lo ms
emocionante del mundo), intenta usar el mtodo str(), a ver qu te
parece.
El mtodo str() retorna un string que contiene una representacin
mostrable de cualquier cosa que hayas puesto entre parntesis. Crea
strings a partir de cosas que no son strings!
Notacin de puntos
Como lo prometimos, ahora explicaremos la razn por la que
usaslen(string) y str(objeto), pero usasla notacin de
puntos (P.ej.,"String".upper()) con el resto.
La notacin de puntos funciona en los string literales ("The Ministry of
Silly Walks".upper()) y en las variables asignadas a los strings
(ministry.upper()) porque estos mtodos son especficos de los strings;
es decir, no funcionan con ningn otro elemento. En
comparacin, len() ystr() pueden funcionar con un montn de objetos
diferentes (que veremos ms adelante), as que no se les puede
asociar nicamente a los strings con notacin de puntos.

Uso de print con strings literales


Ya hemos identificado la ventana en la parte inferior derecha de la
pantalla como consola/intrprete. Te hemos explicado el intrprete:
puedes imaginar que es un pequeo programa que transporta
informacin entre tu cdigo de Python y el computador cuando
presionas "Ejecutar." La ventana en la que el intrprete muestra la salida
de tu cdigo es la consola. (Si conoces JavaScript, sabes
queconsole.log registra el resultado de la evaluacin de tu cdigo en la
consola;print es la versin de Python deconsole.log.)
Si no has estudiado JavaScript, no temas! Todo lo que debes saber es
queprint muestra en la consola el resultado de la evaluacin que el
intrprete hace de tu cdigo, para que la puedas ver.
Concatenacin de strings
Sabes acerca de strings, y sabes acerca de operadores aritmticos. Pero,
sabas que algunos operadores aritmticos funcionan en los strings?
Si usas el operador + en medio de dos strings, los concatena (los une).
"Monty " + "Python" dar como resultado "Monty Python"!
Conversin explcita de strings
Recuerdas cuando hablamos del mtodo str() un par de lecciones atrs,
y de cmo convierte elementos que no son strings en strings? El nombre
elegante de ese proceso esconversin explcita de strings. Le ests
diciendo explcitamente a Python: "Hey, yo s que esto no es un string,
pero lo quiero convertir en uno." Compralo con el proceso implcito de
literalmente colocarle comillas a una secuencia de caracteres, para
convertirla en un string.
Formateo de strings con %, parte 1
Que buen trabajo llevas hasta ahora. Esta es la ltima cosa que vamos
a ver antes de que hagamos el repaso!
Anteriormente vimos que puedes acceder a los caracteres individuales
de un string mediante eldesplazamiento, o, si lo quieres imaginar de esa
forma, mediante una ID numrica. (Recuerda, "PYTHON"[1]es "Y",
no "P"!) Desafortunadamente, los strings en Python son inmutables; no
los puedes cambiar una vez que los hayas creado.
Sin embargo, existe una manera de hacer que tus strings sean flexibles,
y es con el formateo de strings. Usa el smbolo % (no lo confundas con
el mdulo!), y puedes imaginar que es una variable para tu string.
Formateo de strings con %, parte 2

Viste? El formateador de strings %reemplaza los %s (la "s" es de


"string") en nuestro string con las variables entre parntesis. (Lo
podramos haber hecho simplemente
colocando"Camelot" y "lugar" entre parntesis despus del string, pero
queramos mostrarte cmo funciona con las variables.)
La sintaxis sera as:
print "%s" % (variable)
Puedes tener las variables (o strings!) que quieras, separadas por
comas, en medio de tus parntesis.

Y ahora, algo completamente familiar


Buen trabajo! Haz aprendido un montn en esta unidad, incluyendo:
Qu son los strings, y cmo crearlos implcitamente/literalmente
(usando ' ' o " ") o explcitamente (usando el mtodo str());
Los mtodos de strings, tales comolen(), upper(), y lower();
La instruccin print para mostrar en la consola la evaluacin que el
intrprete hace de tu cdigo; y
Tcnicas avanzadas para mostrar elementos, usando %.
Vamos a concluir el ejercicio!

Sigue el flujo
(Este curso supone la familiarizacin con el material presentado en
laUnidad 1: Sintaxis de Python y en laUnidad 2: Strings y salida en
consola. De ahora en adelante, da por hecho que cada nuevo curso
suponga conocimiento del material presentado en los cursos anteriores.)
Tal vez hayas notado que los programas de Python que hemos escrito
hasta ahora han sido ms o menos monotemticos. Hacen la suma de
dos nmeros o usan print para mostrar algo en la consola, pero no
tienen la capacidad de escoger un resultado en vez de otro, como por
ejemplo; sumar dos nmeros si su suma es menor que 100, o en lugar
de eso, usar print para mostrar los nmeros en la consola sin sumarlos,
en caso de que su suma sea mayor que 100.
El control de flujo nos permite tener estos resultados mltiples y
seleccionar uno basados en lo que est ocurriendo en el programa. Se
pueden producir diferentes resultados con base en las entradas del
usuario o una gran variedad de factores en elentorno del programa. (El
entorno es el nombre tcnico para todas las variablesy sus valores
que existen en el programa en un momento determinado.)
Compara de cerca!
No nos adelantemos. Primero, comenzaremos con el aspecto ms simple
del control de flujo: loscomparadores. Existen seis comparadores, y
apostaramos a que al menos unos cuantos te parecen familiares:
Igual a (==) *
No es igual a (!=)
Menor que (<)
Menor o igual que (<=)
Mayor que (>)
Mayor o igual que (>=)
Fjate que == es usado para comparar si dos objetos con iguales, y
que = es usado para asignar un valor a una variable.
Esperamos que ests familiarizado con los conceptos de mayor/menor
que y mayor/menor o igual que (aunque probablemente has visto ese
ltimo escrito as: y ). Funcionan exactamente como te lo imaginas:
prueban si un nmero es igual (o no) a, mayor (o igual) que, o menor (o
igual) que otro nmero.
(Si vienes de las lecciones de JavaScript: en Python no existe ===.)

Las cosas al contrario


Buen trabajo!
Basado en nuestras comparaciones, probablemente ya adivinaste que
las comparaciones en Python generan uno de dos
resultados: True o False. Estas son las instancias de un tipo de datos que
mencionamos brevemente en laUnidad 1, llamado booleanos, y son
las nicas dos instancias. En Python, nada es ms o menos "True", ni
ms o menos "False": o es True, o es False(y siempre con mayscula
inicial, a diferencia de JavaScript).
Vamos a hacer las cosas al revs por un momento: vamos a darte el
valor booleano (True o False), y t escribirs una expresin que genere el
resultado correspondiente.
Ser and/or No Ser
Los operadores booleanos (uoperadores lgicos) son palabras usadas
para conectar las sentencias de Python de forma gramaticalmente
correcta, casi igual que en ingls. Existen tres operadores booleanos en
Python:
and, que quiere decir "y" en espaol;
or, que significa "o" en espaol, y quiere decir "una cosa O la otra o
AMBAS" (no es exclusivamente una o la otra, as como pasa seguido en
espaol);
not, que quiere decir "no" en espaol.
Queremos enfatizar el segundo caso: si tu mam te dice que puedes
tener las pelculas Monty Python and the Holy Grail O Monty Python's
Life of Brian, lo que probablemente quiere decir "una o la otra, pero no
las dos." Por otro lado, Python no tendra problema con que escogieras
ambas, siempre y cuando tu eleccin no sea ninguna de las dos. Es
decir, Python es ms divertido que tu mam.
Los operadores booleanos generan valores booleanos: True o False (era
de esperarse). Vamos a ver los tres operadores uno por uno.
And
El operador booleano and solamente da como resultado True cuando
lasexpresiones en ambos lados de andson verdaderas (True). Una
expresin es cualquier sentencia que incluya una o ms variables y
operadores (aritmticos, lgicos, o booleanos). Por ejemplo:

1 < 2 and 2 < 3 da como resultadoTrue porque uno menor que dos es
True, y dos menor que tres tambin es True.
1 < 2 and 2 > 3 da como resultadoFalse porque no es cierto que las dos
sentencias sean True: uno es menor que d yos, pero dos no es mayor
que tres.
Or
El operador booleano or nicamente da como
resultado True cuandoambas (es decir una, la otra, o las dos!)
expresiones en cada lado de or son True. (Solamente resulta
en Falsecuando las dos expresiones sonFalse.) Por ejemplo:
1 < 2 or 2 > 3 es True, sin importar que dos no sea mayor que tres;
1 > 2 or 2 > 3 es False, porque ni uno es mayor que dos ni dos es mayor
que tres.
Not
El operador booleano not da como resultado True para sentencias False
yFalse para sentencias True. Recuerda: los nicos valores booleanos
sonTrue y False!
Por ejemplo:
not False dar como resultado True, al igual que not 40 > 41. Si
aplicasnot a las expresiones que de otro modo seran True, las
convertirs enFalse.
Esto y aquello (o esto, pero no aquello!)
Un dato divertido: los operadores booleanos se pueden combinar!
Es importante saber que los operadores booleanos no siempre son
calculados directamente de izquierda a derecha; al igual que con los
operadores aritmticos, donde / y *son evaluados antes de + y - (te
acuerdas del orden de los operadores?); existe un orden de
precedencia u orden de operacionespara los operadores booleanos. Ese
orden es el siguiente:
primero se calcula not;
despus se calcula and;
por ltimo se calcula or.
Este orden se puede cambiar si se incluyen parntesis (()). Cualquier
elemento que est entre parntesis es calculado como su propia unidad.

Por ejemplo: True or not False andFalse retornar True. Puedes ver por
qu? Si no puedes, consulta laSugerencia.
Una buena prctica es usar siempre parntesis (()) para agrupar tus
expresiones, y as estar seguro de que sern calculadas en el orden que
quieres. Recuerda: explcito es mejor que implcito!
Sintaxis de sentencias condicionales
Recuerdas cuando te mostramos que los espacios en Python son
importantes? Si no lo recuerdas, toma nota: los espacios en Python son
importantes. Si haz aprendido algo de JavaScript aqu en Codecademy,
sabes que el bloque de cdigo que ejecuta una sentencia if est
delimitado por llaves ({}). En Python, los espacios se encargan de hacer
ese trabajo por nosotros.
Aqu hay un ejemplo de una sentenciaif en Python:
if 8 < 9:
print "Ocho es menor que nueve!"
if siempre va seguido de una expresin, la cual va seguida de dos puntos
(:). El bloque de cdigo (el cdigo que ser ejecutado en caso de que la
expresin sea igual a True) est indentado.
Esto tambin es vlido para las funciones elif y else (las cuales veremos
en un momento). La sintaxis completa debe verse ms o menos as:
if 8 < 9:
print "Yo salgo en la pantalla!"
elif 8 > 9:
print "Yo no salgo en la pantalla."
else:
print "Yo tampoco salgo en la pantalla!"
Problemas con else? Qu pena me da...
En Python, la sentencia else es el complemento de la sentencia if. Si bien
una sentencia if har que el programa contine en la siguiente lnea de
cdigo despus del bloque de cdigo if, incluso si no hay una
sentencia else, se considera una buena prctica escribir una
sentenciaelse por cada sentencia if. Un parif/else le indica a Python lo
siguiente: "Si esta expresin es True, ejecuta este bloque de cdigo
indentado; de lo contrario, ejecuta este cdigo despus de la
sentencia else."

Recuerdas el primer ejercicio de esta seccin, cuando te dijimos "haz


queresponse sea igual a 'Y'; de lo contrario, haz que sea igual a 'N'"? sa era
una especie de sentenciaif/else!

Tengo 99 Problemas, pero un Switch no es uno de ellos


"Elif" es "else if" abreviado. Lo que quiere decir exactamente es: "de lo
contrario, si el siguiente cdigo es True, realiza la opcin N. 1! En caso
de else(o de otro elif), realiza la opcin N. 2."
Si vienes de ver JavaScript, tal vez sepas que tienes dos opciones
cuando tienes una cadena de sentencias condicionales: un puado de
sentencias else if, o una sentenciaswitch. Python lo hace mucho ms
simple: solamente existe elif.
De verdad, qu buen trabajo! Aqu est lo que has aprendido
en esta unidad:
Conceptos bsicos del control de flujo;
Comparadores (como >, <, y ==);
Operadores booleanos (and, or, ynot);
Sentencias condicionales (if,else, y elif).
Vamos para el gran final.
Desglosarlos
Cuando comienzas un proyecto grande como este, es importante
dedicar un tiempo a descomponer el problema en pasos individuales.
Despus, puedes empezar a trabajar (y probar) un paso a la vez, en
lugar de intentar escribir un programa enorme de una sola vez!
Pensemos en el problema de Pig Latin. Pig Latin es un lenguaje creado
en el que se toma la primera letra de una palabra y se pone al final de la
misma y se le agrega tambin un sonido voclico. Por ejemplo, la
palabra perro sera "erropei". Cules pasos debemos seguir?
Pedir al usuario que ingrese una palabra en espaol
Verificar que el usuario ingres una palabra vlida
Convertir la palabra de espaol al Pig Latin de Python
Mostrar el resultado de la traduccin
Nota que algunos de los pasos se pueden dividir a su vez en pasos
individuales. Por ejemplo, queremos pensar detenidamente en el
algoritmo para el paso N. 3 antes de empezar a escribir el cdigo.

Un poco de tiempo invertido pensando detenidamente en la


descomposicin y los algoritmos para tu programa puede ahorrarte
MUCHOS momentos frustrantes ms adelante!
Toma una hoja de papel y elabora un algoritmo para el paso N. 3 del
proyecto.
El comando para mostrar un mensaje en la pantalla y almacenar el
resultado en una variable llamada var es:
var = raw_input('Mensaje')
Hagamos ms completa nuestra validacin de los datos ingresados y
asegurmonos de que la palabra que el usuario ingresa contiene
solamente caracteres alfabticos. Puedes usar la funcin isalpha() para
verificar esto. Para verificar si el string "J123" dentro de la variable x es
alfabtico, puedes utilizar:
x.isalpha() # False

"Sopa de palabras"
Como las reglas de la traduccin dependen de la primera letra de la
palabra que estamos traduciendo, tenemos que capturarla de manera
que podamos verificar si es una vocal o una consonante. Para simplificar
las cosas, tambin nos aseguraremos de que todas las letras de nuestra
palabra estn en minscula para que sea ms fcil.
Para convertir todas las letras de una palabra en minscula, usa lower().
Para convertir el valor del string "FOO"en una variable x en minsculas,
puedes hacer lo siguiente:
x.lower() # "foo".
Querrs pensar dnde vas a poner el cdigo que escribas en este paso.
Realmente solamente tiene sentido realizar estos pasos si ya sabes que
tienes una palabra apta para el ejercicio. Asegrate de poner este
cdigo dentro del bloque if/else.
IA-IA-OU
Ahora que tenemos acceso a la primera letra de nuestra palabra,
debemos saber si se trata de una vocal o de una consonante. Como
hay muchas menos vocales que consonantes, es ms fcil verificar
explcitamente si se trata de una vocal. (Las vocales en espaol son: a,
e, i, o, u. Sin embargo, Python distingue entre maysculas y minsculas,
entonces tambin debes verificar con A, E, I, O, U).

De nuevo, esta verificacin solamente se justifica hacerla cuando ya


tenemos una "buena" palabra (una que no est vaca y en la cual todos
los caracteres son alfabticos). Tienes un par de opciones para organizar
tu cdigo.
Puedes agregarlo a tu condicin ifexistente para verificar que algo es
una buena palabra y que comienza con vocal. Pero tendras que agregar
unelif para verificar si la palabra es una buena palabra y comienza con
una consonante.
En este caso, tiene ms sentido anidarel nuevo bloque if dentro de la
parteif del if / else existente. Esto quiere decir que todo el if/else que vas
a crear aqu queda dentro de la parte if de tu bloque if / else existente.
Me gustara comprar una vocal
Ahora que tienes la estructura lgica para comprobar si es vocal,
hagamos que el cdigo realice la traduccin propiamente dicha.
Recuerda que si una palabra comienza con una vocal, la traduces a Pig
Latin agregando nuestro sufijo (ei) al final de la palabra. Crea una nueva
variablenueva_palabra que contenga el resultado de la traduccin.
Queremos cerciorarnos de que devolvemos el resultado de la traduccin
para que podamos verificar nuestro trabajo.
Casi un da!
Ahora que ya tenemos funcionando el caso de las vocales, lo nico que
nos queda por hacer es resolver el caso de las consonantes (nuestro else
interno puesto que una letra solamente puede ser o una vocal o una
consonante)
La regla para la traduccin aqu es un poco ms compleja. Debes
eliminar la primera letra de la palabra, pasarla al final y despus agregar
el sufijo 'ei'.
La manera ms apropiada para obtener el resto del string despus de
eliminar la primera letra es usar slicing. Si tienes un string s, puedes
obtener "el resto" de s desde i hasta jusando s[i:j]. Con esto obtienes los
caracteres desde la posicin i hasta i a j.
Por ejemplo, si s = "foo", entoncess[0:2] devuelve "fo". Piensa en cmo
usar esta tcnica para obtener el resto del string sin la primera letra.

Un anuncio de servicio pblico sobre la documentacin


Codecademy es una gran herramienta educacional: puedes imaginar
que es un saln de clase en lnea para aprender un lenguaje de
programacin. Sin embargo, es importante recordar que el nfasis debe
estar en que abordes los problemas y el aprendizaje pensando como
programador, y no en la memorizacin de cada uno de los mtodos o
matices de la sintaxis de un lenguaje de programacin determinado.
Pinsalo de esta forma: si te fueras para Alemania, no pensaras: "Es
cierto; yo vi un ao de alemn en la universidad, no necesito mi
diccionario ni mi aplicacin de traduccin!" Definitivamente llevaras
esas cosas para que te ayuden a recordar el vocabulario y la sintaxis, en
caso de que no supieras que hacer; incluso los traductores
profesionalesmantienen consigo diccionarios y manuales de gramtica
que son tiles para las palabras poco usuales y las construcciones
complejas.
Al igual que los traductores profesionales, los programadores
profesionales consultan ladocumentacin cuando no tienen claras las
prcticas adecuadas, olvidan cmo funciona un mtodo determinado, o
necesitan revisar la sintaxis. Puedes encontrar la documentacin de
Python aqu. Te recomendamos que la leas por cuenta propia!
Qu tan buenas son las funciones?
Una funcin es una seccin de cdigo reutilizable, escrita para realizar
una tarea especfica en un programa. Tal vez te preguntes por qu debes
separar tu cdigo en funciones, en lugar de simplemente escribirlo todo
en un bloque gigante. Probablemente ya hayas adivinado las respuestas,
pero aqu estn algunas de las ms importantes:
En caso de que algo salga mal en tu cdigo, es mucho ms fcil
encontrar y arreglar los errores si has organizado bien tu programa.
Asignar tareas especficas a funciones separadas ayuda en esta
organizacin.
Mediante la asignacin de tareas especficas a funciones separadas (una
idea que los expertos en informtica llaman separacin de
preocupaciones), puedes hacer tu programa menos redundante y tu
cdigo ms reutilizable; no solamente puedes usar repetidamente la
misma funcin en un solo programa, sin necesidad de reescribirla cada
vez, sino que incluso puedes usar esa funcin enotro programa.
Cuando aprendamos ms acerca de losobjetos, vers que hay muchas
cosas interesantes que podemos hacer con las funciones que
pertenecen a esos objetos (llamadas mtodos).

Ejemplos amplios
Muy bien! Ahora que sabes para qu sirven las funciones, es hora de
ver una en accin. (Ojal que te parezca familiar!)
Vers una variable en el editor, length, asignada al resultado o salida de
una funcin, len(). Esta funcin est incorporada en Python (en un
momento veremos cmo definir nuestras propias funciones; en el ltimo
ejercicio viste un pequeo adelanto). As es como funciona el cdigo de
la derecha:
Primero se calcula la parte derecha de la asignacin. Para calcular la
llamada de la funcin, se revisa la longitud del string entre parntesis.
Como se trata de un string literal, no necesita ser calculado (es decir,
que no es una expresin que Python tiene que resolver, como 1 + 1).
Entonces, este string es ingresado directamente como entrada en la
funcin len().
len() acepta estos datos de entrada y retorna (o da como salida) un
entero que representa la cantidad de caracteres en el string literal (en
este caso 45, incluyendo espacios y signos de puntuacin).
Hemos colocado una sentencia printpara mostrarte que el resultado
realmente es 45.
Cruce de funciones
Las funciones se definen usando la instruccin def (abreviacin de
"definir"). Las funciones tienen tres partes:
El encabezado, que incluye la instruccin def, el nombre de la funcin,
cualquier argumento que contenga la funcin, entre parntesis (()), y el
signo de dos puntos (:). (Veremos los argumentos en el siguiente
ejercicio);
Un string de documentacinopcional, que es un comentario de varias
lneas, con tres pares de comillas, que explica de forma brevequ hace
la funcin;
Y el cuerpo, que es el bloque de cdigo que describe los procedimientos
que la funcin lleva a cabo. El cuerpo est indentado (de igual forma que
las sentencias if,elif, y else).
Aqu est un ejemplo de cmo se vera la sintaxis en una funcin
simple,repetidor_ni, que simplemente muestra el mensaje "Ni!" en la
consola:
def repetidor_ni():

"""Muestra 'Ni!' en la consola."""


print "Ni!"
(Este no es un muy buen ejemplo de un string de documentacin; lo
ideal es que el string de documentacin explique algo que no sea tan
obvio.)
Llamada y respuesta
Est muy bien definir una funcin, pero no sirve de mucho si no
la llamas. De eso se trataba el cdigo que viste en la lnea 9 en el
ejercicio anterior: cuando Python vio jamon(), comprendi que quera
decir: "Busca la funcin llamadajamon y ejecuta el cdigo dentro de
ella." Los parntesis despus del nombre de la funcin le permiten saber
a Python que jamon es el nombre de una funcin.
Nadie lo hace
Cuando una funcin tomaargumentos, decimos que acepta oespera esos
argumentos. Por ejemplo, si la funcin nadie toma un solo
argumento, "la inquisicin espaola", diramos que nadie espera "la
inquisicin espaola".
Ja!
Para ser precisos, el argumento es el fragmento de cdigo que colocas
en medio de los parntesis de la funcin cuando la llamas, y
el parmetro es el nombre que escribes en medio de los parntesis de la
funcin cuando ladefines. Por ejemplo, en el ejercicio anterior, cuando
definimos cuadrado, le dimos el parmetro n (de "nmero"), pero
usamos el argumento10 cuando la llamamos.
Puedes pensar en los parmetros como alias que la definicin de la
funcin le da a los argumentos, ya que no sabe con anticipacin cules
argumentos va a recibir.
La sintaxis de una funcin que solamente muestra el argumento que
espera debera parecerse a la siguiente.
Definicin de la funcin:
def nadie(sentencia):
print sentencia
Llamada de la funcin:
nadie("La inquisicin espaola")
Y en la consola se mostrar:

"La inquisicin espaola"


que es el valor que adquiere el parmetro sentencia cuando llamas
anadie y usas el argumento "La inquisicin espaola"
Mltiples !
Hablando de no saber qu esperar: tus funciones no solamente
desconocen cules argumentos tendrn, sino que, a menudo, tampoco
saben cuntosargumentos sern.
Digamos que tienes una funcin,actor_favorito, que con printmuestra en
pantalla el argumento que recibe de parte del usuario. Podra verse ms
o menos as:
def actor_favorito(nombre):
"""Muestra tu actor favorito."""
print "Mi actor favorito es: " , nombre
Eso es fabuloso para solamente un actor, pero, qu tal si quieres
mostrar en pantalla los actores favoritos del usuario, sin saber cuntos
nombres va a ingresar?
La solucin: argumentos mltiples. Los argumentos mltiples son
argumentos precedidos por un *, que le dice a Python "Hey, amigo, no
tengo idea de cuntos argumentos habrn, pero podran ser ms de
uno." Por convencin se usa *args, pero puedes usar cualquier nombre
que quieras precedido por un *.
Funciones que llaman funciones
Hasta ahora hemos visto funciones que pueden mostrar texto en la
consola o hacer aritmtica simple, pero las funciones pueden ser mucho
ms poderosas. Por ejemplo, est completamente permitido que una
funcin llame a otra.
Ya s Kung Fu
Recuerdas la instruccin import thisen el primer ejercicio de este curso?
se era un ejemplo de cmo importar un mdulo. Un mdulo es un
archivo que contiene definiciones que puedes usar, incluyendo variables
y funciones. El intrprete se atascara si tuviera variables y funciones
por ah todo el tiempo; as que solamente tienes que importar el mdulo
que quieras cuando lo necesites.
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,
escribe

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.
Python tiene un mdulo llamado mathque incluye una cantidad de
variables y funciones tiles y (tal vez ya lo adivinaste) sqrt() es una de
esas funciones. Para poder obtener la funcin, 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 (adems de todo lo que contiene el mdulo math).
Importar por completo el mdulomath es un poco molesto, por dos razones:
primera, solamente queremos la funcin sqrt; y segunda, tenemos que
recordar escribir math.sqrt() cada vez que queramos recuperar esa

funcin desde el mdulo math.


Afortunadamente es posible importar solo ciertas variables o funciones
desde un mdulo determinado. Extraer una sola funcin desde un
mdulo se llama importacin de funcin, y se hace con la
instruccin from, as:
from modulo import funcin
onde "mdulo" y "funcin" son reemplazados por los nombres del
mdulo y de la funcin que quieras. La mejor parte es que ahora
solamente tienes que escribir sqrt() para saber la raz cuadrada de un
nmero: ya no ms math.sqrt()!
Importaciones universales
Grandioso! Encontramos una manera de escoger las variables y
funciones que queremos de los mdulos que las contienen.
Qu tal si queremos una gran parte de (o todas) las variables y
funciones que estn disponibles en un mdulo? Podramos
usar import mdulo, pero existe otra opcin.
Cuando usas import math, bsicamente ests diciendo: "Treme a mi
apartamento la caja que dice math; as puedo usar todas las cosas
geniales que hay adentro". Cuando quieras una de las herramientas
adentro de math, tienes que ir hasta la caja y sacar lo que quieres (y esa

es la razn por la que tienes que escribir math.nombre para todo; as la


caja est en tu apartamento, todas las cosas grandiosas que quieres
siguen adentro).
Cuando usas from math import sqrt, ests diciendo:
"Treme solamente la herramienta de raz cuadrada de la caja que dice
math, pero no me traigas la caja a mi apartamento". Esto quiere decir
que puedes usar sqrt sin hacer referencia a math; pero si quieres alguna
otra cosa que se encuentre enmath, tienes que importarla por separado,
ya que la caja math no est en tu apartamento para que busques en
ella.
La tercera opcin es decir: "No me traigas la caja que dice math a mi
apartamento, pero tremeabsolutamente todas las herramientas que
hay adentro". Esto te da la ventaja de tener una gran variedad de
herramientas y, como las tienes en tu apartamento y no estn todas
guardadas dentro de la caja math, no tienes que escribir math.nombre a
cada rato para conseguir lo que quieres.
La sintaxis para hacerlo es:
from modulo import *
Si conoces CSS, habrs visto que el signo * tambin significa "todos los
selectores", y que desempea una funcin parecida en Python: significa
cada nombre de variable y de funcin dentro de un mdulo.

Aqu hay dragones


Esto es hay algo que se aprende en la vida (y no solamente cuando se
programa): solo porque puedas hacer algo no significa que
lo debas hacer.
Las importaciones universales pueden parecer grandiosas 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 from math import*, tendrs un
problema: dos funciones diferentes con el mismo nombre exacto.
Aunque tus definiciones propias no entren directamente en conflicto con
los nombres de los mdulos importados, si usas import * en varios

mdulos al tiempo, no tendrs forma de diferenciar cul variable o


funcin vino de qu parte. Sera como si alguien echara en tu
apartamento una tonelada de cosas al azar, que vienen de un montn
de cajas diferentes, y luego tirara lejos las cajas para que no pudieras ni
ver de dnde vienen las cosas.
Por estas razones, lo mejor es usar siempre import mdulo y sufrir el
inconveniente de tener que escribir mdulo.nombre, o simplemente usar
import para importar variables y funciones especficas desde varios
mdulos, segn sea necesario.
De algo ms que strings
Ahora que entiendes qu son las funciones y cmo importar mdulos,
vale la pena mostrarte algunas de las funciones geniales que Python
tiene incorporadas (no se requieren mdulos!).
Ya conoces algunas de las funciones incorporadas que hemos usado en
(o para crear) los strings, tales como.upper(), .lower(), str() y (ms
recientemente) len(). Son grandiosas para trabajar con strings, pero...
qu hay de algo un poco ms analtico?
max()
La funcin max() toma cualquier cantidad de argumentos y retorna el
mayor de ellos. (Aqu, "el mayor" puede tener significados variados, as
que es mejor usar max() en cosas como enteros y reales, en donde los
resultados son concretos, y no en otros objetos, como strings.)
Por ejemplo, max(1,2,3) dar como resultado 3 (el nmero mayor en el
conjunto de argumentos).

min()
Como te habrs imaginado, min()hace lo contrario de max(): dada una
serie de argumentos, retorna el menor de ellos.
abs()
La funcin abs() retorna 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 tienen la misma distancia desde0, y por lo tanto, tienen el
mismo valor absoluto: 3. La funcin abs()siempre retorna un valor

positivo, y a diferencia de max() y min(), solamente puede tomar un solo


nmero.
type()
Por ltimo, la funcin type() hace algo muy interesante: retorna 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('jamon')
print type({'Nombre':'John Cleese'})
print type((1,2))
Python dar como resultado:
<type 'int'>
<type 'float'>
<type 'str'>
<type 'dict'>
<type 'tuple'>
Ya conoces los enteros (int), reales (float), y los strings; en lecciones
posteriores aprenders acerca de los diccionarios (dict) y las tuplas
(tuple).

Introduccin a las listas


Las listas son un tipo de datos que puedes usar para almacenar una
coleccin de diferentes fragmentos de informacin en forma de
secuencia, bajo un solo nombre de variable. (Los tipos de datos que ya
aprendiste incluyen strings, nmeros, y booleanos.)
Puedes asignar elementos a una lista con una expresin de la
formanombre_de_lista= [elemento_1, elemento_2], con los elementos en
medio de corchetes. Una lista tambin puede estar vaca: lista_vacia
= [].
Acceso mediante ndices
Puedes acceder a un elemento individual de la lista mediante sundice.
Un ndice es como una direccin que identifica la posicin de un
elemento en una lista. El ndice aparece directamente despus del
nombre de la lista, en medio de corchetes, as: nombre_de_lista[ndice]
Los ndices de las listas comienzan con 0, no con 1! Puedes acceder al
primer elemento de una lista as:nombre_de_lista[0]. El segundo
elemento de una lista se encuentra en el ndice 1: nombre_de_lista[1]. A
los expertos en informtica les encanta comenzar a contar desde cero.
Nuevos vecinos
El ndice de una lista se comporta como cualquier otro nombre de
variable! Puede ser usado para acceder a y asignar valores.
Ya viste cmo acceder a un ndice de lista, as:
zoo_animals[0]
#recupera el valor "pangolin"
En la lnea 5 puedes ver cmo funciona la asignacin:
zoo_animals[2] = "hiena"
#cambia "perezoso" por "hiena"
Retrasos y longitud de listas
Una lista no tiene que tener una longitud fija: puedes aadir elementos
al final de una lista cada vez que quieras! En Python, decimos que las
listas son mutables, es decir, que se pueden cambiar.
Puedes aadir elementos a las listas con la funcin incorporada de
listasappend(), as:
nombre_de_lista.append(elemento)

chale un vistazo: hemos usadoappend para aadir un string


a maletinen la lnea 2.
Puedes saber cuntos elementos tiene una lista con la funcin len() (es
"length" (longitud) abreviado), as:
len(nombre_de_lista)
Particionado de listas
Si solo quieres una pequea parte de la lista, se puede acceder a esa
porcin usando una notacin especial en los corchetes del
ndice.nombre_de_lista[a:b] retornar una porcin de nombre_de_lista,
comenzando con el ndice a y terminando antes del ndice b.
Si le dices a Python mi_lista = [0, 1,2, 3], entonces mi_lista[1:3]retornar
la lista [1, 2], sin cambiar la lista original! Observa:
mi_lista = [0, 1, 2, 3]
mi_porcion = mi_lista[1:3]
print mi_lista
#mostrar [0, 1, 2, 3]
print mi_porcion
#mostrar [1, 2]
Particionado de listas y de strings
Puedes particionar un string exactamente igual que una lista! De hecho,
puedes imaginar que los strings son listas de caracteres: cada caracter
es un elemento en secuencia de la lista, comenzando desde el ndice 0.
Si la porcin de tu lista incluye el primer o el ltimo elemento en una
lista (o en un string), el ndice de se elemento no tiene que estar
incluido. Aqu hay un ejemplo:
mi_lista[:2]
#recupera los dos primeros elementos
mi_lista[3:]
#recupera del cuarto al ltimo elemento
Mantener el orden
Puedes buscar a travs de una lista con la
funcin index().mi_lista.index("dog") dar como resultado el primer

ndice que contenga el string "dog". Ocurrir un error si ese elemento no


existe.
Los elementos pueden ser aadidos a la mitad de una lista (en lugar de
al final) con la funcin insert().mi_lista.insert(4,"cat") aade el elemento
"cat" al ndice 4 de miLista, y desplaza el elemento que estaba en el
ndice 4 y todos los elementos que le siguen al siguiente ndice (es decir,
todos se mueven un ndice hacia adelante).
Para uno y para todos
Si quieres hacer algo con cada elemento de la lista, puedes usar un
bucle for. Presta mucha atencin si has aprendido sobre los
bucles for en JavaScript! Son diferentes en Python.
Aqu est la sintaxis:
for variable in nombre_de_lista:
# Haz algo!
El nombre de una variable sigue a la instruccin for; a su vez se le
asignar el valor de cada elemento de la
lista.in nombre_de_lista designa anombre_de_lista como la lista en la
que el bucle funcionar. La lnea termina con un signo de dos puntos (:)
y el cdigo indentado que la sigue ser ejecutado una vez por cada
elemento de la lista.
Ms con 'for'
Si tu lista es un revoltijo, tal vez necesites ordenarla con ayuda
desort(). mi_lista.sort() ordenar los elementos en mi_lista en orden
numrico/alfabtico ascendente.
Vale la pena resaltar que sort() no genera una lista nueva; en vez de
eso, tu lista mi_lista es ordenada en su lugar (la versin ordenada
reemplaza la versin sin ordenar).
Esta parte que sigue es clave
Un diccionario es parecido a una lista, solo que puedes acceder a los
valores buscando una clave en vez de un ndice. Una clave puede ser
cualquier string o nmero. Los diccionarios se encuentran rodeados por
llaves, as:
d = {'clave1' : 1, 'clave2' : 2, 'clave3' : 3}
Este es un diccionario llamado d con tres pares clave-valor. La
clave'clave1' apunta al valor 1, 'clave2'a 2, y as sucesivamente.

Los diccionarios son grandiosos para cosas como las guas telefnicas
(hacer una pareja de nombre y nmero telefnico), pginas de inicio de
sesin (hacer una pareja de una direccin de correo electrnico y un
nombre de usuario), y ms!
Nuevas entradas
Cuando se asigna una nueva clave, se crea un nuevo par clave-valor en
un diccionario, as:
nombre_diccionario[clave_nueva] = valor_nuevo
Un par de llaves vaco {} es un diccionario vaco, tal como un par de
corchetes vaco [] es una lista vaca.
La longitud len() de un diccionario es la cantidad de pares clave-valor
que contiene. Cada par se cuenta solo una vez, incluso si el valor es una
lista. (As es: puedes colocar listas dentro de los diccionarios!)
Cambiar de parecer
Al igual que las listas, los diccionarios son mutables (se pueden
cambiar). Se pueden eliminar elementos de un diccionario usando el
comando del:
del nombre_diccionario[nombre_clave]
eliminar del diccionario la clavenombre_clave y su valor asociado.
Se puede asociar un nuevo valor a una clave asignndole un valor a la
clave, as:
nombre_diccionario[clave] = valor_nuev
Es peligroso ir solo! Llvate esto
Por ltimo, mi_lista.remove(valor)eliminar el primer elemento
demi_lista cuyo valor sea igual a valor. La diferencia
entre del y .remove() es:
del elimina una clave y su valor con base en la clave que le indiques que
elimine.
.remove() elimina una clave y su valor con base en el valor que le
indiques que elimine.
Antes de comenzar
Antes de comenzar nuestro ejercicio, vamos a repasar una vez ms los
bucles for de Python. Por ahora, solamente vamos a repasar el

buclefor en trminos de cmo se relaciona con listas y diccionarios. En


cursos posteriores explicaremos ms usos geniales de los bucles for.
Los bucles fornos permiten iterar a travs de 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 bucle de ejemplo estara
estructurado de la siguiente forma:
a = ["Una lista de algun tipo]
for x in a:
# hace algo para cada x
Este bucle ejecutar todo el cdigo del bloque indentado debajo de la
sentencia for x in a:. x ser el tem de la lista que se est calculando en
este momento. As que, si ejecutamos:
for item in [1, 3, 21]:
print item
mostrar en pantalla 1, luego 3, y luego 21. La variable en medio
de fory in puede tener cualquier nombre de variable (en el momento se
llamatem), pero debes tener 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.
Control de flujo y bucles
Los bloques de cdigo en un bucle forpueden ser tan grandes o tan
pequeos como sea necesario. Cuando haces bucles, tal vez quieras
llevar a cabo diferentes acciones dependiendo del tem particular en la
lista. Esto se puede lograr combinando tus bucles con el control de flujo
(sentenciasif/else), que se parezcan a lo siguiente:
for item in numeros:
if (condicion == True):
# haz algo
else:
# haz otra cosa
Asegrate de controlar tu indentacin, o podras terminar confundido!
Listas + Funciones

Las funciones tambin pueden tomar listas como sus datos de entrada y
realizar varias operaciones en ellas.
Bucles en strings
Como lo hemos mencionado, los strings son como listas donde los
caracteres son sus elementos. Puedes pasar un bucle a travs de los
strings de la misma manera que lo haces con las listas! Aunque no te
vamos a pedir que lo hagas en esta seccin, hemos puesto en el editor
un ejemplo de cmo podra funcionar un bucle que pasa por un string.

Você também pode gostar