curso python

Upload: roger-caamal

Post on 09-Jan-2016

21 views

Category:

Documents


6 download

DESCRIPTION

Curso de Python con ejercicios basados en Codecademy. El curso está diseñado para chicos desde edad de preparatoria en adelante. Si tienen más ejercicios para este nivel ojalá puedan subirlo.

TRANSCRIPT

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 elintrpretePython 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 llamadasobjetos, 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.VariablesUno de los conceptos ms bsicos en programacin son lasvariables. Una variable es una palabra/identificador que capta un nicovalor. Por ejemplo, digamos que para tu programa necesitas el nmero5, pero no lo vas a usar de inmediato. Puedes establecer una variable, digamosjamon, para que capte el valor5y guardarla para usarla ms tarde, as:jamon =5Es fcil declarar variables en Python; solamente tienes que escribir un nombre/identificador, comojamon, y usar=para asignarle un valor, y listo!Tipos de datosGrandioso! Ahora, cada vez que lo necesitemos, podemos tomar el valor10refirindonos al nombremi_variable.En este caso, eltipo de datosdemi_variableesentero(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, como1.970), ybooleanos(que pueden serTrueoFalse).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! Pythondistingue entre maysculas y minsculas. Usaremos las comillas cuando lleguemos a losstrings, los cuales veremos en la siguiente unidad.Has sido reasignadoBuen 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_entcomo7, pero luego quieres cambiarla a3, todo lo que tienes que hacer es decirle a Pythonmi_ent =3, y cambiar el valor demi_entpor ti.Intntalo y observa!

Qu es una sentencia?Imagina que unasentenciaen 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, perosonlos 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 porespacios 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 correctosObserva 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 interpretacinEn la introduccin a esta unidad mencionamos que Python es un lenguajeinterpretado(es decir, que se ejecuta usando unintrprete). 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 lneaHabrs notado algunas instrucciones en el editor que comienzan con un smbolo de#(numeral). Estas lneas del cdigo se llamancomentarios, 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 lneasA veces tienes que escribir un comentariorealmentelargo.#nicamente funciona en una sola lnea; y si bienpodrasescribir 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 aritmticosLas sentencias de Python no se limitan a simples expresiones de asignacin comojamon =3; tambin comprenden una cantidad de expresiones matemticas usandooperadores aritmticos.Hay seis operadores aritmticos en los cuales nos vamos a concentrar:Suma (+)Resta (-)Multiplicacin (*)Divisin (/)Exponenciacin (**)Mdulo (%)ExponenciacinExcelente 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 laexponenciacin sea nueva, as que requiere un poco de explicacin.El operador**eleva el primer nmero, labase, a la potencia del segundo nmero, elexponente. As que, si escribes2**3, obtendrs8(2**3es lo mismo que2 * 2 * 2, ambos son igual a8).5**2=25,2**4=16, y as sucesivamente.MduloImpresionante! 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 evale5 % 2, el resultado ser1(ya que2cabe en5dos veces, y sobra1).10 % 5 = 0,113 % 100 = 13, y as sucesivamente.

Repaso generalBuen trabajo! Hasta el momento has aprendido lo siguiente en Python:Variables, que son referencias que contienen valores;Tipos de datos(tales comoenteros, reales, andbooleanos);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!); yOperadores aritmticos (incluyendo+,-,*,/,**, y%).

Tu comida favoritaEste proyecto se dise para complementar laUnidad 1: Sintaxis de Python. Supone la familiarizacinnicamentedel 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.50Impuesto del restaurante: 6.75%Propina: 15%Vas a calcular la propina sobre el costo total de la comida (incluyendo el impuesto).El impuestoBien! 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 lasugerencia.)La propinaComo 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 lneaMuy bien! Tenemos las tres variables que necesitamos para realizar nuestro clculo, y conocemos un montn de operadores aritmticos que nos podrn ayudar.Vimos en laUnidad 1que podamosreasignaruna variable cuando fuera necesario; por ejemplo, podramos decirjamon =7en un punto del programa, y despus cambiar de opinin y decir quejamon =3.Segundo verso, lo mismo que el primeroBueno,casilo mismo. Aqu, vamos a presentar una nueva variable en lugar de cambiar una variable existente.Ahora quecomidaindica el valor del costo de la comida + impuesto, incorporemos una nueva variable en la lnea 8,total, igual a la nuevacomida+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 detotalde una forma bien presentada y medianteprintlo mostrar en laconsolacon dos nmeros decimales. (Aprenderemos sobre formato de los strings, la consola, y la instruccinprinten la Unidad 2!)

