Actualizado el 25 de Julio del 2021 (Publicado el 1 de Marzo del 2018)
4.876 visualizaciones desde el 1 de Marzo del 2018
3,3 MB
399 paginas
Creado hace 18a (25/09/2006)
Introducci´on a la programaci´on
con Python
Andr´es Marzal
Isabel Gracia
Departamento de Lenguajes y Sistemas Inform´aticos
Universitat Jaume I
c(cid:13) 2003 de Andr´es Marzal Var´o e Isabel Gracia Luengo. Reservados todos los derechos.
Esta ((Edici´on Internet)) se puede reproducir con fines autodidactas o para su uso en
centros p´ublicos de ense˜nanza, exclusivamente. En el segundo caso, ´unicamente se car-
gar´an al estudiante los costes de reproducci´on. La reproducci´on total o parcial con ´animo
de lucro o con cualquier finalidad comercial est´a estrictamente prohibida sin el permiso
escrito de los autores.
´Indice general
1. Introducci´on
1.1. Computadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Codificaci´on de la informaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Programas y lenguajes de programaci´on . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
9
1.3.1. C´odigo de m´aquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.2. Lenguaje ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.3. ¿Un programa diferente para cada ordenador? . . . . . . . . . . . . . . . . 12
1.3.4. Lenguajes de programaci´on de alto nivel . . . . . . . . . . . . . . . . . . . 14
1.3.5. Compiladores e int´erpretes
. . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.6. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.7. C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
. . . . . . . . . . . . . . . . . . . . . . . . 17
1.4. M´as all´a 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´eticos
. . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.2. Errores de tecleo y excepciones . . . . . . . . . . . . . . . . . . . . . . . . 30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.1. Enteros y flotantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.2. Valores l´ogicos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3. Operadores l´ogicos y de comparaci´on . . . . . . . . . . . . . . . . . . . . . . . . . 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´odulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.7.1. El m´odulo math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.7.2. Otros m´odulos de inter´es
. . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.8. M´etodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3. Programas
53
3.1. El entorno PythonG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2. Ejecuci´on de programas desde la l´ınea de ´ordenes Unix . . . . . . . . . . . . . . . 57
3.3. Entrada/salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.1. Lectura de datos de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.2. M´as 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´aficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.4. Legibilidad de los programas
Introducci´on a la Programaci´on con Python
i
´INDICE GENERAL
2006/09/25-15:31
4. Estructuras de control
75
4.1. Sentencias condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.1.1. Un programa de ejemplo: resoluci´on 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´on de ecuaciones de segundo grado . . . . . . . . . . 83
4.1.6. En caso contrario (else) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.1.7. Una estrategia de dise˜no: refinamientos sucesivos . . . . . . . . . . . . . . 87
4.1.8. Un nuevo refinamiento del programa de ejemplo . . . . . . . . . . . . . . 88
4.1.9. Otro ejemplo: m´aximo de una serie de n´umeros . . . . . . . . . . . . . . . 90
4.1.10. Evaluaci´on con cortocircuitos . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.1.11. Un ´ultimo problema: men´us de usuario . . . . . . . . . . . . . . . . . . . . 96
4.1.12. Una forma compacta para estructuras condicionales m´ultiples (elif)
. . . 98
4.2. Sentencias iterativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.2.1. La sentencia while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.2.2. Un problema de ejemplo: c´alculo de sumatorios . . . . . . . . . . . . . . . 103
4.2.3. Otro programa de ejemplo: requisitos en la entrada . . . . . . . . . . . . . 104
4.2.4. Mejorando el programa de los men´us . . . . . . . . . . . . . . . . . . . . . 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´umeros 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´aficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.4.1. Un graficador de funciones
. . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.4.2. Una animaci´on: simulaci´on gravitacional . . . . . . . . . . . . . . . . . . . 128
4.4.3. Un programa interactivo: un videojuego . . . . . . . . . . . . . . . . . . . 134
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4.5. Una reflexi´on 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´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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´on de binario a decimal
. . . . . . 157
5.1.8. A vueltas con las cadenas: inversi´on de una cadena . . . . . . . . . . . . . 158
5.1.9. Subcadenas: el operador de corte . . . . . . . . . . . . . . . . . . . . . . . 160
5.1.10. Una aplicaci´on: correo electr´onico 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´on de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.2.3. El operador is
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.2.4. Modificaci´on de elementos de listas . . . . . . . . . . . . . . . . . . . . . . 175
5.2.5. Mutabilidad, inmutabilidad y representaci´on de la informaci´on en memoria176
5.2.6. Adici´on 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´on de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.3. De cadenas a listas y viceversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
5.4. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
5.4.1. Sobre la creaci´on de matrices . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.4.2. Lectura de matrices
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
ii
Introducci´on a la Programaci´on con Python
c(cid:13) 2003 Andr´es Marzal e Isabel Gracia
0 ´INDICE GENERAL
5.4.3. ¿Qu´e dimensi´on 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´on final
6. Funciones
211
6.1. Uso de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comentarios de: Introducción a la programación con Python (1)