Introducción
a la programación
con Python 3
Andrés Marzal Varó
Isabel Gracia Luengo
Pedro García Sevilla
Departament De LLenguatges i sistemes
informàtics
Codis d’assignatures EI1003 i mt1003
Andrés Marzal / Isabel Gracia / Pedro García - ISBN: 978-84-697-1178-1
Introducción a la programación con Python 3 - UJI - DOI: http://dx.doi.org/10.6035/Sapientia93
Edita: Publicacions de la Universitat Jaume I. Servei de Comunicació i Publicacions
Campus del Riu Sec. Edifici Rectorat i Serveis Centrals. 12071 Castelló de la Plana
http://www.tenda.uji.es
e-mail:
[email protected]
Col·lecció Sapientia 93
www.sapientia.uji.es
Primera edició, 2014
ISBN: 978-84-697-1178-1
Publicacions de la Universitat Jaume I és una editorial membre de l’une,
cosa que en garanteix la difusió de les obres en els àmbits nacional i inter-
nacional. www.une.es
Reconeixement-CompartirIgual
CC BY-SA
Aquest text està subjecte a una llicència Reconeixement-CompartirIgual de Creative Com-
mons, que permet copiar, distribuir i comunicar públicament l’obra sempre que s’especifique
l’autor i el nom de la publicació fins i tot amb objectius comercials i també permet crear obres
derivades, sempre que siguen distribuïdes amb aquesta mateixa llicència.
http://creativecommons.org/licenses/by-sa/3.0/legalcode
Andrés Marzal / Isabel Gracia / Pedro García - ISBN: 978-84-697-1178-1
Introducción a la programación con Python 3 - UJI - DOI: http://dx.doi.org/10.6035/Sapientia93
Índicegeneral
.
.
.
.
.
Prefacio
Introducción
1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.1. Computadores
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.2. Codificacióndelainformación.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.3. Programasylenguajesdeprogramación.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.3.1. Códigodemáquina.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Lenguajeensamblador .
.
.
.
1.3.2.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.3.3.
¿Unprogramadiferenteparacadaordenador?.
.
.
.
.
.
1.3.4.
.
.
.
Lenguajesdeprogramacióndealtonivel .
.
.
.
.
.
.
.
1.3.5. Compiladoreseintérpretes .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.3.6. Python .
.
.
.
.
.
.
.
.
.
.
.
Java .
1.3.7.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.4. Másalládelosprogramas:algoritmos.
.
2. Unacalculadoraavanzada
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.1. Sesionesinteractivas .
.
.
.
.
.
.
.
Losoperadoresaritméticos .
2.1.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.1.2. Erroresdetecleoyexcepciones .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.2. Tiposdedatos .
.
.
.
.
.
.
.
2.2.1.
Tiposenteroyflotante.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.2.2. Eltipodedatosbooleano(ysusoperadores)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.3. Literalesdeentero.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.4. Variablesyasignaciones
.
.
.
.
.
.
Asignacionesconoperador .
2.4.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.4.2.
Variablesnoinicializadas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.5. Eltipodedatoscadena .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.6. Funcionespredefinidas .
.
.
.
.
2.6.1.
Algunasfuncionessobrevaloresnuméricos
.
.
.
.
.
.
.
2.6.2. Dosfuncionesbásicasparacadenas:ord ychr .
.
.
.
.
2.7. Móduloseimportacióndefuncionesyvariables .
.
.
.
.
.
.
.
.
.
.
2.7.1. Elmódulomath.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.7.2. Otrosmódulosdeinterés .
.
.
.
.
.
.
.
.
.
.
.
.
2.8. Métodos .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.8.1. Unosmétodossencillosparamanipularcadenas...
.
.
.
... yunomuchomáscomplejo:format
.
.
.
.
.
.
.
2.8.2.
3. Programas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.1. Tuprimerprograma .
.
.
.
.
.
.
.
InstalaryprepararEclipseparaeltrabajoconlaextensiónPydev .
3.1.1.
3.1.2. Nuestroprimerprograma .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.2. Ejecucióndeprogramasdesdelalíneadeórdenes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.3. Entrada/salida .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Lecturadedatosdeteclado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.3.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.3.2. Mássobrelafunciónprint
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
11
11
12
16
17
20
20
21
22
23
26
26
31
31
32
39
40
41
42
46
47
51
51
52
54
54
57
58
58
61
61
61
62
67
67
67
75
77
77
78
80
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Andrés Marzal / Isabel Gracia / Pedro García - ISBN: 978-84-697-1178-1
Introducción a la programación con Python 3 - UJI - DOI: http://dx.doi.org/10.6035/Sapientia93
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.4. Sobrelalegibilidaddelosprogramas .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.4.1.
Algunosconvenios .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.4.2. Comentarios .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.5. Gráficosdetortuga
.
.
.
.
.
.
.
.
.
4. Estructurasdecontrol
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1. Sentenciascondicionales .
.
.
.
.
4.1.1. Unprogramailustrativo:resolucióndeecuacionesdeprimergrado .
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1.2.
.
.
.
.
.
.
.
.
.
.
.
Lasentenciacondicionalif
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1.3. Sentenciascondicionalesanidadas .
.
.
.
.
.
.
.
.
.
.
.
.
4.1.4. Otroejemplo:resolucióndeecuacionesdesegundogrado .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1.5. Encasocontrario(else) .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1.6. Unaestrategiadediseño:refinamientossucesivos .
.
.
.
.
.
4.1.7. Unnuevorefinamientodelprogramadeejemplo .
.
.
.
.
.
.
.
.
.
.
.
.
4.1.8. Otroejemplo:máximodeunaseriedenúmeros .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1.9. Evaluaciónconcortocircuitos .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.1.10. Unúltimoproblema:menúsdeusuario .
.
.
4.1.11. Unaformacompactaparaestructurascondicionalesmúltiples(elif) .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.2. Sentenciasiterativas
.
.
.
.
.
.
.
.
.
.
.
.
.
4.2.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Lasentenciawhile .
.
.
.
.
.
.
.
.
4.2.2. Unproblemadeejemplo:cálculodesumatorios.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.2.3. Otroprogramadeejemplo:requisitosenlaentrada .
.
.
.
.
.
.
.
.
.
.
4.2.4. Mejorandoelprogramadelosmenús .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.2.5. Elbuclefor in .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
for incomoformacompactadeciertoswhile .
4.2.6.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.2.7. Númerosprimos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.2.8. Roturadebucles:break.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Anidamientodeestructuras .
.
.
.
4.2.9.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.3. Capturaytratamientodeexcepciones .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.4. Algunosejemplosgráficos .
.
.
.
.
4.4.1. Ungraficadordefunciones.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.4.2. Unaanimación:simulacióngravitacional .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.5. Unareflexiónfinal .
.
.
.
.
.
.
5. Tiposestructurados:secuencias
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1. Cadenas .
.
.
.
.
.
.
.
Loqueyasabemos.
.
5.1.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.2. Escapes .
.
.
.
Longituddeunacadena.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.3.
.
.
.
.
.
.
.
Indexación .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.4.
.
.
.
.
5.1.5. Recorridodecadenas .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.6. Unejemplo:uncontadordepalabras .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.7. Otroejemplo:unprogramadeconversióndebinarioadecimal.
.
.
.
.
Avueltasconlascadenas:inversióndeunacadena .
5.1.8.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.9. Subcadenas:eloperadordecorte .
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.10. Unaaplicación:correoelectrónicopersonalizado
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1.11. Referenciasacadenas .
.
.
.
.
.
.
.
.
.
.
.
.
.
5.2. Listas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.2.1. Cosasque,sindarnoscuenta,yasabemossobrelaslistas .
.
.
.
.
.
.
.
5.2.2. Comparacióndelistas .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.2.3. Eloperadoris.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.2.4. Modificacióndeelementosdelistas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
inmutabilidad y representación de la informaciónen
5.2.5. Mutabilidad,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
memoria .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.2.6.
.
Adicióndeelementosaunalista .
Lecturadelistasporteclado .
5.2.7.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.2.8. Borradodeelementosdeunalista .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
81
.
82
.
83
.
84
95
.
95
.
95
.
97
. 100
. 103
. 104
. 106
. 108
. 110
. 115
. 116
. 118
. 119
. 120
. 125
. 127
. 129
. 132
. 135
. 136
. 142
. 144
. 146
. 148
. 148
. 152
. 159
161
. 161
. 161
. 162
. 165
. 166
. 167
. 169
. 173
. 175
. 176
. 178
Comentarios de: Introducción a la programación con Python 3 (1)