Paso uno: strings(Para este curso se requiere haber visto laUnidad 1: Sintaxis de Python.)Otro tipo de datos til en Python son losstring. Los strings soncadenasde 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:"Somoslos#1!"Unstring literales un string creado al escribirloliteralmenteen 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 usarcualquiersmbolo 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 estnescapados, o sea, que se marquen como nicos. El caracter de la barra invertida (\) hace este trabajo por nosotros!Acceso por desplazamientoBuen 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 unsubndiceodesplazamiento, 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 locuraBuen trabajo! Ahora hablaremos acerca de algunos de losmtodosque estn disponibles para ser usados con strings.Unmtodoes unafuncinde unobjetoespecfico (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 quelen()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 mtodostr(), a ver qu te parece.El mtodostr()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 puntosComo lo prometimos, ahora explicaremos la razn por la que usaslen(string)ystr(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 asociarnicamentea los strings con notacin de puntos.Uso de print con strings literalesYa hemos identificado la ventana en la parte inferior derecha de la pantalla comoconsola/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 laconsola. (Si conoces JavaScript, sabes queconsole.logregistrael resultado de la evaluacin de tu cdigo en la consola;printes la versin de Python deconsole.log.)Si no has estudiado JavaScript, no temas! Todo lo que debes saber es queprintmuestraen la consola el resultado de la evaluacin que el intrprete hace de tu cdigo, para que la puedas ver.Concatenacin de stringsSabes 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, losconcatena(los une). "Monty " + "Python"dar como resultado"Monty Python"!Conversin explcita de stringsRecuerdas cuando hablamos del mtodostr()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 diciendoexplcitamentea Python: "Hey, yo s que esto no es un string, pero lo quiero convertir en uno." Compralo con el procesoimplcitode literalmente colocarle comillas a una secuencia de caracteres, para convertirla en un string.Formateo de strings con %, parte 1Que 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 soninmutables; no los puedes cambiar una vez que los hayas creado.Sin embargo,existeuna manera de hacer que tus strings sean flexibles, y es con elformateo 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 2Viste? 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 familiarBuen trabajo! Haz aprendido un montn en esta unidad, incluyendo:Qu son los strings, y cmo crearlos implcitamente/literalmente (usando' 'o" ") o explcitamente (usando el mtodostr());Los mtodos de strings, tales comolen(),upper(), ylower();La instruccinprintpara mostrar en la consola la evaluacin que el intrprete hace de tu cdigo; yTcnicas 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 Pythony 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 usanprintpara 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, usarprintpara mostrar los nmeros en la consola sin sumarlos, en caso de que su suma sea mayor que 100.Elcontrol de flujonos 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 elentornodel programa. (El entorno es el nombre tcnico para todas las variablesy sus valoresque 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 (=)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 contrarioBuen trabajo!Basado en nuestras comparaciones, probablemente ya adivinaste que las comparaciones en Python generan uno de dos resultados:TrueoFalse. Estas son las instancias de un tipo de datos que mencionamos brevemente en laUnidad 1, llamadobooleanos, y son lasnicasdos instancias. En Python, nada es ms o menos "True", ni ms o menos "False": o esTrue, o esFalse(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 (TrueoFalse), y t escribirs una expresin que genere el resultado correspondiente.Ser and/or No SerLosoperadores 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 esexclusivamenteuna 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 pelculasMonty Python and the Holy GrailOMonty 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 seaninguna de las dos. Es decir, Python es ms divertido que tu mam.Los operadores booleanos generan valores booleanos:TrueoFalse(era de esperarse). Vamos a ver los tres operadores uno por uno.AndEl operador booleanoandsolamente da como resultadoTruecuando lasexpresionesenamboslados deandson verdaderas (True). Una expresin es cualquier sentencia que incluya una o ms variables y operadores (aritmticos, lgicos, o booleanos). Por ejemplo:13esFalse, porque ni uno es mayor que dos ni dos es mayor que tres.NotEl operador booleanonotda como resultadoTruepara sentencias False yFalsepara sentencias True. Recuerda: los nicos valores booleanos sonTrueyFalse!Por ejemplo:notFalsedar como resultadoTrue, al igual quenot40>41. Si aplicasnota 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 delorden de los operadores?); existe unorden de precedenciauorden de operacionespara los operadores booleanos. Ese orden es el siguiente:primero se calculanot;despus se calculaand;por ltimo se calculaor.Este orden se puede cambiar si se incluyen parntesis (()). Cualquier elemento que est entre parntesis es calculado como su propia unidad.Por ejemplo:TrueornotFalseandFalseretornarTrue. Puedes ver por qu? Si no puedes, consulta laSugerencia.Unabuena prcticaes 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 condicionalesRecuerdas 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 sentenciaifest delimitado por llaves ({}). En Python, los espacios se encargan de hacer ese trabajo por nosotros.Aqu hay un ejemplo de una sentenciaifen Python:if 8 < 9: print "Ocho es menor que nueve!"ifsiempre va seguido de una expresin, la cual va seguida de dos puntos (:). Elbloque de cdigo(el cdigo que ser ejecutado en caso de que la expresin sea igual aTrue) est indentado.Esto tambin es vlido para las funcioneselifyelse(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 sentenciaelsees el complemento de la sentenciaif. Si bien una sentenciaifhar que el programa contine en la siguiente lnea de cdigo despus del bloque de cdigoif, incluso si no hay una sentenciaelse, se considera una buena prctica escribir una sentenciaelsepor cada sentenciaif. Un parif/elsele 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 sentenciaelse."Recuerdas el primer ejercicio de esta seccin, cuando te dijimos "haz queresponsesea 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 deelse(o de otroelif), 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 sentenciaselseif, o una sentenciaswitch. Python lo hace mucho ms simple: solamente existeelif.De verdad, qu buen trabajo! Aqu est lo que has aprendido en esta unidad:Conceptos bsicos del control de flujo;Comparadores (como>,