Actualizado el 28 de Junio del 2021 (Publicado el 29 de Abril del 2018)
1.903 visualizaciones desde el 29 de Abril del 2018
3,0 MB
399 paginas
Creado hace 21a (22/09/2003)
Introducción a la programación
con Python
Andrés Marzal
Isabel Gracia
Departamento de Lenguajes y Sistemas Informáticos
Universitat Jaume I
c 2003 de Andrés Marzal Varó e Isabel Gracia Luengo. Reservados todos los derechos.
Esta ((Edición Internet)) se puede reproducir con fines autodidactas o para su uso en
centros públicos de enseñanza, exclusivamente. En el segundo caso, únicamente se car-
garán al estudiante los costes de reproducción. La reproducción total o parcial con ánimo
de lucro o con cualquier finalidad comercial está estrictamente prohibida sin el permiso
escrito de los autores.
Índice general
1. Introducción
1.1. Computadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Codificación de la información . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Programas y lenguajes de programación . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
9
1.3.1. Código de máquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.2. Lenguaje ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.3. ¿Un programa diferente para cada ordenador? . . . . . . . . . . . . . . . . 12
1.3.4. Lenguajes de programación de alto nivel . . . . . . . . . . . . . . . . . . . 14
1.3.5. Compiladores e intérpretes
. . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.6. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.7. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
. . . . . . . . . . . . . . . . . . . . . . . . 17
1.4. Más allá de los programas: algoritmos
2. Una calculadora avanzada
2.2. Tipos de datos
23
2.1. Sesiones interactivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.1. Los operadores aritméticos
. . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.2. Errores de tecleo y excepciones . . . . . . . . . . . . . . . . . . . . . . . . 30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.1. Enteros y flotantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.2. Valores lógicos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3. Operadores lógicos y de comparación . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4. Variables y asignaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4.1. Asignaciones con operador . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.2. Variables no inicializadas
. . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5. El tipo de datos cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.6. Funciones predefinidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.7. Funciones definidas en módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.7.1. El módulo math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.7.2. Otros módulos de interés
. . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.8. Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3. Programas
53
3.1. El entorno PythonG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2. Ejecución de programas desde la línea de órdenes Unix . . . . . . . . . . . . . . . 57
3.3. Entrada/salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.1. Lectura de datos de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.2. Más sobre la sentencia print . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3.3. Salida con formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.4.1. Algunas claves para aumentar la legibilidad . . . . . . . . . . . . . . . . . 65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.4.2. Comentarios
3.5. Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.4. Legibilidad de los programas
Introducción a la Programación con Python
i
ÍNDICE GENERAL
2003/09/22-16:04
4. Estructuras de control
75
4.1. Sentencias condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.1.1. Un programa de ejemplo: resolución de ecuaciones de primer grado . . . . 75
4.1.2. La sentencia condicional if
. . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.1.3. Trazas con PythonG: el depurador . . . . . . . . . . . . . . . . . . . . . . 79
4.1.4. Sentencias condicionales anidadas . . . . . . . . . . . . . . . . . . . . . . . 81
4.1.5. Otro ejemplo: resolución de ecuaciones de segundo grado . . . . . . . . . . 83
4.1.6. En caso contrario (else) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.1.7. Una estrategia de diseño: refinamientos sucesivos . . . . . . . . . . . . . . 87
4.1.8. Un nuevo refinamiento del programa de ejemplo . . . . . . . . . . . . . . 88
4.1.9. Otro ejemplo: máximo de una serie de números . . . . . . . . . . . . . . . 90
4.1.10. Evaluación con cortocircuitos . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.1.11. Un último problema: menús de usuario . . . . . . . . . . . . . . . . . . . . 96
4.1.12. Una forma compacta para estructuras condicionales múltiples (elif)
. . . 98
4.2. Sentencias iterativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.2.1. La sentencia while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.2.2. Un problema de ejemplo: cálculo de sumatorios . . . . . . . . . . . . . . . 103
4.2.3. Otro programa de ejemplo: requisitos en la entrada . . . . . . . . . . . . . 104
4.2.4. Mejorando el programa de los menús . . . . . . . . . . . . . . . . . . . . . 106
4.2.5. El bucle for-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
for-in como forma compacta de ciertos while . . . . . . . . . . . . . . . 112
4.2.6.
4.2.7. Números primos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.2.8. Rotura de bucles: break . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.2.9. Anidamiento de estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.3. Captura y tratamiento de excepciones . . . . . . . . . . . . . . . . . . . . . . . . 121
4.4. Algunos ejemplos gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.4.1. Un graficador de funciones
. . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.4.2. Una animación: simulación gravitacional . . . . . . . . . . . . . . . . . . . 128
4.4.3. Un programa interactivo: un videojuego . . . . . . . . . . . . . . . . . . . 134
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4.5. Una reflexión final
5. Tipos estructurados: secuencias
5.2. Listas
145
5.1. Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.1.1. Lo que ya sabemos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.1.2. Escapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.1.3. Longitud de una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.1.4.
Indexación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.1.5. Recorrido de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.1.6. Un ejemplo: un contador de palabras . . . . . . . . . . . . . . . . . . . . . 152
5.1.7. Otro ejemplo: un programa de conversión de binario a decimal
. . . . . . 157
5.1.8. A vueltas con las cadenas: inversión de una cadena . . . . . . . . . . . . . 158
5.1.9. Subcadenas: el operador de corte . . . . . . . . . . . . . . . . . . . . . . . 160
5.1.10. Una aplicación: correo electrónico personalizado
. . . . . . . . . . . . . . 162
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.1.11. Referencias a cadenas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
5.2.1. Cosas que, sin darnos cuenta, ya sabemos sobre las listas
. . . . . . . . . 170
5.2.2. Comparación de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.2.3. El operador is
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.2.4. Modificación de elementos de listas . . . . . . . . . . . . . . . . . . . . . . 175
5.2.5. Mutabilidad, inmutabilidad y representación de la información en memoria176
5.2.6. Adición de elementos a una lista . . . . . . . . . . . . . . . . . . . . . . . 178
5.2.7. Lectura de listas por teclado . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.2.8. Borrado de elementos de una lista . . . . . . . . . . . . . . . . . . . . . . 182
5.2.9. Pertenencia de un elemento a una lista . . . . . . . . . . . . . . . . . . . . 185
5.2.10. Ordenación de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3. De cadenas a listas y viceversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.4. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.4.1. Sobre la creación de matrices . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.4.2. Lectura de matrices
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
ii
Introducción a la Programación con Python
c 2003 Andrés Marzal e Isabel Gracia
0 ÍNDICE GENERAL
5.4.3. ¿Qué dimensión tiene una matriz? . . . . . . . . . . . . . . . . . . . . . . 197
5.4.4. Operaciones con matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.4.5. El juego de la vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
5.5. Una reflexión final
6. Funciones
211
6.1. Uso de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comentarios de: Introducción a la programación con Python (0)
No hay comentarios