
Programar consiste básicamente en lograr que el ordenador haga lo que quiero. No es una definición muy técnica (no le gustaría a más de un nerd...) pero tampoco está tan mal. Aprendiendo Python, podrás crear programas para que tu XO haga lo que tú quieras, ya sea jugar, calcular, dibujar o ayudarte mucho en tu trabajo. El resultado será todo tuyo, algo que construiste gracias a tu esfuerzo y dedicación. El ordenador no improvisa, ni asume, ni supone: hace EXACTAMENTE, REPETIDAMENTE, lo que tú le digas. Ni más, ni menos. Programar es una sutil combinación de técnica y arte, que nos embarca en grandes aventuras.
En este capítulo comenzarás tu aventura con Python. Aprenderás:
La palabra en inglés "python" identifica a un tipo de serpiente constrictora (de esas que te apretan y apretan hasta dejarte azul...) llamada PITÓN. Las pitones, igual que sus parientes cercanas las boas, son serpientes constrictoras, y por definición, NO venenosas. Normalmente atacan, emboscadas, a animales que pasan cerca. Matan a sus presas por asfixia, agarrándolas primero con la boca y enrollando rápidamente su cuerpo alrededor de ellas. Una vez así, se ejercen presiones altas sobre las costillas y pulmones de su presa, que de este modo no puede inhalar. De ahí que puedas quedar azul si pasás cerca de una...:)
Python es (además...) un lenguaje de programación poderoso pero al mismo tiempo sencillo de aprender y usar. Fue desarrollado por Guido van Rossum, allá por el año 1991 (¡ 20 años ya !). Con este lenguaje podrás crear rápidamente un pequeño proyecto. Pero a medida que aprendas, y que tus conocimientos te permitan ir cada vez más lejos, Python te acompará, brindándote nuevas posibilidades. De hecho, muchos sistemas de gran sofisticación y complejidad en el comercio y la industria fueron programados con él. Pero habiendo tantos lenguajes de programación en la vuelta (¿ oíste alguna vez hablar de Pascal, Basic, C, Java, PHP ?)... ¿ por qué elegir Python?
Veamos algunas de sus ventajas.
Un buen lenguaje de programación debe reducir al máximo la distancia entre la intención del programador y la acción generada en el ordenador. La mayoría de los lenguajes más populares (¿ te acordás de Pascal, Basic, C, Java, PHP ? Si no, leé más arriba...) son considerados lenguajes de alto nivel porque se asemejan mucho al lenguaje humano. Python, muy parecido al inglés, es uno de ellos, y muy bueno, por cierto. Crear programas con Python es tan sencillo y "natural" que muchos hablan de programar "a la velocidad del pensamiento". Quizás no sea tan así, pero es un hecho que una vez adquiridos los conocimientos básicos y algo de experiencia, programar se vuelve sencillo, rápido y divertido. Porque también se trata de eso: programar es una actividad intelectual desafiante y divertida, que nos depara muchas satisfacciones y alegrías. La sensación de constatar que la máquina hace exactamente lo que quería es una de las más placenteras y gratificantes... :)
CHISME:
Parece ser que Guido van Rossum le puso PYTHON en honor a un conocido grupo humorístico inglés llamado "Monty Python" (algo así como "Les Luthiers" ingleses...) Sin embargo, la "mascota" que identifica al lenguaje es una provocativa serpiente verde que mete miedo...
La facilidad de uso de Python se traduce en gran productividad para los programadores profesionales. Los programas son más cortos y por tanto más rápidos de escribir. De hecho, se estima que los programas en Python son de 3 a 5 veces más cortos que los producidos con JAVA, y de 5 a 10 veces más cortos que sus equivalentes en C++. ¿ Interesante, no ?
Python tiene todo el poder que podemos esperar de un lenguaje de programación moderno. Es lo suficientemente poderoso para atraer a miles de programadores en todo el mundo así como a importantes compañías como Google, Hewlett-Packard, IBM, Industrial Light + Magic, Microsoft, NASA, Red Hat, Verizon, Xerox, and Yahoo!. Python es también usado como herramienta profesional en conocidas empresas que fabrican juegos, como Activision, Electronic Arts e Infogrammes.
Si conoces algo de programación, probablemente hayas oído el término "programación orientada a objetos" o "OOP" (Object Oriented Programming) para hacerlo más corto. OOP es básicamente un gran adelanto en la manera en que los programadores piensan a la hora de resolver problemas con los ordenadores. Incluye una forma intuitiva de representar la información y las acciones de un programa. No es la única forma de hacerlo, pero para los grandes proyectos, es sin duda una de las mejores. Lenguajes como C#, Java y Python son todos orientados a objetos. Pero Python va más allá. En C# y Java, OOP no es una opción. Esto hace que programas pequeños, sencillos, sean excesivamente complejos, y requieran muchas explicaciones antes que un aprendiz de programador pueda crearlos. En Python, usar técnicas de OOP es OPCIONAL. Tenemos todo el poder de OOP a nuestra disposición, pero podemos ELEGIR CUÁNDO usarlo. Python te brinda poder y flexibilidad.
Python puede ser integrado con otros lenguajes como C, C++ y Java. Esto significa que podemos aprovechar el trabajo hecho en otro lenguaje y ampliarlo y mejorarlo con Python. Esto también supone aprovechar las ventajas de otros lenguajes (como la velocidad de ejecución de C++) a nuestro favor, sin perder la facilidad de uso que caracteriza a Python.
Python "corre" (es decir, funciona) en cualquier tipo de ordenador, desde las netbooks como las XO hasta las supercomputadoras CRAY (averiguá algo más de ellas en Google o la Wikipedia...te sorprenderás) Y hasta que no tengamos una de ésas para jugar, podemos divertirnos un buen rato en Windows, DOS, Apple Macintosh o máquinas Linux (como las XO). Los programas escritos en Python son independientes de la plataforma donde corren, un término técnico para decir que no importa el sistema operativo que tenga el ordenador, Python correrá sobre él. Lo que significa que si haces un programa en Python en una PC, puedes enviar una copia a un amigo que tenga Python en su ordenador Linux o Macintosh y el programa correrá sin mayores problemas. Eso se llama ahorrar tiempo y esfuerzo...
Una gran cantidad de gente usa Python en todo el mundo. Y su número crece continuamente. Además, cuenta con un TUTOR, la "Python Tutor mailing list", que permite a los jóvenes programadores plantear sus preguntas y aprender de los intercambios.
La lista está disponible en http://mail.python.org/mailman/listinfo/tutor. Hay otras listas y comunidades más específicas, pero todas se caracterizan por un lindo y amistoso ambiente. Alcanza con buscarlas en Google para ver la enorme cantidad que existe.
Python es gratuito. Puedes instalarlo en tu máquina, o en la de un amigo, en la más absoluta legalidad y sin tener que pagar un centavo por ello. Pero hay más: puedes copiarlo y modificarlo. El concepto de software libre hace de Python un lenguaje popular y exitoso.
Toda XO distribuida por el Plan Ceibal cuenta con una actividad que nos permite trabajar con Python. Casualmente (?), se llama PIPPY, simbolizada con una simpática serpiente.
Pippy nos permite ingresar comandos escritos en Python y ver inmediatamente sus resultados. Esta modalidad es muy práctica para aprender a programar, porque el efecto de nuestras órdenes es inmediato, pudiendo entonces corregirlas si es necesario.
Al ejecutar Pippy aparecen 2 grandes ventanas aproximadamente del mismo tamaño. En la ventana superior, podremos escribir los comandos de nuestro programa en Python. En la inferior aparecerá el resultado de los mismos.
¿ Listos ? ¡ Ya ! ¡ Creemos nuestro PRIMER PROGRAMA en Python !
Será muy, pero muy SENCILLO. En realidad, imitará una de las primeras lindas sorpresas que nos da un bebé: HABLAR. Precisemos: nuestro primer programa no hará hablar a la máquina (ya vendrá...) sino que desplegará en la pantalla un texto (que nosotros leeremos). Obviamente, no es lo mismo, pero para ser un primer intento, no está nada mal...
Para lograrlo deberemos dar una orden a la máquina, algo así como "¡ Imprime ésto en la pantalla !" Pero el ordenador no entiende el español, así que se lo ordenaremos usando algún "lenguaje" que comprenda. Debido a su popularidad mundial, el inglés parece ser una buena opción. Y justamente es el que usaremos: la orden será PRINT y pondremos entre comillas (") el texto que queremos que imprima en la pantalla. Como verán, somos algo fanáticos de la selección nacional uruguaya, así que nuestro texto será "¡¡ FUERZA LA CELESTE !!".
La orden completa (llamada a veces comando) queda así:
PRINT "¡¡ FUERZA LA CELESTE !!"
Esto es lo que escribiremos en la ventana CÓDIGO de la figura anterior.Verás que la primer línea tiene (casualmente...) el número 1 a su izquierda. Allí escribiremos nuestro comando. Notarás que cuando terminamos de escribir PRINT el ordenador lo pinta de rojo oscuro, lo que significa que reconoció como válida esa orden. Notarás también que el texto a imprimir, que comienza y termina con comillas (") aparece en otro color: violeta.
Luego de escribir el comando y verificar lo hecho (excelente hábito de los buenos programadores) pulsamos el botón verde que dice EMPIEZA !
En la ventana EJECUCIÓN veremos que aparece, como por arte de magia, el texto ¡¡ FUERZA LA CELESTE !!.
¡ LISTO !
¡ Terminamos con éxito nuestro primer programa en Python ! (ya puedes salir a festejar)
Siempre es reconfortante verificar que el ordenador hizo exactamente lo que queríamos. Nos da fuerzas para seguir y aprender más. Pero no te desanimes cuando te equivoques. Tarde o temprano sucederá, ya que no existe el programador infalible (aunque unos cuantos se lo crean...) Lo que hay que hacer entonces es sencillo, y debe pasar a forma parte de tus hábitos como programador:
1) Revisa lo escrito. Verifica que lo has hecho bien y que la máquina lo reconoce como válido (a través de los colores que ya citamos)
2) Verifica que no hay nada más (otras palabras, signos, puntos...) que pueda confundirla (y, al detectarlo, te lo señalará y se detendrá -sí, los ordenadores son máquinas bastante haraganas y con muy poca iniciativa. Más te vale que lo vayas asumiendo...-)
¿ Pero qué pasa entonces cuando cometí un error ?
Supongamos que olvidé CERRAR el texto a imprimir con comillas. El color no cambia (sigue violeta). Pero cuando presiono EMPIEZA ! noto que no solo no aparece lo que quería en la ventana EJECUCIÓN sino que, en su lugar aparece uno de los terrores de los programadores principiantes: el bendito "SyntaxError". Esto significa que Pippy quedó esperando las comillas al final del texto, pero como no las encontró, no lo imprimió y me devolvió un error, llamado error de sintaxis, que me señala que lo escrito no es sintácticamente correcto (de ahí el mensaje en inglés). La palabra sintaxis deriva del latín syntaxis, que a su vez tiene origen en un término griego que significa “coordinar”. Se trata de la parte de la gramática que enseña a coordinar y unir las palabras para formar las oraciones y expresar conceptos. En informática, la sintaxis es el conjunto de reglas que definen las secuencias correctas de los elementos de un lenguaje de programación.
Y así como en cualquier idioma es importante respetar la gramática y la sintaxis para hacernos comprender, en los lenguajes de programación también lo es. Pero en ellos lo es aún más, porque si no respeto la sintaxis, sencillamente NO FUNCIONAN: la máquina no hará NINGÚN esfuerzo por entender lo que QUISE decir (pero que NO dije). De ahí que sea tan importante corregirlos: si no lo hago, nunca veré el resultado esperado. Te guste o no...
COMENTEMOS
Una de las tareas más importantes (y aburridas, hay que decirlo...) es COMENTAR nuestros programas. Esto consiste en escribir pequeños comentarios, dentro del programa, que expliquen cómo hicimos lo que queríamos hacer. ¿ Por qué dedicar tiempo y esfuerzo a esto si ya lo sé perfectamente ? Porque HOY lo sé y lo recuerdo. Pero mañana, o pasado, o dentro de un mes o un año, NO lo recordarás. Garantido. Y entonces te aseguro que perderás MUCHO más tiempo tratando de entender lo que tú mismo hiciste...hace tiempo. Y ni te cuento si alguien quiere entender lo que hiciste leyendo tu programa. Muchas veces es más sencillo crear un programa nuevo que tratar de entender y remendar el viejo. Comentar es una necesidad y un signo de distinción. Todo buen programador debe comentar su programa, por él y por los demás.
¿ Y qué comentarías en un programa de 1 -una- sola línea ? (los más astutos sonreirán al hacer esta pregunta, porque suponen que no tenemos salida. Pero se equivocan...)
SIEMPRE hay tres cosas que deberás comentar, mismo en un programa de una sola línea:
1) Nombre y autor del programa
2) Objetivo del programa (qué se supone que debe hacer)
3) Cuándo fue la última vez que lo modificaste.
Para nuestro primer programa quedaría así:
# ¡¡ Fuerza la Celeste !!
# Muestra el uso del comando PRINT
# Fernando Cormenzana - 19/06/11
Estas líneas son IGNORADAS por la máquina. SOLO sirven para nosotros, los humanos. Para definir un comentario empleamos un símbolo especial, el numeral, cardinal o "#". Cuando la máquina ve este símbolo al principio de una línea de programa, sencillamente ignora todo el resto y continúa con la próxima línea.
Se estima que el 80% del tiempo y el esfuerzo de un programador se dedica a mantener programas ya escritos, y apenas el 20% restante a crear nuevos programas. ¿ Suena aburrido ? Tal vez lo sea, pero más vale que lo sepas. Y actúes en consecuencia. Rápidamente comprenderás lo importante y útil que es comentar un programa para ahorrarte tiempo y esfuerzo.
Otro "truco" que ayuda a leer mejor un programa es dejarlo en blanco. Sí, leíste bien. Agregar líneas en blanco para "aerear" el código es una buena forma de hacerlo más sencillo y rápido de leer. La máquina ignora olímpicamente las líneas en blanco. Una vez más, tienen sentido únicamente para nosotros los humanos.
¡ GUARDALO YA PERO YA !
Una regla DE ORO en informática es RESPALDAR lo hecho. Suena evidente y lo es...hasta que dejas de hacerlo JUSTO en el momento que más lo precisás. Numerosos son los casos en que nos damos cuenta que el respaldo NO existe (o no funciona como era debido) JUSTO cuando más lo necesitamos (porque TODO nuestro trabajo desapareció en un instante).
Por ello debemos guardar (o "salvar" como dicen algunos) nuestro programa. Ello nos permitirá no solo poder recuperarlo después (para modificarlo o ampliarlo) sino además generar un programa ejecutable que se convierta en una actividad más de nuestra máquina.
Para guardar un programa deberemos hacer clic en el ícono (arriba a la derecha) donde aparecen un cuaderno o libreta y una flecha apuntando hacia ella. También podemos guardarlo con una combinación de teclas, CTRL+S, lo que significa que debemos apretar al mismo tiempo ambas teclas para guardar nuestro trabajo.
Se nos presentan entonces 2 opciones:
1) Guardar "como documento Pippy"
2) Guardar "como actividad empaquetada"
En la primera, solo guardamos el texto del programa para poder editarlo cuando queramos. En la segunda, CREAMOS un programa ejecutable que no necesita de Pippy para funcionar (de ahí que se llame "ejecutable") Al elegir esta última opción se genera entonces una actividad que se sumará a las ya existentes. Lo primero que debemos definir es el nombre que daremos a la actividad. Si no ponemos nada, el nombre será "Actividad Pippy Bundle" ("bundle" significa "paquete", "conjunto de elementos puestos juntos"). Luego, haremos clic en la flecha hacia la izquierda (ícono arriba a la izquierda) para generar la actividad, que se identificará por el ícono de una serpiente dentro de un rombo. Alcanzará entonces con seleccionarla (hacer clic sobre ella) para ejecutarla y ver los resultados de nuestro programa: imprimir en pantalla la frase "¡¡ FUERZA LA CELESTE !!" ¿ No es genial ? ¡ Acabamos de crear nuestra primera actividad en SUGAR ! (ya puedes volver a festejar)
ERRARE HUMANUM EST .
("errar es humano". Algunos listillos agregan "embocar es divino"...)
Quizás una de las lecciones más importantes que te pueda dejar la programación es que los errores NO SON MALOS. Podemos aprender MUCHO de nuestros errores. Tanto, que llegamos a evitar una gran cantidad, y para aquellos que no evitamos, encontramos la manera de superarlos. Y créanme que se siente muy bien cuando lo logramos...algunos dicen que programar es jugar a ser Dios. Y cuando el programa funciona exactamente como lo queríamos, estamos muy próximos a serlo...o a sentirnos así (lo que no es lo mismo, pero se siente igualmente bien...).
Por ello, equivocarse en programación no es un castigo, es una bendición (un tanto exagerado quizás, pero ya verás por qué lo digo). Cuando nos equivocamos tenemos que pensar. Tenemos que imaginarnos qué entendió la MÁQUINA cuando le dimos nuestras órdenes. Tenemos que esforzarnos en ser lo que no somos, y actuar en consecuencia. El efecto es inmediato: si lo corrijo bien, el error desaparece y puedo continuar. Si no, será la máquina la que rehusará continuar...y eso no es nada divertido (y sí muy frustrante).
Programar es un desafío intelectual. Un reto detrás de otro. Una aventura del pensamiento. Si aceptas esto y lo disfrutas, programar será un placer algunas veces obsesivo y siempre duradero. Pero no me creas: experiméntalo tú mismo. ¿ Listo para el próximo programa ?
Ahora que vimos cómo ejecutar y guardar un programa es tiempo de avanzar un poco más. En este capítulo aprenderemos las distintas formas que tiene un ordenador para categorizar y almacenar datos, y más importante aún, cómo usar estos datos en nuestros programas. También aprederemos cómo obtener información del usuario para que nuestros programas se vuelvan interactivos.
En resumen, aprenderemos a:
Para comprender en la práctica estos conceptos crearemos un nuevo juego al que llamaremos "Sapiencia Inútil" (extraño nombre ¿ no ?)
El programa pide al usuario 3 datos: nombre, edad y peso. A partir de ellos el programa deduce dos datos fundamentales (por lo inútil): cuántos años tiene el usuario en "años perrunos" y cuál es su peso en la Luna. ¿ Interesante, verdad ? :P
Los sabios como nosotros sabemos desde hace tiempo que 1 año humano equivale a 5 años perrunos ( y sí... los pobres pichichos viven a lo sumo unos 14 años, que representan unos 70 años nuestros...) y que en la Luna pesamos 6 veces menos que en la Tierra (algún Einstein les dirá que es porque la gravedad en la Luna es 6 veces inferior a la de la Tierra). Recuerden esos números, porque los usaremos en nuestro programa para hacer cálculos con ellos.
Veamos el código del programa:
# Sapiencia inútil
# Uso de datos ingresados por el usuario. Uso de números enteros. Cálculos.
# Fernando Cormenzana - 04/07/11
nombre = raw_input("¿ Cuál es su nombre ?")
print "Bienvenido", nombre
print "A partir de algunos datos le diré su edad perruna y su peso en la Luna"
print
edad = int(raw_input("¿ Su edad en años ? "))
print "Su edad en años perrunos es", edad * 5, "años"
peso = int(raw_input("¿ Su peso en Kg. ?"))
print "Su peso en la Luna es de ", peso / 6, "Kg."
¡ No se asusten ! (¿ quieren ser programadores, no ?)Hay varias cosas nuevas, que explicaremos a continuación.
En primer lugar, verán que comentamos el programa como explicáramos antes. Insisto en que es importante. Ahora puede parecer banal e innecesario; lo importante es generar el HÁBITO: cuando lo tengan, se lo agradecerán (¡ y los demás también !). Algunas cosas ya las conocen: con la orden print imprimimos un texto en pantalla. Con la orden print sin texto dejamos una línea en blanco para "aerear" el texto. Pero veamos la primer línea luego del último comentario.
"nombre = "...
Como se habrán imaginado los más astutos, aquí estamos pidiendo el nombre del usuario.
Para pedir el nombre usamos el comando raw_input, que nos permite además agregar un texto que explique lo que estamos esperando del usuario. Así ponemos entre comillas el texto que aparecerá (recuerdan las comillas, ¿ no ?) y entre paréntesis el conjunto así formado.
raw_input("¿ Cuál es su nombre ?")
Lo interesante viene luego. Cuando usamos raw_input, Python toma la respuesta del usuario como un texto, una cadena (como también se lo conoce), que guarda en un lugar de la memoria del ordenador que llamaremos (en este caso) "nombre". Acabamos de declarar una variable, pomposo nombre para decir que guardaremos el nombre que nos diga la persona en una variable llamada, justamente, "nombre" (lo que demuestra que somos MUY originales...). Pero no se lo tomen en broma: nombrar correctamente las variables es muy importante a la hora de programar. ¿ Por qué ? Porque un nombre bien elegido nos ayuda a entender el programa. Ejemplo: podría haber llamado a esta variable "xyz" pero, como se imaginan, ese nombre no me da muchas pistas sobre el contenido de la variable...aunque el generoso Python lo acepte como un nombre válido. Conclusión: usen nombres que indiquen lo más claramente posible el contenido de la variable.
¿ Fácil, no ? Sigamos.
"edad = "...
En esta línea estamos declarando otra variable, que los más despiertos ya habrán imaginado que usaremos para guardar la edad del usuario.
Para pedir la edad usamos el comando raw_input, que nos permite además agregar un texto que explique lo que estamos esperando del usuario. Así ponemos entre comillas el texto que aparecerá y entre paréntesis el conjunto así formado.
raw_input("¿ Su edad en años ? ")
Lo interesante viene luego. Cuando usamos raw_input, Python toma la respuesta del usuario como un texto, una cadena. Por ello, si el usuario ingresa 15 (queriendo significar que tiene 15 años) Python NO lo interpretará como el número 15, sino como el TEXTO "15". "¿ Y eso es importante ?" Pues sí lo es. Porque como dijera mi maestra de escuela, no podemos sumar vacas con flores: o sumamos vacas con vacas, o flores con flores. Por lo tanto, no podemos multiplicar un texto por un número. Tendremos que CONVERTIR primero el texto en número para luego multiplicarlo por otro número. Para eso justamente es que sirve la función (así le llamamos los que sabemos...) INT. INT convierte el texto "15" en el número 15, el que guardamos respetuosamente en la variable "edad".
Ahora ya podemos calcular con la variable "edad". Y lo que haremos será multiplicarla por 5 (¿ saben por qué ? Si no lo saben, no eran TAN sabios...lean más arriba)
print "Su edad en años perrunos es", edad * 5, "años"
Si me siguieron hasta aquí entenderán el resto (si no, relean...¡ siempre sirve !) Usamos la variable "peso" para guardar el valor que nos da el usuario y luego dividimos (recuerden que somos sabios...) ese valor entre 6 para calcular el peso del usuario en la Luna. Voilà !
Los más listos habrán notado que usamos la "," para separar el texto a imprimir en la pantalla del resultado de la operación, luego del cual lo volvemos a usar para completar la frase. Es práctico y sencillo.
Lo que hace interesante a este programa es su capacidad de adaptarse al usuario. Según el usuario, el programa reacciona. El otro aspecto importante es que los resultados que calcula son de interés (?) para el usuario, se refieren a él y solo él. Esto es válido para cualquier programa: el interactuar con el usuario y ser útil para él lo hace interesante, ya sean juegos o programas comerciales.
Ya vimos en el capítulo anterior el uso de las comillas para imprimir un texto en pantalla. Pero los textos (que de aquí en más llamaremos "cadenas" -sí, somos originales...-) pueden ser mucho más largos y complicados. Veremos cómo tratar con ellos, sin morir en el intento.
Para ello, pasemos a un nuevo programita. Groucho MARX fue un conocido humorista norteamericano. Era famoso por sus frases, que hacían gala de su gran sentido del humor. usaremos una de ellas para nuestro programa:
"Nunca olvido una cara. Pero en su caso, haré gustoso una excepción" [ Groucho Marx ]
Lo que hará nuestro programita será tomar esta frase e imprimirla de diversas formas, empleando para ello distintas funciones que se aplican a las cadenas.
Para los impacientes, aquí está el código del programa:
# Recordando a Groucho MARX
# Uso de los métodos con cadenas
# Fernando Cormenzana - 04/07/11
# Frase de Groucho Marx
frase = "Nunca olvido una cara. Pero en su caso, haré gustoso una excepción"
print "Frase original:"
print frase
print "En Mayúsculas:"
print frase.upper()
print "En Minúsculas:"
print frase.lower()
print "Como un título:"
print frase.title()
print "Con un pequeño remplazo:"
print frase.replace("gustoso", "rápidamente")
print "\a"
raw_input("\n\nPresione <enter>para terminar.")
Si saben algo de inglés (o tienen un diccionario cerca...) se darán cuenta de lo que hace el programa: aplica métodos para cambiar el aspecto o el contenido de la frase. Estos métodos transforman las cadenas.Por ejemplo, "upper()" permite escribir la cadena en MAYÚSCULAS y "lower()" en minúsculas. Quizás hayan notado la similitud con las funciones, que viéramos cuando convertimos una cadena en número entero. La diferencia es que los métodos de cadena, como éstos, necesitan obligatoriamente una cadena para ser empleados. Para usarlo, debemos indicar la cadena, agregar un "." y luego especificar el método:
print frase.lower()
Estos métodos NO usan argumentos, que son los valores que pasamos entre paréntesis. Sin embargo, vemos en el programa un método que sí usa argumentos: replace().
Como ven, replace permite remplazar en la cadena una cadena (una letra o varias) por otra.
print frase.replace("gustoso", "rápidamente")
Aquí, remplazamos la palabra "gustoso" por "rápidamente" (y lo hace muy rápidamente...-chiste-) Separamos los argumentos con una ",".
Para ver si estás atento...¿ qué hace el método "title" ?
Pasemos ahora a las dos últimas líneas. La primera de ellas parece algo extraña: ¿ qué quiere decir "\a" ? Si estuviste atento cuando corrimos el programa, habrás oído un ruido antes de ver aparecer el texto pidiendo que presiones la tecla "<enter>" (si no lo estuviste y no lo escuchaste, no te preocupes. Ya llegará...:) Pues bien, "\a" hace exactamente eso: "sonar la campana". Que no es una campana, ya lo sé, pero se le dice así (acordate que los programadores somos muy imaginativos).
Y si estuviste realmente atento me podrás decir qué hace "\n"...¿ no ?...¿ ni idea ?...Bueno, aquí va una pista: fijate cuántas líneas separan la última frase (donde hubo el remplazo de la palabra "gustoso") de la frase "Presione <enter>para terminar." ¡ Ajá !
"\n" deja una línea en blanco, para "aerear" el texto (viene de "New line", nueva línea en inglés)
Esta secuencia de caracteres, o caracteres especiales, se llaman "secuencias de escape" (no sabemos de qué se escapan, pero recordá que somos MUY imaginativos) Pueden ser útiles en estos casos.
DESAFÍOS:
Veamos si podés crear los siguientes programas, que resuelven ciertos problemas (todo programa resuelve un problema, aunque no sea más que sacarme el aburrimiento...):
1) Escribe un programa que permita calcular el precio total de una cena en un restaurant (un necesario cálculo para su dueño...). Para ello, deberemos pedir
- el total de lo que consumiste
y a ello deberemos agregarle:
- el 23% de I.V.A sobre ese total (Impuesto al Valor Agregado, para los íntimos)
- el 15% sobre ese total de propina para el mozo (un excelente mozo...)
Deberás desplegar en pantalla el total a pagar (antes de irte del restaurant, claro...;)
2) Mi tío es una persona obsesionada con los números. Y ahora está interesado en averiguar cuántos Km por litro le rinde su auto. Es decir, cuántos Km recorre el auto por cada litro de combustible consumido.
Para calcularlo deberemos pedir 3 datos:
- los Km que marcaba el cuentaquilómetros del auto la última vez que cargamos combustible (variable que llamaremos "kmanteriores")
- los Km que marca ahora (variable que llamaremos "kmactuales")
- los litros de combustible que compramos (variable que llamaremos "litros")
Para calcular cuantos Km por litro le rinde su auto aplicaremos la siguiente fórmula:
rendimiento = ( kmactuales - kmanteriores ) / litros
Deberás imprimir este resultado y esperar las felicitaciones del tío...
Hasta ahora, hemos escrito programas sencillos que se ejecutan "linealmente", es decir, una línea tras otra desde la primera hasta la última. Se imaginarán que de esta forma no llegaremos muy lejos, por lo que deberemos aprender distintas maneras de modificar el ORDEN en que se ejecutan las líneas o repetir la ejecución de las mismas mientras se cumpla una condición dada.
En síntesis, en este capítulo aprenderemos a:
El programa que construiremos ahora es uno de los "clásicos" cuando se aprende a programar, entendiendo por clásico algo muy conocido y usual (si pensaste en Nacional-Peñarol o Uruguay-Argentina, no estás leyendo atentamente...;)
La idea es la siguiente: el ordenador elegirá un número al azar entre 1 y 100; nuestro objetivo es descubrirlo en el menor número de intentos posible. Para ello, cada vez que ingresamos un número el ordenador deberá respondernos (sin mentir...:) si dicho número es MAYOR o MENOR al número elegido al azar. ¡ Cuando sea IGUAL festejamos ! (porque lo encontramos, obviamente...si no entendiste esto, sugiero que vuelvas a leer;)
Así como buscamos siempre que nuestros programas hagan exactamente lo que queremos, sin sorpresas ni inventos raros, otras veces nos interesa hacerlos más impredecibles, aleatorios. Imagínense un juego donde debemos encontrar un tesoro escondido detrás de una de varias puertas. Si ya sabemos dónde está escondido, el juego no tiene gracia alguna. Lo que lo hace interesante es que, a priori, no sabemos dónde estará el tesoro, y la gracia consiste en encontrarlo. O imagine una ruleta, donde lo interesante (y lucrativo...) es adivinar en qué número caerá la bolita para hacer una buena apuesta. Como ven, algunos hechos impredecibles suelen ser muy entretenidos...
Secreto entre programadores: Python genera números que no son "tan" impredecibles ya que usa una fórmula para ello. Estos números se llaman entonces "pseudorandómicos" porque conociendo la fórmula podríamos llegar a predecirlos. Para nuestros casos, y la gran mayoría de los casos, es más que suficiente, pero no les recomendaría hacer un programa para un casino que usara este tipo de números...¡ podrían llegar a tener muchos problemas con el dueño del casino al ver que pierde mucho dinero porque los jugadores adivinan los números !
Veamos esta línea de código:
import random
En ella, estamos pidiendo a Python que importe, o lea, un módulo llamado "random". Módulo es un archivo que contiene código que puede ser usado en otro programa. Los más despiertos habrán notado que usamos el módulo "random", lo que nos inclina a pensar que este módulo tiene el código necesario para generar números randómicos. (¡ adivinaron !)
Si piensan que construir programas es similar a construir una pared por la unión de bloques, entenderán la utilidad de usar módulos, que son justamente esos bloques constructores. Ahorramos tiempo y esfuerzo, ya que los bloques contienen código ya probado que hace lo que queremos. Lo único que nos resta saber es cómo utilizarlos.
El módulo "random" contiene una función llamada "randrange()" que, como se imaginarán, nos devolverá un número entre 0 y el valor que le pasamos a la función (entre paréntesis).
Así,
random.randrange(6)
nos devolverá un número entre 0 y 5 (sí, NO es entre 1 y 6...pero habrán notado que de 0 a 5 hay 6 números :)
Notarán que para llamar a la función randrange() especificamos también a qué módulo pertenece, en este caso, al módulo "random". Eso lo hacemos escribiendo el nombre del módulo seguido de un "." y luego el nombre de la función. Esto es necesario cuando usamos varios módulos en un mismo programa, ya que podrían existir funciones con el mismo nombre que pertenecieran a distintos módulos.
Veamos si comprendieron. Para ello, usaremos un método que es el terror de todo alumno: ¡ el profesor pregunta ! Mi pregunta (MUY sencilla) es entonces:
¿ Cómo lograríamos un número randómico entre 1 y 6 ?
Piensen...piensen...vuelvan a pensar...¿ listo ?
Veamos. Ya dijimos que
random.randrange(6)
nos da un número entre 0 y 5. Si queremos entre 1 y 6, alcanza con sumar 1 a ese número. Sencillo ¿ no ?. La orden quedaría así:
random.randrange(6) + 1
recuerden, para no perder ese valor, deberán asignarlo a una variable, por ejemplo, "escondido" (no, no se escondan, es el número que está escondido para que lo descubramos...)
escondido = random.randrange(6) + 1
Tomar decisiones es algo fundamental y permanente en nuestras vidas, y también lo es en todo programa que se precie. En Python, la estructura IF nos permite decidir por qué línea de código continuar en función de que se cumpla o no una condición dada.
Volvamos a nuestro ejemplo.
Si el número que da el jugador es MENOR que el número escondido, la máquina, para guiar al usuario, desplegará en pantalla "Tu número es demasiado BAJO". Si es MAYOR, se desplegará "Tu número es demasiado ALTO". En caso de ser igual, se desplegará "¡¡ FELICITACIONES !! ¡ Lo encontraste !". El proceso se repite hasta encontrar el número escondido.
# Adivina adivinador
# uso de random.randrange, IF, ELIF
# Fernando Cormenzana - 25/07/11
print "ADIVINA ADIVINADOR"
print "Deberás adivinar el número entre 1 y 100"
print "Elegido por la máquina."
print "Luego de cada intento, la máquina te dirá si tu número"
print "es demasiado alto o demasiado bajo."
escondido = random.randrange(6) + 1
numero = raw_input("Ingresa un número entre 1 y 100: ")
if numero == escondido:
print "¡¡ FELICITACIONES !! ¡ Lo encontraste !"
else:
if numero < escondido:
print "Tu número es demasiado bajo"
else:
print "Tu número es demasiado alto"
raw_input("Presiona <ENTER> para terminar.")
Puedo grabar??