Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Python para Todos Charles
Python para Todos Charles
Charles R. Severance
Créditos
Historial de impresión
Detalles de Copyright
Prólogo
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
v
vi CONTENTS
3 Ejecución condicional 33
3.1 Expresiones booleanas . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3 Ejecución condicional . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Ejecución alternativa . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5 Condicionales encadenados . . . . . . . . . . . . . . . . . . . . . . 36
3.6 Condicionales anidados . . . . . . . . . . . . . . . . . . . . . . . . 37
3.7 Captura de excepciones usando try y except . . . . . . . . . . . . 38
3.8 Evaluación en cortocircuito de expresiones lógicas . . . . . . . . . 40
3.9 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.10 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.11 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4 Funciones 45
4.1 Llamadas a funciones . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2 Funciones internas . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Funciones de conversión de tipos . . . . . . . . . . . . . . . . . . . 46
4.4 Funciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . . 47
4.5 Números aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6 Añadiendo funciones nuevas . . . . . . . . . . . . . . . . . . . . . . 49
4.7 Definición y usos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.8 Flujo de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.9 Parámetros y argumentos . . . . . . . . . . . . . . . . . . . . . . . 52
4.10 Funciones productivas y funciones estériles . . . . . . . . . . . . . 53
4.11 ¿Por qué funciones? . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.12 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.13 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.14 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
CONTENTS vii
5 Iteración 59
5.1 Actualización de variables . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 La sentencia while . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3 Bucles infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4 “Bucles infinitos” y break . . . . . . . . . . . . . . . . . . . . . . . . 61
5.5 Finalizar iteraciones con continue . . . . . . . . . . . . . . . . . . 62
5.6 Bucles definidos usando for . . . . . . . . . . . . . . . . . . . . . . 62
5.7 Diseños de bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.7.1 Bucles de recuento y suma . . . . . . . . . . . . . . . . . . 64
5.7.2 Bucles de máximos y mínimos . . . . . . . . . . . . . . . . 65
5.8 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.9 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.10 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6 Cadenas 69
6.1 Una cadena es una secuencia . . . . . . . . . . . . . . . . . . . . . 69
6.2 Obtener el tamaño de una cadena usando len . . . . . . . . . . . 70
6.3 Recorriendo una cadena mediante un bucle . . . . . . . . . . . . . 70
6.4 Rebanado de una cadena . . . . . . . . . . . . . . . . . . . . . . . . 71
6.5 Los cadenas son inmutables . . . . . . . . . . . . . . . . . . . . . . 72
6.6 Iterando y contando . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.7 El operador in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.8 Comparación de cadenas . . . . . . . . . . . . . . . . . . . . . . . 73
6.9 Métodos de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.10 Analizando cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.11 El operador de formato . . . . . . . . . . . . . . . . . . . . . . . . 77
6.12 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.13 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.14 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7 Archivos 81
7.1 Persistencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.2 Abrir archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.3 Archivos de texto y líneas . . . . . . . . . . . . . . . . . . . . . . . 83
7.4 Lectura de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . 84
viii CONTENTS
8 Listas 95
8.1 Una lista es una secuencia . . . . . . . . . . . . . . . . . . . . . . . 95
8.2 Las listas son mutables . . . . . . . . . . . . . . . . . . . . . . . . 96
8.3 Recorriendo una lista . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.4 Operaciones de listas . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8.5 Rebanado de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.6 Métodos de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.7 Eliminando elementos . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.8 Listas y funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.9 Listas y cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.10 Analizando líneas . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.11 Objetos y valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.12 Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.13 Listas como argumentos . . . . . . . . . . . . . . . . . . . . . . . . 104
8.14 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
8.15 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.16 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9 Diccionarios 113
9.1 Diccionario como un conjunto de contadores . . . . . . . . . . . . 115
9.2 Diccionarios y archivos . . . . . . . . . . . . . . . . . . . . . . . . 116
9.3 Bucles y diccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . 118
9.4 Análisis avanzado de texto . . . . . . . . . . . . . . . . . . . . . . 119
9.5 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9.6 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9.7 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
CONTENTS ix
10 Tuplas 125
10.1 Las Tuplas son inmutables . . . . . . . . . . . . . . . . . . . . . . 125
10.2 Comparación de tuplas . . . . . . . . . . . . . . . . . . . . . . . . 126
10.3 Asignación de tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . 128
10.4 Diccionarios y tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . 129
10.5 Asignación múltiple con diccionarios . . . . . . . . . . . . . . . . . 130
10.6 Las palabras más comunes . . . . . . . . . . . . . . . . . . . . . . . 131
10.7 Uso de tuplas como claves en diccionarios . . . . . . . . . . . . . . 132
10.8 Secuencias: cadenas, listas, y tuplas - ¡Dios mío! . . . . . . . . . . 133
10.9 Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
10.10 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
10.11 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
A Colaboraciones 237
A.1 Contributor List for Python para todos . . . . . . . . . . . . . . . 237
A.2 Contributor List for Python for Everybody . . . . . . . . . . . . . 237
A.3 Lista de colaboradores de “Python para Informáticos” . . . . . . . 237
A.4 Prefacio para “Think Python” . . . . . . . . . . . . . . . . . . . . 238
A.5 Lista de colaboradores de “Think Python” . . . . . . . . . . . . . 239
1
2CHAPTER 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
Antes de que empecemos a aprender el lenguaje que deberemos hablar para darle
instrucciones a las computadoras para desarrollar software, tendremos que apren-
der un poco acerca de cómo están construidos esas máquinas. Si desmontaras tu
computadora o smartphone y mirases dentro con atención, encontrarías los sigu-
ientes componentes:
¿Qué hago a
Software continuación?
Dispositivos Unidad
Entrada Central Red
Salida Procesamiento
Memoria Memoria
Principal Secundaria
¿Qué hago a
Software continuación?
Dispositivos Unidad
Entrada Central Red
Salida Procesamiento
Memoria Memoria
Principal Secundaria