Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Python para todosexplorando la iformación, Traducciones de Desarrollo de Software

Documento para aprender a programar en python

Tipo: Traducciones

2016/2017

Subido el 04/11/2021

seeman27
seeman27 🇲🇽

1 documento

1 / 262

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Python para todos
Explorando la información con Python 3
Charles R. Severance
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Python para todosexplorando la iformación y más Traducciones en PDF de Desarrollo de Software solo en Docsity!

Python para todos

Explorando la información con Python 3

Charles R. Severance

Créditos

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.

Historial de impresión

  • 02-Abr-2020 Traducción al Español completa de Python 3.
  • 05-Jul-2016 Primera versión completa de Python 3.
  • 20-Dic-2015 Borrador inicial de conversión a Python 3.

Detalles de Copyright

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.

Contents

  • 1 ¿Por qué deberías aprender a escribir programas?
    • 1.1 Creatividad y motivación
    • 1.2 Arquitectura hardware de las computadoras
    • 1.3 Comprendiendo la programación
    • 1.4 Palabras y frases
    • 1.5 Conversando con Python
    • 1.6 Terminología: intérprete y compilador
    • 1.7 Escribiendo un programa
    • 1.8 ¿Qué es un programa?
    • 1.9 Los bloques de construcción de los programas
    • 1.10 ¿Qué es posible que vaya mal?
    • 1.11 Depurando los programas
    • 1.12 El camino del aprendizaje
    • 1.13 Glosario
    • 1.14 Ejercicios
  • 2 Variables, expresiones y sentencias
    • 2.1 Valores y tipos
    • 2.2 Variables
    • 2.3 Nombres de variables y palabras claves
    • 2.4 Sentencias
    • 2.5 Operadores y operandos
    • 2.6 Expresiones
    • 2.7 Orden de las operaciones
    • 2.8 Operador módulo
    • 2.9 Operaciones con cadenas
    • 2.10 Petición de información al usuario vi CONTENTS
    • 2.11 Comentarios
    • 2.12 Elección de nombres de variables mnemónicos
    • 2.13 Depuración
    • 2.14 Glosario
    • 2.15 Ejercicios
  • 3 Ejecución condicional
    • 3.1 Expresiones booleanas
    • 3.2 Operadores lógicos
    • 3.3 Ejecución condicional
    • 3.4 Ejecución alternativa
    • 3.5 Condicionales encadenados
    • 3.6 Condicionales anidados
    • 3.7 Captura de excepciones usando try y except
    • 3.8 Evaluación en cortocircuito de expresiones lógicas
    • 3.9 Depuración
    • 3.10 Glosario
    • 3.11 Ejercicios
  • 4 Funciones
    • 4.1 Llamadas a funciones
    • 4.2 Funciones internas
    • 4.3 Funciones de conversión de tipos
    • 4.4 Funciones matemáticas
    • 4.5 Números aleatorios
    • 4.6 Añadiendo funciones nuevas
    • 4.7 Definición y usos
    • 4.8 Flujo de ejecución
    • 4.9 Parámetros y argumentos
    • 4.10 Funciones productivas y funciones estériles
    • 4.11 ¿Por qué funciones?
    • 4.12 Depuración
    • 4.13 Glosario
    • 4.14 Ejercicios
  • 5 Iteración CONTENTS vii
    • 5.1 Actualización de variables
    • 5.2 La sentencia while
    • 5.3 Bucles infinitos
    • 5.4 “Bucles infinitos” y break
    • 5.5 Finalizar iteraciones con continue
    • 5.6 Bucles definidos usando for
    • 5.7 Diseños de bucles
      • 5.7.1 Bucles de recuento y suma
      • 5.7.2 Bucles de máximos y mínimos
    • 5.8 Depuración
    • 5.9 Glosario
    • 5.10 Ejercicios
  • 6 Cadenas
    • 6.1 Una cadena es una secuencia
    • 6.2 Obtener el tamaño de una cadena usando len
    • 6.3 Recorriendo una cadena mediante un bucle
    • 6.4 Rebanado de una cadena
    • 6.5 Los cadenas son inmutables
    • 6.6 Iterando y contando
    • 6.7 El operador in
    • 6.8 Comparación de cadenas
    • 6.9 Métodos de cadenas
    • 6.10 Analizando cadenas
    • 6.11 El operador de formato
    • 6.12 Depuración
    • 6.13 Glosario
    • 6.14 Ejercicios
  • 7 Archivos
    • 7.1 Persistencia
    • 7.2 Abrir archivos
    • 7.3 Archivos de texto y líneas
    • 7.4 Lectura de archivos
    • 7.5 Búsqueda a través de un archivo viii CONTENTS
    • 7.6 Permitiendo al usuario elegir el nombre de archivo
    • 7.7 Utilizando try, except, y open
    • 7.8 Escritura de archivos
    • 7.9 Depuración
    • 7.10 Glosario
    • 7.11 Ejercicios
  • 8 Listas
    • 8.1 Una lista es una secuencia
    • 8.2 Las listas son mutables
    • 8.3 Recorriendo una lista
    • 8.4 Operaciones de listas
    • 8.5 Rebanado de listas
    • 8.6 Métodos de listas
    • 8.7 Eliminando elementos
    • 8.8 Listas y funciones
    • 8.9 Listas y cadenas
    • 8.10 Analizando líneas
    • 8.11 Objetos y valores
    • 8.12 Alias
    • 8.13 Listas como argumentos
    • 8.14 Depuración
    • 8.15 Glosario
    • 8.16 Ejercicios
  • 9 Diccionarios
    • 9.1 Diccionario como un conjunto de contadores
    • 9.2 Diccionarios y archivos
    • 9.3 Bucles y diccionarios
    • 9.4 Análisis avanzado de texto
    • 9.5 Depuración
    • 9.6 Glosario
    • 9.7 Ejercicios
  • 10 Tuplas CONTENTS ix
    • 10.1 Las Tuplas son inmutables
    • 10.2 Comparación de tuplas
    • 10.3 Asignación de tuplas
    • 10.4 Diccionarios y tuplas
    • 10.5 Asignación múltiple con diccionarios
    • 10.6 Las palabras más comunes
    • 10.7 Uso de tuplas como claves en diccionarios
    • 10.8 Secuencias: cadenas, listas, y tuplas - ¡Dios mío!
    • 10.9 Depuración
    • 10.10 Glosario
    • 10.11 Ejercicios
  • 11 Expresiones regulares
    • 11.1 Coincidencia de caracteres en expresiones regulares
    • 11.2 Extrayendo datos usando expresiones regulares
    • 11.3 Combinando búsqueda y extracción
    • 11.4 Escapado de Caracteres
    • 11.5 Resumen
    • 11.6 Sección adicional para usuarios de Unix / Linux
    • 11.7 Depuración
    • 11.8 Glosario
    • 11.9 Ejercicios
  • 12 Programas en red
    • 12.1 Protocolo de Transporte de Hipertexto - HTTP
    • 12.2 El navegador web más sencillo del mundo
    • 12.3 Recepción de una imagen mediante HTTP
    • 12.4 Recepción de páginas web con urllib
    • 12.5 Leyendo archivos binarios con urllib
    • 12.6 Análisis the HTML y rascado de la web
    • 12.7 Análisis de HTML mediante expresiones regulares
    • 12.8 Análisis de HTML mediante BeautifulSoup
    • 12.9 Sección extra para usuarios de Unix / Linux
    • 12.10 Glosario
    • 12.11 Ejercicios
  • 13 Uso de Servicios Web x CONTENTS
    • 13.1 eXtensible Markup Language - XML
    • 13.2 Análisis de XML
    • 13.3 Desplazamiento a través de los nodos
    • 13.4 JavaScript Object Notation - JSON
    • 13.5 Análisis de JSON
    • 13.6 Interfaces de programación de aplicaciones
    • 13.7 Seguridad y uso de APIs
    • 13.8 Glossary
    • 13.9 Aplicación Nº 1: Servicio web de geocodificación de Google
    • 13.10 Aplicación 2: Twitter
  • 14 Programación Orientada a Objetos
    • 14.1 Manejando programas más grandes
    • 14.2 Cómo empezar
    • 14.3 Usando objetos
    • 14.4 Comenzando con programas
    • 14.5 Subdividiendo un problema
    • 14.6 Nuestro primer objeto de Python
    • 14.7 Clases como tipos
    • 14.8 Ciclo de vida de un objeto
    • 14.9 Múltiples instancias
    • 14.10 Herencia
    • 14.11 Resumen
    • 14.12 Glosario
  • 15 Bases de datos y SQL
    • 15.1 ¿Qué es una base de datos?
    • 15.2 Conceptos sobre bases de datos
    • 15.3 Navegador de bases de datos para SQLite
    • 15.4 Creación de una tabla en una base de datos
    • 15.5 Resumen de Lenguaje de Consultas Estructurado
    • 15.6 Rastreo en Twitter usando una base de datos
    • 15.7 Modelado de datos básico
    • 15.8 Programación con múltiples tablas
      • 15.8.1 Restricciones en tablas de bases de datos CONTENTS xi
      • 15.8.2 Recuperar y/o insertar un registro
      • 15.8.3 Almacenar las relaciones entre amigos
    • 15.9 Tres tipos de claves
    • 15.10 Uso de JOIN para recuperar datos
    • 15.11 Resumen
    • 15.12 Depuración
    • 15.13 Glosario
  • 16 Visualización de datos
    • 16.1 Mapa de Google a partir de datos geocodificados
    • 16.2 Visualización de redes e interconexiones
    • 16.3 Visualización de datos de correo
  • A Colaboraciones
    • A.1 Contributor List for Python para todos
    • A.2 Contributor List for Python for Everybody
    • A.3 Lista de colaboradores de “Python para Informáticos”
    • A.4 Prefacio para “Think Python”
    • A.5 Lista de colaboradores de “Think Python”
  • B Detalles del Copyright

