




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Documento para aprender a programar en python
Tipo: Traducciones
1 / 262
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































































Soporte Editorial: Elliott Hauser, Sue Blumenberg Diseño de portada: Toby Koening, Aimee Andrion Contribuidores: Juan Carlos Perez Castellanos, Juan Dougnac, Daniel Merino Echeverría, Jaime Bermeo Ramírez y Fernando Tardío.
Copyright ~2009- Charles Severance.
Este trabajo está registrado bajo una Licencia Creative Commons Attribution- NonCommercial-ShareAlike 3.0 Unported License. Este licencia está disponible en
http://creativecommons.org/licenses/by-nc-sa/3.0/
Puedes ver lo que el autor considera usos comerciales y no-comerciales de este material, así como las exenciones de licencia en el Apéndice titulado “Detalles de Copyright”.
iv
web, análisis de datos en formato XML y JSON, creación y uso de bases de datos usando el Lenguaje de Consultas Estructurado (SQL), y la visualización de datos. El objetivo final de todos estos cambios es variar la orientación, desde una dirigida a las Ciencias de la Computación hacia otra puramente informática, que trate sólo temas adecuados para una clase de tecnología para principiantes, que puedan resultarles útiles incluso si eligen no ser programadores profesionales. Los estudiantes que encuentren este libro interesante y quieran ir más allá, de- berían echar un vistazo al libro Think Python de Allen B. Downey’s. Como ambos libros comparten un montón de materia, los estudiantes adquirirán rápidamente habilidades en las áreas adicionales de la programación técnica y pensamiento al- gorítmico que se tratan en Think Python. Y dado que ambos libros comparten un estilo de escritura similar, deberían ser capaces de avanzar rápidamente a través del contenido de Think Python con un esfuerzo mínimo. Como propietario del copyright de Think Python , Allen me ha dado permiso para cambiar la licencia del contenido de su libro que se utiliza en éste, y que original- mente poseía una GNU Free Documentation License a otra más actual, Creative Commons Attribution — Share Alike license. Así se sigue una tendencia general en las licencias de documentación abierta, que están pasando desde la GFDL a la CC-BY-SA (por ejemplo, Wikipedia). El uso de la licencia CC-BY-SA mantiene la arraigada tradición copyleft del libro, a la vez que hacen más sencillo para los autores nuevos la reutilización de ese material a su conveniencia. Personalmente creo que este libro sirve como ejemplo de por qué los contenidos libres son tan importantes para el futuro de la educación, y quiero agradecer a Allen B. Downey y a la Cambridge University Press por su amplitud de miras a la hora de distribuir el libro bajo un copyright abierto. Espero que se sientan satisfechos con el resultado de mis esfuerzos y deseo que tú como lector también te sientas satisfecho de nuestros esfuerzos colectivos. Quiero agradecer a Allen B. Downey y Lauren Cowles su ayuda, paciencia y ori- entación a la hora de tratar y resolver los problemas de copyright referentes a este libro. Charles Severance www.dr-chuck.com Ann Arbor, MI, USA 9 de Septiembre, 2013 Charles Severance es Profesor Clínico Adjunto en la Escuela de Información ( School of Information ) de la Universidad de Michigan.
Escribir programas (o programar) es una actividad muy creativa y gratificante. Puedes escribir programas por muchas razones, que pueden ir desde mantenerte activo resolviendo un problema de análisis de datos complejo hasta hacerlo por pura diversión ayudando a otros a resolver un enigma. Este libro asume que todo el mundo necesita saber programar, y que una vez que aprendas a programar ya encontrarás qué quieres hacer con esas habilidades recién adquiridas. En nuestra vida diaria estamos rodeados de computadoras, desde equipos portátiles (laptops) hasta teléfonos móviles (celulares). Podemos pensar en esas computado- ras como nuestros “asistentes personales”, que pueden ocuparse de muchas tareas por nosotros. El hardware en los equipos que usamos cada día está diseñado es- encialmente para hacernos la misma pregunta de forma constante, “¿Qué quieres que haga ahora?”
¿Qué hago a continuación?
¿Qué hago a continuación?
¿Qué hago a continuación?
¿Qué hago a continuación?
Figure 1.1: Personal Digital Assistant
Los programadores suelen añadir un sistema operativo y un conjunto de aplica- ciones al hardware y así nos proporcionan un Asistente Digital Personal que es bastante útil y capaz de ayudarnos a realizar una gran variedad de tareas. Nuestros equipos son rápidos y tienen grandes cantidades de memoria. Podrían resultarnos muy útiles si tan solo supiéramos qué idioma utilizar para explicarle a la computadora qué es lo que queremos que “haga ahora”. Si conociéramos ese idioma, podríamos pedirle al aparato que realizase en nuestro lugar, por ejemplo, tareas repetitivas. Precisamente el tipo de cosas que las computadoras saben hacer mejor suelen ser el tipo de cosas que las personas encontramos pesadas y aburridas.
Por ejemplo, mira los primeros tres párrafos de este capítulos y dime cuál es la pal- abra que más se repite, y cuántas veces se ha utilizado. Aunque seas capaz de leer y comprender las palabras en pocos segundos, contarlas te resultará casi doloroso, porque la mente humana no fue diseñada para resolver ese tipo de problemas. Para una computadora es justo al revés, leer y comprender texto de un trozo de papel le sería difícil, pero contar las palabras y decirte cuántas veces se ha repetido la más utilizada le resulta muy sencillo:
python words.py Enter file:words.txt to 16
Nuestro “asistente de análisis de información personal” nos dirá enseguida que la palabra “que” se usó nueve veces en los primeros tres párrafos de este capítulo.
El hecho de que los computadores sean buenos en aquellas cosas en las que los humanos no lo son es el motivo por el que necesitas aprender a hablar el “idioma de las computadoras”. Una vez que aprendas este nuevo lenguaje, podrás delegar tareas mundanas a tu compañero (la computadora), lo que te dejará más tiempo para ocuparte de las cosas para las que sólo tú estás capacitado. Tú pondrás la creatividad, intuición y el ingenio en esa alianza.
1.1 Creatividad y motivación
A pesar de que este libro no va dirigido a los programadores profesionales, la programación a nivel profesional puede ser un trabajo muy gratificante, tanto a nivel financiero como personal. Crear programas útiles, elegantes e inteligentes para que los usen otros, es una actividad muy creativa. Tu computadora o Asis- tente Digital Personal (PDA^1 ), normalmente contiene muchos programas diferentes pertenecientes a distintos grupos de programadores, cada uno de ellos compitiendo por tu atención e interés. Todos ellos hacen su mejor esfuerzo por adaptarse a tus necesidades y proporcionarte una experiencia de usuario satisfactoria. En oca- siones, cuando elijes un software determinado, sus programadores son directamente recompensados gracias a tu elección.
Si pensamos en los programas como el producto de la creatividad de los progra- madores, tal vez la figura siguiente sea una versión más acertada de nuestra PDA:
¡Elíge me!
¡Elíge me!
¡Elíge me!
¡Elíge me!
Figure 1.2: Programadores Dirigiéndose a Ti
Por ahora, nuestra principal motivación no es conseguir dinero ni complacer a los usuarios finales, sino simplemente conseguir ser más productivos a nivel personal
(^1) Personal Digital Assistant en inglés (N. del T.).
Aunque la mayoría de los detalles acerca de cómo funcionan estos componentes es mejor dejársela a los constructores de equipos, resulta útil disponer de cierta terminología para poder referirnos a ellos a la hora de escribir nuestros programas. Como programador, tu trabajo es usar y orquestar cada uno de esos recursos para resolver el problema del que tengas que ocuparte y analizar los datos de los que dispongas para encontrar la solución. Como programador estarás casi siempre “hablando” con la CPU y diciéndole qué es lo siguiente que debe hacer. A veces le tendrás que pedir a la CPU que use la memoria principal, la secundaria, la red, o los dispositivos de entrada/salida.
Dispositivos Entrada Salida
Software
Memoria Principal
Unidad Central Procesamiento
¿Qué hago a continuación?
Red
Memoria Secundaria
Figure 1.4: ¿Dónde estás?
Tú deberás ser la persona que responda a la pregunta “¿Qué hago ahora?” de la CPU. Pero sería muy incómodo encogerse uno mismo hasta los 5 mm. de altura e introducirse dentro de la computadora sólo para poder dar una orden tres mil millones de veces por segundo. Así que en vez de eso, tendrás que escribir las instrucciones por adelantado. Esas instrucciones almacenadas reciben el nombre de programa y el acto de escribirlas y encontrar cuáles son las instrucciones adecuadas, programar.
1.3 Comprendiendo la programación
En el resto de este libro, intentaremos convertirte en una persona experta en el arte de programar. Al terminar, te habrás convertido en un programador - tal vez no uno profesional, pero al menos tendrás la capacidad de encarar un problema de análisis de datos/información y desarrollar un programa para resolverlo. En cierto modo, necesitas dos capacidades para ser programador:
Una vez que aprendas un lenguaje de programación como Python, encontrarás mucho más fácil aprender un segundo lenguaje como JavaScript o C++. Cada nuevo lenguaje tiene un vocabulario y gramática muy diferentes, pero la técnica de resolución de problemas será la misma en todos ellos. Aprenderás el “vocabulario” y “frases” de Python bastante rápido. Te llevará más tiempo el ser capaz de escribir un programa coherente para resolver un problema totalmente nuevo. Se enseña programación de forma muy similar a como se enseña a escribir. Se empieza leyendo y explicando programas, luego se escriben progra- mas sencillos, y a continuación se van escribiendo programas progresivamente más complejos con el tiempo. En algún momento “encuentras tu musa”, empiezas a descubrir los patrones por ti mismo y empiezas a ver casi de forma instintiva cómo abordar un problema y escribir un programa para resolverlo. Y una vez alcanzado ese punto, la programación se convierte en un proceso muy placentero y creativo. Comenzaremos con el vocabulario y la estructura de los programas en Python. Ten paciencia si la simplicidad de los ejemplos te recuerda a cuando aprendiste a leer.
1.4 Palabras y frases
A diferencia de los lenguajes humanos, el vocabulario de Python es en realidad bastante reducido. Llamamos a este “vocabulario” las “palabras reservadas”. Se trata de palabras que tienen un significado muy especial para Python. Cuando Python se encuentra estas palabras en un programa, sabe que sólo tienen un único significado para él. Más adelante, cuando escribas programas, podrás usar tus propias palabras con significado, que reciben el nombre de variables. Tendrás gran libertad a la hora de elegir los nombres para tus variables, pero no podrás utilizar ninguna de las palabras reservadas de Python como nombre de una variable. Cuando se entrena a un perro, se utilizan palabras especiales como “siéntate”, “quieto” y “tráelo”. Cuando te diriges a un perro y no usas ninguna de las palabras reservadas, lo único que consigues es que se te quede mirando con cara extrañada, hasta que le dices una de las palabras que reconoce. Por ejemplo, si dices, “Me gustaría que más gente saliera a caminar para mejorar su salud general”, lo que la mayoría de los perros oirían es: “bla bla bla caminar bla bla bla bla.”. Eso se debe a que “caminar” es una palabra reservada en el lenguaje del perro. Seguramente habrá quien apunte que el lenguaje entre humanos y gatos no dispone de palabras reservadas^3. (^3) http://xkcd.com/231/
El indicador >>> es el modo que tiene el intérprete de Python de preguntarte, “¿Qué quieres que haga ahora?”. Python está ya preparado para mantener una conversación contigo. Todo lo que tienes que saber es cómo hablar en su idioma. Supongamos por ejemplo que aún no conoces ni las palabras ni frases más sencillas de Python. Puede que quieras utilizar el método clásico de los astronautas cuando aterrizan en un planeta lejano e intentan hablar con los habitantes de ese mundo:
Vengo en son de paz, por favor llévame ante tu líder File "
", line 1 Vengo en son de paz, por favor llévame ante tu líder ^ SyntaxError: invalid syntax
Esto no se ve bien. A menos que pienses en algo rápidamente, los habitantes del planeta sacarán sus lanzas, te ensartarán, te asarán sobre el fuego y al final les servirás de cena. Por suerte compraste una copia de este libro durante tus viajes, así que lo abres precisamente por esta página y pruebas de nuevo:
print('¡Hola, mundo!') ¡Hola, mundo!
Esto tiene mejor aspecto, de modo que intentas comunicarte un poco más:
print('Usted debe ser el dios legendario que viene del cielo') Usted debe ser el dios legendario que viene del cielo print('Hemos estado esperándole durante mucho tiempo') Hemos estado esperándole durante mucho tiempo print('La leyenda dice que debe estar usted muy rico con mostaza') La leyenda dice que debe estar usted muy rico con mostaza print 'Tendremos un festín esta noche a menos que diga File "
", line 1 print 'Tendremos un festín esta noche a menos que diga ^ SyntaxError: Missing parentheses in call to 'print'
La conversación fue bien durante un rato, pero en cuanto cometiste el más mínimo fallo al utilizar el lenguaje Python, Python volvió a sacar las lanzas. En este momento, te habrás dado cuenta que a pesar de que Python es tremen- damente complejo y poderoso, y muy estricto en cuanto a la sintaxis que debes usar para comunicarte con él, Python no es inteligente. En realidad estás sola- mente manteniendo una conversación contigo mismo; eso sí, usando una sintaxis adecuada. En cierto modo, cuando utilizas un programa escrito por otra persona, la conver- sación se mantiene entre tú y el programador, con Python actuando meramente de
intermediario. Python es una herramienta que permite a los creadores de progra- mas expresar el modo en que la conversación supuestamente debe fluir. Y dentro de unos pocos capítulos más, serás uno de esos programadores que utilizan Python para hablar con los usuarios de tu programa. Antes de que abandonemos nuestra primera conversación con el intérprete de Python, deberías aprender cual es el modo correcto de decir “adiós” al interac- tuar con los habitantes del Planeta Python:
adiós Traceback (most recent call last): File "
", line 1 , in NameError: name 'adiós' is not defined if you don't mind, I need to leave File " ", line 1 if you don't mind, I need to leave ^ SyntaxError: invalid syntax quit()
Te habrás fijado en que el error es diferente en cada uno de los dos primeros intentos. El segundo error es diferente porque if es una palabra reservada, y cuando Python la ve, cree que estamos intentando decirle algo, pero encuentra la sintaxis de la frase incorrecta. La forma correcta de decirle “adiós” a Python es introducir quit() en el símbolo indicador del sistema >>>. Seguramente te hubiera llevado un buen rato adivinarlo, así que tener este libro a mano probablemente te haya resultado útil.
1.6 Terminología: intérprete y compilador
Python es un lenguaje de alto nivel , pensado para ser relativamente sencillo de leer y escribir para las personas, y fácil de leer y procesar para las máquinas. Otros lenguajes de alto nivel son Java, C++, PHP, Ruby, Basic, Perl, JavaScript, y mu- chos más. El hardware real que está dentro de la Unidad Central de Procesamiento (CPU), no entiende ninguno de esos lenguajes de alto nivel.
La CPU entiende únicamente un lenguaje llamado lenguaje de máquina o código máquina. El código máquina es muy simple y francamente muy pesado de escribir, ya que está representado en su totalidad por solamente ceros y unos:
001010001110100100101010000001111 11100110000011101010010101101101 ...
El código máquina parece bastante sencillo a simple vista, dado que sólo contiene ceros y unos, pero su sintaxis es incluso más compleja y mucho más enrevesada que la de Python, razón por la cual muy pocos programadores escriben en código máquina. En vez de eso, se han creado varios programas traductores para permitir a los programadores escribir en lenguajes de alto nivel como Python o Javascript,