Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
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 ===.)
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."
"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).
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():
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
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
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
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.