Chapter 1

¿Por qué deberías aprender

a escribir programas?

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.

2 CHAPTER 1. ¿POR QUÉ DEBERÍAS APRENDER A ESCRIBIR PROGRAMAS?

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.).

4 CHAPTER 1. ¿POR QUÉ DEBERÍAS APRENDER A ESCRIBIR PROGRAMAS?

  • Los Dispositivos de Entrada y Salida son simplemente la pantalla, teclado, ratón, micrófono, altavoz, touchpad , etc. Incluyen cualquier modo de inter- actuar con una computadora.
  • Actualmente, casi todos los equipos tienen una Conexión de Red para recibir información dentro de una red. Podemos pensar en una red como en un lugar donde almacenar y recuperar datos de forma muy lenta, que puede no estar siempre “activo”. Así que, en cierto sentido, la red no es más que un tipo de Memoria Secundaria más lenta y a veces poco fiable.

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:

1.4. PALABRAS Y FRASES 5

  • Primero, necesitas saber un lenguaje de programación (Python) - debes cono- cer su vocabulario y su gramática. Debes ser capaz de deletrear correcta- mente las palabras en ese nuevo lenguaje y saber construir “frases” bien formadas.
  • Segundo, debes “contar una historia”. Al escribir un relato, combinas pal- abras y frases para comunicar una idea al lector. Hay una cierta técnica y arte en la construcción de un relato, y la habilidad para escribir relatos mejora escribiendo y recibiendo cierta respuesta. En programación, nuestro programa es el “relato” y el problema que estás tratando de resolver es la “idea”.

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/

1.5. CONVERSANDO CON PYTHON 7

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

8 CHAPTER 1. ¿POR QUÉ DEBERÍAS APRENDER A ESCRIBIR PROGRAMAS?

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,