Introducción a la programación con
Python (2ed)
Andrés Becerra Sandoval
Traducción y Adaptación del libro
«How to think like a computer scientist, learning with Python»,
escrito por:
Allen Downey
Jeffrey Elkner
Chris Meyers
Facultad de Ingeniería
Rector: Luis Felipe Gómez Restrepo, S.J.
Vicerrectora Académica: Ana Milena Yoshioka Vargas
Vicerrector del Medio Universitario: Luis Fernando Granados Ospina, S.J.
Facultad de Ingeniería
Decano Académico: Jaime Alberto Aguilar Zambrano Ph.D
Directora del departamento de Ingeniería electrónica y computación: Gloria Inés Alvarez Vargas
Titulo: Introducción a la programación con Python
Titulo original: How to think like a computer scientist, learning with Python Autores: Allen Downey, Jeffrey Elkner,
Chris Meyers
Traducción y adaptación: Andrés Becerra Sandoval
Colección: Libro
ISBN: 978-958-8347-22-6
Coordinador Editorial: Ignacio Murgueitio
Email:
[email protected]
© Derechos Reservados
© Sello Editorial Javeriano
Correspondencia, suscripciones y solicitudes de canje:
Calle 18 # 118-250
Santiago de Cali, Valle del Cauca
Pontificia Universidad Javeriana
Facultad de Ingeniería
Teléfonos: (57-2) 3218200 Exts. 8233 - 518 Fax 555 2823
Email:
[email protected]
Formato 17 x 25 cms
Diseño de Carátula: Patricia Mejía, basada en una imagen de Ken Manheimer
http://myriadicity.net
Impresión: 2014
Se concede permiso para copiar, distribuir, y/o modificar este documento bajo los términos de la GNU Free Docu-
mentation License, Versión 1.1 o cualquier versión posterior publicada por la Free Software Foundation; manteniendo
sin variaciones las secciones “Prólogo,” “Prefacio,” y “Lista de contribuidores,” sin texto de cubierta, y sin texto de
contracubierta. Una copia de la licencia está incluida en el apéndice titulado “GNU Free Documentation License” y
una traducción de ésta al español en el apéndice titulado “Licencia de Documentación Libre de GNU”.
La GNU Free Documentation License también está disponible a través de www.gnu.org o escribiendo a la Free Soft-
ware Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
La forma original de este libro es código fuente LATEX y compilarlo tiene el efecto de generar un libro de texto en una
representación independiente del dispositivo que puede ser convertida a otros formatos e imprimirse.
El código fuente LATEX para este libro y mas información sobre este proyecto se encuentra en los sitios web:
http://cic.javerianacali.edu.co/~abecerra
https://github.com/abecerra/thinkcs-py_es
http://www.thinkpython.com
Este libro ha sido preparado utilizando LYX, LATEX y las figuras se han realizado con xfig. Todos estos son programas
de código abierto, gratuito.
Downey, Allen
Introducción a la programación con Python / Allen Downey, Jeffrey Elkner, Chris Meyers; traducido y adaptado por
Andrés Becerra Sandoval. – Santiago de Cali: Pontificia Universidad Javeriana, Sello Editorial Javeriano, 2014.
345 p. ; 26 cm.
Incluye referencias bibliográficas e índice.
ISBN 978-958-8347-22-6
1. Programación (computadores electrónicos) – Metodología 2. Python (lenguaje de programación para compu-
tadores) I. Meyer, Chris II. Pontificia Universidad Javeriana (Cali) III. How to think like a computer scientist: learning
with python IV. Tít.
SCDD 005.1
BPUJC
Índice general
Prólogo
Prefacio
Lista de los colaboradores
Traducción al español
1. Solución de problemas
XV
XIX
XXV
XXIX
Solución de acertijos
. . . . . . . . . . . . . . . . . . . . . . . . . . .
El método de solución . . . . . . . . . . . . . . . . . . . . . . . . . .
Reflexión sobre este método de solución . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
1.1.
1.2.
1.3.
1.4. Acertijos propuestos
1.5. Mas allá de los acertijos: problemas computacionales
1.6. Glosario .
1.7.
Ejercicios .
1
1
4
7
8
9
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
.
.
.
.
.
.
2. El camino hacia el programa
13
El lenguaje de programación Python . . . . . . . . . . . . . . . . . . 14
¿Qué es un programa? . . . . . . . . . . . . . . . . . . . . . . . . . . 16
¿Qué es la depuración (debugging)? . . . . . . . . . . . . . . . . . . 17
Lenguajes formales y lenguajes naturales
. . . . . . . . . . . . . . . 19
El primer programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.
2.2.
2.3.
2.4.
2.5.
2.6. Glosario .
Ejercicios .
2.7.
.
.
.
.
.
.
V
VI
ÍNDICE GENERAL
3. Variables, expresiones y sentencias
.
.
.
.
.
.
.
Valores y tipos .
Variables .
.
27
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.
. . . . . . . . . . . . . 30
3.3. Nombres de variables y palabras reservadas
Sentencias
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.
Evaluando expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.
3.6. Operadores y operandos . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.7. Orden de las operaciones . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.8. Operaciones sobre cadenas . . . . . . . . . . . . . . . . . . . . . . . . 34
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.9.
Composición .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.10. Comentarios .
.
.
3.11. Glosario .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.12. Ejercicios .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
.
.
.
.
.
.
.
.
.
.
4. Funciones
.
.
39
4.1.
Llamadas a funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.
Conversión de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3.
Coerción de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4.
Funciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.5.
Composición .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.6. Agregando nuevas funciones . . . . . . . . . . . . . . . . . . . . . . 43
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.7. Definiciones y uso .
4.8.
Flujo de ejecución .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.9.
. . . . . . . . . . . . . . . . . . . . . . . . 47
Parámetros y argumentos
4.10. Las variables y los parámetros son locales . . . . . . . . . . . . . . . 48
4.11. Diagramas de pila .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.12. Funciones con resultados . . . . . . . . . . . . . . . . . . . . . . . . . 51
.
4.13. Glosario .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.14. Ejercicios .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
.
.
.
.
.
.
.
.
5. Condicionales y recursión
55
El operador residuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.1.
Expresiones booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2.
5.3. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
ÍNDICE GENERAL
VII
Ejecución condicional . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.4.
Ejecución alternativa . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.5.
Condicionales encadenados . . . . . . . . . . . . . . . . . . . . . . . 59
5.6.
. . . . . . . . . . . . . . . . . . . . . . . . . 60
Condicionales anidados
5.7.
La sentencia return
. . . . . . . . . 61
5.8.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Recursión .
5.9.
. . . . . . . . . . . . . 63
5.10. Diagramas de pila para funciones recursivas
5.11. Recursión infinita .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.12. Entrada por el teclado . . . . . . . . . . . . . . . . . . . . . . . . . . 65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.13. Glosario .
5.14. Ejercicios .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
. . . . .
. . . . .
. . . . .
. . .
.
.
.
.
.
.
.
.
.
6. Funciones fructíferas
.
Valores de retorno .
69
6.1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2. Desarrollo de programas . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Composición .
Funciones booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.4.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.5. Más recursión .
6.6.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.7. Un ejemplo más . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Chequeo de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.8.
6.9.
Pruebas unitarias con doctest
. . . . . . . . . . . . . . . . . . . . . . 81
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.10. Glosario .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.11. Ejercicios .
El salto de fe .
.
.
.
.
.
.
7. Iteración
.
.
.
.
. . . . .
85
. . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.1. Asignación múltiple
La sentencia while (mientras)
. . 86
7.2.
Tablas .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.3.
Tablas de dos dimensiones . . . . . . . . . . . . . . . . . . . . . . . . 91
7.4.
7.5.
Encapsulamiento y generalización . . . . . . . . . . . . . . . . . . . 92
7.6. Más encapsulamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.7.
Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.8. Mas generalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
. . . . .
. . . . .
. . .
.
VIII
ÍNDICE GENERAL
7.9.
Funciones
7.10. Glosario .
7.11. Ejercicios .
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
. . . . . . . . . . . . . . . . . .
Comentarios de: Introducción a la programación con Python (0)
No hay comentarios