Actualizado el 12 de Diciembre del 2019 (Publicado el 14 de Enero del 2017)
4.727 visualizaciones desde el 14 de Enero del 2017
289,2 KB
41 paginas
Creado hace 15a (22/10/2009)
4o Ingeniería Informática
II26 Procesadores de lenguaje
Python: Conceptos básicos y ejercicios
Introducción a Python
Índice
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
22
33
3.1
3.2
3.3
3.4
3.5
3.6
3.7
Introducción .
.
.
.
.
.
.
.
.
.
.
Invocación del intérprete Python .
.
.
.
.
.
.
.
Tipos de datos.
.
.
Tipos numéricos
El valor None
Cadenas
Subsecuencias
Listas
Tuplas
Diccionarios
44
Entrada/salida .
.
Control de flujo .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Sangrado
Ejecución condicional
Instrucción vacía
Bucles
Funciones .
.
.
.
.
.
.
.
.
.
.
.
Un ejemplo
Parámetros con valores por defecto
Algunas funciones predefinidas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Bibliotecas .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
La biblioteca sys
La biblioteca types
La biblioteca string
La biblioteca re
La biblioteca math
La biblioteca tempfile
55
5.1
5.2
5.3
5.4
66
6.1
6.2
6.3
77
7.1
7.2
7.3
7.4
7.5
7.6
88
99
Escritura de módulos.
Excepciones .
.
.
.
.
1010 Clases y objetos .
.
10.1 Métodos especiales
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Creación y destrucción de los objetos . . . . . . . . . . . . . . . . . . . . . . . . . .
Representación de los objetos como cadenas . . . . . . . . . . . . . . . . . . . . . .
Emulación de secuencias y diccionarios . . . . . . . . . . . . . . . . . . . . . . . . .
Emulación de tipos numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2 Atributos especiales
10.3 Clases derivadas
10.4
10.5
10.6
Ejemplo: una clase para árboles de búsqueda
Ejemplo: una clase para representar expresiones sencillas
Ejemplo: una clase para representar conjuntos de enteros no negativos
c Universitat Jaume I 2009-2010
5
5
6
6
8
8
11
11
13
14
14
15
15
16
16
17
18
19
20
21
22
22
23
23
24
26
26
26
27
28
29
29
29
30
30
30
31
31
33
34
4
II26 Procesadores de lenguaje
1111 Un ejercicio adicional
.
.
.
.
.
AA
A.1
A.2
A.3
Soluciones a algunos ejercicios .
Sobre tipos de datos
Sobre control de flujo
Sobre funciones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
BB
Preguntas frecuentes .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
35
36
36
37
38
38
Introducción a Python
1.
Introducción
5
Python es el lenguaje de programación que utilizaremos para las prácticas de la asignatura.
Algunas de las características que lo hacen interesante para nosotros son:
Es fácil de utilizar.
Es un lenguaje “completo”; no sirve sólo para programar scripts.
Tiene gran variedad de estructuras de datos incorporadas al propio lenguaje.
Tiene una gran cantidad de bibliotecas (libraries).
Permite la programación modular, orientada a objetos y su uso como un lenguaje imperativo
tradicional.
Es interpretado. Esto facilita el desarrollo (aunque ralentice la ejecución).
Se puede utilizar desde un entorno interactivo.
Se puede extender fácilmente.
Es muy expresivo: un programa Python ocupa mucho menos que su equivalente en C.
Este cuaderno pretende presentar los conceptos básicos de Python y capacitarte para comenzar
a utilizarlo. Esto no supone que todas las características interesantes del lenguaje (ni siquiera todas
las útiles para la realización de las prácticas) hayan sido exhaustivamente recogidas aquí.1
La exposición de los conceptos básicos del lenguaje ocupa la mayor parte de este cuaderno,
intercalando en las explicaciones algunos ejercicios propuestos. Posteriormente, en la sección 11 se
propone un nuevo ejercicio, mucho más completo que los vistos hasta entonces. En el apéndice A
se presentan soluciones a los ejercicios básicos. Finalmente, en el apéndice B, puedes encontrar
(junto con las correspondientes respuestas) algunas de las preguntas más frecuentes de los alumnos
de cursos pasados.
2.
Invocación del intérprete Python
Python suele estar instalado en /usr/local/bin o en /usr/bin,2 así que para invocar al
intérprete interactivo basta con escribir
$ python
El sistema arrancará con un mensaje parecido a:
Python 2.4.3 (#1, May 24 2008, 13:47:28)
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Esto nos permite empezar a trabajar (>>> es el prompt del intérprete). Para salir del intérprete
interactivo tenemos que pulsar Ctrl+D.
Si hemos almacenado un programa Python en un fichero (p.ej. fich.py), podemos ejecutarlo
con la orden
$ python fich.py
1En http://www.python.org (así como en http://marmota.dlsi.uji.es/python/, un mirror local) existe ma-
terial suficiente como para resolver prácticamente cualquier duda que pueda surgir sobre Python.
2Puedes averiguar dónde está en tu máquina mediante la orden which python.
c Universitat Jaume I 2009-2010
6
II26 Procesadores de lenguaje
Si nuestro sistema lo permite, también podemos ejecutar el programa directamente si, además
de dar permisos de ejecución al fichero, escribimos como primera línea del fichero los caracteres
#! seguidos de la ruta completa del intérprete Python. Así, si el intérprete está en /usr/bin,
escribiríamos:
#!/usr/bin/python
Si el sistema está razonablemente bien instalado, también se puede utilizar:
#!/usr/bin/env python
Esto tiene la ventaja de que no depende de la situación exacta de Python (env suele estar en
/usr/bin).
3. Tipos de datos
3.1. Tipos numéricos
Es posible usar Python como una calculadora avanzada. Para ello, una vez arrancado el in-
térprete, basta con escribir una expresión tras el prompt. El intérprete calculará el resultado, lo
escribirá y presentará un nuevo prompt. Por ejemplo3:
>>> 2+2
4
>>> 2+4*8
34
>>> (100-20)/6
13
>>> (100-20)%6
2
>>> (100.0-20)/6
13.333333333333334
>>> 2**3
8
>>> 0xFF ^ 0xF0
15
>>> oct(87)
’0127’
Python sigue las reglas habituales de precedencia y asociatividad; además, el operador potencia
(**) es asociativo a derechas y más prioritario que el menos unario (-2**2 devuelve -4).
Para realizar operaciones lógicas tenemos los operadores and, or y not. Los valores que de-
vuelven son:
El operador and devuelve su primer operando si este es falso y el segundo en caso contrario.
El operador or devuelve su primero operando si este es cierto y el segundo en caso contrario.
El operador not devuelve False si su operando es cierto y True si es falso.
Puede que te preguntes qué es cierto y qué es falso. Para Python, falso es (luego veremos estos
tipos con más detalle):
El valor False.
El valor 0.
Una secuencia vacía (lista, tupla o cadena).
Un diccionario vacío.
El valor None.
Todo lo demás es cierto. Las reglas pueden parecer liosas, pero en el contexto de las estructuras
de control funcionan como se espera de ellas y simplifican algunas tareas.
3El símbolo ^ representa el OR exclusivo y la función oct genera la representación octal de un número.
Introducción a Python
7
Algunos ejemplos de expresiones lógicas:
>>> 2 and 4
4
>>> 0 and 4
0
>>> 2 or 4
2
>>> 0 or 4
4
>>> not 0
True
>>> not 4
False
>>> ’2’ and 4
4
>>> ’’ and 4
’’
También disponemos de operadores sobre bits, que no debes confundir con los anteriores. El “y”
binario se representa con &, el “o” con |, el o-exclusivo con ^:
>>> 2 & 4
0
>>> 2 | 4
6
>>> 2 ^ 4
6
>>> 3 | 2
3
>>> 3 ^ 2
1
En cuanto a los tipos de los valores numéricos, Python puede trabajar con enteros, enteros
largos (tienen una precisión ilimitada), flotantes y números complejos:
Tipo
Entero
Entero largo
Flotante
Complejo
Ejemplo Observaciones
123 En decimal
0x7b En hexadecimal (123 decimal).
0173 En octal (123 decimal).
12345678901L Este valor no se puede representar
con un entero.
12.3
1+2j La j puede escribirse en minúscula
o mayúscula.
A partir de la versión 2.2 de Python, las operaciones con enteros que provoquen desbordamiento
son automáticamente realizadas con enteros largos:
>>> 2**30
1073741824
>>> 2**31
2147483648L
Como en C, la asignación a variables se realiza mediante el operador =.
>>> x=20
>>> dolar=0.98
>>> euro=x*dolar
>>> euro
19.600000000000001
También como en C, se pueden realizar asignaciones múltiples:
>>> x=y=z=0
asigna el valor cero a las tres variables. Pero, a diferencia de C, Python no considera las asignaciones
como expresiones:
>>> 2+(a=3)
Traceback (most recent call last):
File "<stdio>", line 1
2+(a=3)
^
SyntaxError: invalid syntax
c Universitat Jaume I 2009-2010
8
II26 Procesadores de lenguaje
Además, pueden realizarse asignaciones concurrentes:
>>> x,y=2,3
>>> x
2
>>> y
3
Es posible realizar asignaciones aumentadas con un operador binario:
>>> a=2
>>> a+=3
>>> a
5
>>> a*=5
>>> a
25
Las posibilidades son: +=, -=, *=, /=, %=, **=, <<=, >>=, &=, ^=, |=.
3.2. El valor None
Existe un valor especial en Python para representar aquellos casos en los que “no hay valor”;
es el valor None. Este valor es el único de su tipo. Se interpreta como falso en las expresiones
lógicas y es el devuelto por las funciones que no devuelven ningún valor explícitamente. Cuando
el resultado
Comentarios de: Python: Conceptos básicos y ejercicios (0)
No hay comentarios