Referencias 1 INTRODUCCIÓN A PYTHON
1 Introducción a Python
1.1 ¿Qué es Python?
Python es un lenguaje de programación de alto nivel multiparadigma que permite:
• Programación imperativa
• Programación funcional
• Programación orientada a objetos
Fue creado por Guido van Rossum en 1990 aunque actualmente es desarrollado y mantenido por la
Python Software Foundation
1.2 Principales ventajas de Python
• Es de código abierto (certificado por la OSI).
• Es interpretable y compilable.
• Es fácil de aprender gracias a que su sintaxis es bastante legible para los humanos.
• Es un lenguaje maduro (29 años).
• Es fácilmente extensible e integrable en otros lenguajes (C, java).
• Esta mantenido por una gran comunidad de desarrolladores y hay multitud de recursos para su
aprendizaje.
1.3 Tipos de ejecución
1.3.1 Interpretado en la consola de Python
Se ejecuta cada instrucción que introduce el usuario de manera interactiva.
1 > python
2 >>> name = "Alf"
3 >>> print("Hola ", name)
4 Hola Alf
1.3.2 Interpretado en fichero
Se leen y se ejecutan una a una todas las instrucciones del fichero.
1 # Fichero [Link]
2 name = "Alf"
3 print("Hola ", name)
8
Referencias 2 TIPOS DE DATOS SIMPLES
1 > python [Link]
2 Hola Alf
También se puede hacer el fichero ejecutable indicando en la primera línea la ruta hasta el intérprete
de Python.
1 #!/usr/bin/python3
2 name = "Alf"
3 print("Hola", name)
1 > chmod +x [Link]
2 > ./[Link]
3 Hola Alf
1.3.3 Compilado a bytecode
1 # Fichero [Link]
2 name = "Alf"
3 print("Hola " + name)
1 > python -O -m py_compile [Link]
2 > python __pycache__/[Link]
3 Hola Alf
1.3.4 Compilado a ejecutable del sistema
Hay distintos paquetes que permiten compilar a un ejecutable del sistema operativo usado, por ejem‑
plo pyinstaller.
1 > conda install pyinstaller
2 > pyinstaller [Link]
3 > ./dist/hola/hola
4 Hola Alf
2 Tipos de datos simples
2.1 Tipos de datos primitivos simples
• Números (numbers): Secuencia de dígitos (pueden incluir el ‑ para negativos y el . para decima‑
les) que representan números.
Ejemplo. 0, ‑1, 3.1415.
9
Referencias 2 TIPOS DE DATOS SIMPLES
• Cadenas (strings): Secuencia de caracteres alfanuméricos que representan texto. Se escriben
entre comillas simples o dobles.
Ejemplo. ‘Hola’, “Adiós”.
• Booleanos (boolean): Contiene únicamente dos elementos True y False que representan los
valores lógicos verdadero y falso respectivamente.
Estos datos son inmutables, es decir, su valor es constante y no puede cambiar.
2.2 Tipos de datos primitivos compuestos (contenedores)
• Listas (lists): Colecciones de objetos que representan secuencias ordenadas de objetos de dis‑
tintos tipos. Se representan con corchetes y los elementos se separan por comas.
Ejemplo. [1, “dos”, [3, 4], True].
• Tuplas (tuples). Colecciones de objetos que representan secuencias ordenadas de objetos de
distintos tipos. A diferencia de las listas son inmutables, es decir, que no cambian durante la
ejecución. Se representan mediante paréntesis y los elementos se separan por comas.
Ejemplo. (1, ‘dos’, 3)
• Diccionarios (dictionaries): Colecciones de objetos con una clave asociada. Se representan con
llaves, los pares separados por comas y cada par contiene una clave y un objeto asociado sepa‑
rados por dos puntos.
Ejemplo. {‘pi’:3.1416, ‘e’:2.718}.
2.3 Clase de un dato (type())
La clase a la que pertenece un dato se obtiene con el comando type()
1 >>> type(1)
2 <class 'int'>
3 >>> type("Hola")
4 <class 'str'>
5 >>> type([1, "dos", [3, 4], True])
6 <class 'list'>
7 >>>type({'pi':3.1416, 'e':2.718})
8 <class 'dict'>
9 >>>type((1, 'dos', 3))
10 <class 'tuple'>
2.4 Números (clases int y float)
Secuencia de dígitos (pueden incluir el ‑ para negativos y el . para decimales) que representan núme‑
ros. Pueden ser enteros (int) o reales (float).
10
Referencias 2 TIPOS DE DATOS SIMPLES
1 >>> type(1)
2 <class 'int'>
3 >>> type(-2)
4 <class 'int'>
5 >>> type(2.3)
6 <class 'float'>
2.4.1 Operadores aritméticos
• Operadores aritméticos: + (suma), - (resta), * (producto), / (cociente), // (cociente división en‑
tera), % (resto división entera), ** (potencia).
Orden de prioridad de evaluación:
1 Funciones predefinidas
2 Potencias
3 Productos y cocientes
4 Sumas y restas
Se puede saltar el orden de evaluación utilizando paréntesis ( ).
1 >>> 2+3
2 5
3 >>> 5*-2
4 -10
5 >>> 5/2
6 2.5
7 >>> 5//2
8 2
9 >>> (2+3)**2
10 25
2.4.2 Operadores lógicos con números
Devuelven un valor lógico o booleano.
• Operadores lógicos: == (igual que), > (mayor que), < (menor que), >= (mayor o igual que), <=
(menor o igual que), != (distinto de).
11
Referencias 2 TIPOS DE DATOS SIMPLES
1 >>> 3==3
2 True
3 >>> 3.1<=3
4 False
5 >>> -1!=1
6 True
2.5 Cadenas (clase str)
Secuencia de caracteres alfanuméricos que representan texto. Se escriben entre comillas sencillas ’ o
dobles “.
1 'Python'
2 "123"
3 'True'
4 # Cadena vacía
5 ''
6 # Cadena con un espacio en blanco
7 ' '
8 # Cambio de línea
9 '\n'
10 # Tabulador
11 '\t'
2.5.1 Acceso a los elementos de una cadena
Cada carácter tiene asociado un índice que permite acceder a él.
Cadena P y t h o n
Índice positivo 0 1 2 3 4 5
Índice negativo ‑6 ‑5 ‑4 ‑3 ‑2 ‑1
• c[i] devuelve el carácter de la cadena c con el índice i.
El índice del primer carácter de la cadena es 0.
También se pueden utilizar índices negativos para recorrer la cadena del final al principio.
El índice del último carácter de la cadena es ‑1.
1 >>> 'Python'[0]
2 'P'
12
Referencias 2 TIPOS DE DATOS SIMPLES
3 >>> 'Python'[1]
4 'y'
5 >>> 'Python'[-1]
6 'n'
7 >>> 'Python'[6]
8 Traceback (most recent call last):
9 File "<stdin>", line 1, in <module>
10 IndexError: string index out of range
2.5.2 Subcadenas
• c[i:j:k] : Devuelve la subcadena de c desde el carácter con el índice i hasta el carácter ante‑
rior al índice j, tomando caracteres cada k.
1 >>> 'Python'[1:4]
2 'yth'
3 >>> 'Python'[1:1]
4 ''
5 >>> 'Python'[2:]
6 'thon'
7 >>> 'Python'[:-2]
8 'Pyth'
9 >>> 'Python'[:]
10 'Python'
11 >>> 'Python'[0:6:2]
12 'Pto'
2.5.3 Operaciones con cadenas
• c1 + c2 : Devuelve la cadena resultado de concatenar las cadenas c1 y c2.
• c * n : Devuelve la cadena resultado de concatenar n copias de la cadena c.
• c1 in c2 : Devuelve True si c1 es una cadena concenida en c2 y False en caso contrario.
• c1 not in c2 : Devuelve True si c1 es una cadena no concenida en c2 y False en caso con‑
trario.
1 >>> 'Me gusta ' + 'Python'
2 'Me gusta Python'
3 >>> 'Python' * 3
4 'PythonPythonPython'
5 >>> 'y' in 'Python'
6 True
7 >>> 'tho' in 'Python'
8 True
9 >>> 'to' not in 'Python'
10 True
13
Referencias 2 TIPOS DE DATOS SIMPLES
2.5.4 Operaciones de comparación de cadenas
• c1 == c2 : Devuelve True si la cadena c1 es igual que la cadena c2 y False en caso contrario.
• c1 > c2 : Devuelve True si la cadena c1 sucede a la cadena c2 y False en caso contrario.
• c1 < c2 : Devuelve True si la cadena c1 antecede a la cadena c2 y False en caso contrario.
• c1 >= c2 : Devuelve True si la cadena c1 sucede o es igual a la cadena c2 y False en caso
contrario.
• c1 <= c2 : Devuelve True si la cadena c1 antecede o es igual a la cadena c2 y False en caso
contrario.
• c1 != c2 : Devuelve True si la cadena c1 es distinta de la cadena c2 y False en caso contrario.
Utilizan el orden establecido en el código ASCII.
1 >>> 'Python' == 'python'
2 False
3 >>> 'Python' < 'python'
4 True
5 >>> 'a' > 'Z'
6 True
7 >>> 'A' >= 'Z'
8 False
9 >>> '' < 'Python'
10 True
2.5.5 Funciones de cadenas
• len(c) : Devuelve el número de caracteres de la cadena c.
• min(c) : Devuelve el carácter menor de la cadena c.
• max(c) : Devuelve el carácter mayor de la cadena c.
• [Link]() : Devuelve la cadena con los mismos caracteres que la cadena c pero en mayúscu‑
las.
• [Link]() : Devuelve la cadena con los mismos caracteres que la cadena c pero en minúscu‑
las.
• [Link]() : Devuelve la cadena con los mismos caracteres que la cadena c con el primer ca‑
rácter en mayúsculas y el resto en minúsculas.
• [Link](delimitador) : Devuelve la lista formada por las subcadenas que resultan de partir
la cadena c usando como delimitador la cadena delimitador. Si no se especifica el delimita‑
dor utiliza por defecto el espacio en blanco.
1 >>> len('Python')
2 6
3 >>> min('Python')
14
Referencias 2 TIPOS DE DATOS SIMPLES
4 'P'
5 >>> max('Python')
6 'y'
7 >>> 'Python'.upper()
8 'PYTHON'
9 >>> 'A,B,C'.split(',')
10 ['A', 'B', 'C']
11 >>> 'I love Python'.split()
12 ['I', 'love', 'Python']
2.5.6 Cadenas formateadas (format())
• [Link](valores): Devuelve la cadena c tras sustituir los valores de la secuencia valores
en los marcadores de posición de c. Los marcadores de posición se indican mediante llaves
{} en la cadena c, y el reemplazo de los valores se puede realizar por posición, indicando en
número de orden del valor dentro de las llaves, o por nombre, indicando el nombre del valor,
siempre y cuando los valores se pasen con el formato nombre = valor.
1 >>> 'Un {} vale {} {}'.format('€', 1.12, '$')
2 'Un € vale 1.12 $'
3 >>> 'Un {2} vale {1} {0}'.format('€', 1.12, '$')
4 'Un $ vale 1.12 €'
5 >>> 'Un {moneda1} vale {cambio} {moneda2}'.format(moneda1 = '€', cambio
= 1.12, moneda2 = '$')
6 'Un € vale 1.12 $'
Los marcadores de posición, a parte de indicar la posición de los valores de reemplazo, pueden indicar
también el formato de estos. Para ello se utiliza la siguiente sintaxis:
• {:n} : Alinea el valor a la izquierda rellenando con espacios por la derecha hasta los n caracte‑
res.
• {:>n} : Alinea el valor a la derecha rellenando con espacios por la izquierda hasta los n carac‑
teres.
• {:^n} : Alinea el valor en el centro rellenando con espacios por la izquierda y por la derecha
hasta los n caracteres.
• {:nd} : Formatea el valor como un número entero con n caracteres rellenando con espacios
blancos por la izquierda.
• {:[Link]} : Formatea el valor como un número real con un tamaño de n caracteres (incluído el
separador de decimales) y m cifras decimales, rellenando con espacios blancos por la izquierda.
1 >>> 'Hoy es {:^10}, mañana {:10} y pasado {:>10}'.format('lunes', '
martes', 'miércoles')
2 'Hoy es lunes , mañana martes y pasado miércoles'
3 >>> 'Cantidad {:5d}'.format(12)'
15
Referencias 2 TIPOS DE DATOS SIMPLES
4 'Cantidad 12'
5 >>> 'Pi vale {:8.4f}'.format(3.141592)
6 'Pi vale 3.1416'
2.6 Datos lógicos o booleanos (clase bool)
Contiene únicamente dos elementos True y False que representan los valores lógicos verdadero y
falso respectivamente.
False tiene asociado el valor 0 y True tiene asociado el valor 1.
2.6.1 Operaciones con valores lógicos
• Operadores lógicos: == (igual que), > (mayor), < (menor), >= (mayor o igual que), <= (menor o
igual que), != (distinto de).
• not b (negación) : Devuelve True si el dato booleano b es False , y False en caso contrario.
• b1 and b2 : Devuelve True si los datos booleanos b1 y b2 son True, y False en caso contrario.
• b1 or b2 : Devuelve True si alguno de los datos booleanos b1 o b2 son True, y False en caso
contrario.
2.6.2 Tabla de verdad
x y not x x and y x or y
False False True False False
False True True False True
True False False False True
True True False True True
1 >>> not True
2 False
3 >>> False or True
4 True
5 >>> True and False
6 False
7 >>> True and True
8 True
16
Referencias 2 TIPOS DE DATOS SIMPLES
2.7 Conversión de datos primitivos simples
Las siguientes funciones convierten un dato de un tipo en otro, siempre y cuando la conversión sea
posible.
• int() convierte a entero.
Ejemplo. int('12') 12
int(True) 1
int('c') Error
• float() convierte a real.
Ejemplo. float('3.14') 3.14
float(True) 1.0
float('III') Error
• str() convierte a cadena.
Ejemplo. str(3.14) '3.14'
str(True) 'True'
• bool() convierte a lógico.
Ejemplo. bool('0') False
bool('3.14') True
bool('') False
bool('Hola') True
2.8 Variables
Una variable es un identificador ligado a algún valor.
Reglas para nombrarlas:
• Comienzan siempre por una letra, seguida de otras letras o números.
• No se pueden utilizarse palabras reservadas del lenguaje.
A diferencia de otros lenguajes no tienen asociado un tipo y no es necesario declararlas antes de usar‑
las (tipado dinámico).
Para asignar un valor a una variable se utiliza el operador = y para borrar una variable se utiliza la
instrucción del.
1 lenguaje = 'Python'
2 x = 3.14
3 y = 3 + 2
4 # Asignación múltiple
17
Referencias 2 TIPOS DE DATOS SIMPLES
5 a1, a2 = 1, 2
6 # Intercambio de valores
7 a, b = b, a
8 # Incremento (equivale a x = x + 2)
9 x += 2
10 # Decremento (equivale a x = x - 1)
11 x -= 1
12 # Valor no definido
13 x = None
14 del x
2.9 Entrada por terminal (input())
Para asignar a una variable un valor introducido por el usuario en la consola se utiliza la instrucción
input(mensaje) : Muestra la cadena mensaje por la terminal y devuelve una cadena con la entrada
del usuario.
El valor devuelto siempre es una cadena, incluso si el usuario introduce un dato numérico.
1 >>> language = input('?`Cuál es tu lenguaje favorito? ')
2 ?`Cuál es tu lenguaje favorito? Python
3 >>> language
4 'Python'
5 >>> age = input('?`Cuál es tu edad? ')
6 ?`Cuál es tu edad? 20
7 >>> age
8 '20'
2.9.1 Salida por terminal (print())
Para mostrar un dato por la terminal se utiliza la instrucción
print(dato1, ..., sep='', end='\n', file=[Link])
donde
• dato1, ... son los datos a imprimir y pueden indicarse tantos como se quieran separados
por comas.
• sep establece el separador entre los datos, que por defecto es un espacio en blanco ' '.
• end indica la cadena final de la impresión, que por defecto es un cambio de línea \n.
• file indica la dirección del flujo de salida, que por defecto es la salida estándar [Link].
1 >>> print('Hola')
2 Hola
3 >>> name = 'Alf'
18
Referencias 3 ESTRUCTURAS DE CONTROL
4 >>> print('Hola', name)
5 Hola Alf
6 >>> print('El valor de pi es', 3.1415)
7 El valor de pi es 3.1415
8 >>> print('Hola', name, sep='')
9 HolaAlf
10 >>> print('Hola', name, end='!\n')
11 Hola Alf!
3 Estructuras de control
3.1 Condicionales (if)
if condición1:
bloque código
elif condición2:
bloque código
…
else :
bloque código
Evalúa la expresión lógica condición1 y ejecuta el primer bloque de código si es True; si no, evalúa
la siguientes condiciones hasta llegar a la primera que es True y ejecuta el bloque de código asociado.
Si ninguna condición es True ejecuta el bloque de código después de else:.
Pueden aparecer varios bloques elif pero solo uno else al final.
Los bloques de código deben estar indentados por 4 espacios.
La instrucción condicional permite evaluar el estado del programa y tomar decisiones sobre qué có‑
digo ejecutar en función del mismo.
1 >>> edad = 14
2 >>> if edad <= 18 :
3 ... print('Menor')
4 ... elif edad > 65:
5 ... print('Jubilado')
6 ... else:
7 ... print('Activo')
8 ...
9 Menor
10 >>> age = 20
11 >>> if edad <= 18 :
12 ... print('Menor')
13 ... elif edad > 65:
19
Referencias 3 ESTRUCTURAS DE CONTROL
14 ... print('Jubilado')
15 ... else:
16 ... print('Activo')
17 ...
18 Activo
3.2 Bucles condicionales (while)
while condición:
bloque código
Repite la ejecución del bloque de código mientras la expresión lógica condición sea cierta.
Se puede interrumpir en cualquier momento la ejecución del bloque de código con la instrucción
break.
El bloque de código debe estar indentado por 4 espacios.
1 >>> # Pregunta al usuario por un número hasta que introduce 0.
2 >>> num = None
3 >>> while num != 0:
4 ... num = int(input('Introduce un número: '))
5 ...
6 Introduce un número: 2
7 Introduce un número: 1
8 Introduce un número: 0
9 >>>
Alternativa:
1 >>> # Pregunta al usuario por un número hasta que introduce 0.
2 >>> while True:
3 ... num = int(input('Introduce un número: '))
4 ... if num == 0:
5 ... break
6 ...
7 Introduce un número: 2
8 Introduce un número: 1
9 Introduce un número: 0
10 >>>
3.3 Bucles iterativos (for)
for i in secuencia:
bloque código
20
Referencias 4 TIPOS DE DATOS ESTRUCTURADOS
Repite la ejecución del bloque de código para cada elemento de la secuencia secuencia, asignado
dicho elemento a i en cada repetición.
Se puede interrumpir en cualquier momento la ejecución del bloque de código con la instrucción
break o saltar la ejecución para un determinado elemento de la secuencia con la instrucción
continue.
El bloque de código debe estar indentado por 4 espacios.
Se utiliza fundamentalmente para recorrer colecciones de objetos como cadenas, listas, tuplas o dic‑
cionarios.
A menudo se usan con la instrucción range:
• range(fin) : Genera una secuencia de números enteros desde 0 hasta fin-1.
• range(inicio, fin, salto) : Genera una secuencia de números enteros desde inicio
hasta fin-1 con un incremento de salto.
1 >>> palabra = 'Python'
2 >>> for letra in palabra:
3 ... print(letra)
4 ...
5 P
6 y
7 t
8 h
9 o
10 n
1 >>> for i in range(1, 10, 2):
2 ... print(i, end=", ")
3 ...
4 1, 3, 5, 7, 9, >>>
4 Tipos de datos estructurados
4.1 Listas
Una lista es una secuencias ordenadas de objetos de distintos tipos.
Se construyen poniendo los elementos entre corchetes [ ] separados por comas.
Se caracterizan por:
• Tienen orden.
• Pueden contener elementos de distintos tipos.
21
Referencias 4 TIPOS DE DATOS ESTRUCTURADOS
• Son mutables, es decir, pueden alterarse durante la ejecución de un programa.
1 # Lista vacía
2 >>> type([])
3 <class 'list'>
4 # Lista con elementos de distintos tipos
5 >>> [1, "dos", True]
6 # Listas anidadas
7 >>> [1, [2, 3], 4]
4.1.1 Creación de listas mediante la función list()
Otra forma de crear listas es mediante la función list().
• list(c) : Crea una lista con los elementos de la secuencia o colección c.
Se pueden indicar los elementos separados por comas, mediante una cadena, o mediante una colec‑
ción de elementos iterable.
1 >>> list()
2 []
3 >>> list(1, 2, 3)
4 [1, 2, 3]
5 >>> list("Python")
6 ['P', 'y', 't', 'h', 'o', 'n']
4.1.2 Acceso a los elementos de una lista
Se utilizan los mismos operadores de acceso que para cadenas de caracteres.
• l[i] : Devuelve el elemento de la lista l con el índice i.
El índice del primer elemento de la lista es 0.
1 >>> a = ['P', 'y', 't', 'h', 'o', 'n']
2 >>> a[0]
3 'P'
4 >>> a[5]
5 'n'
6 >>> a[6]
7 Traceback (most recent call last):
8 File "<stdin>", line 1, in <module>
9 IndexError: list index out of range
10 >>> a[-1]
11 'n'
22