03 Fundamentos de Programacion en Python
03 Fundamentos de Programacion en Python
Python
© Ediciones Roble S. L.
Indice
Fundamentos de programación en Python 3
I. Introducción 3
II. Objetivos 3
III. El lenguaje Python y el entorno Jupyter Notebook 4
3.1. El lenguaje de programación Python 4
3.2. El entorno Jupyter notebook 5
IV. Elementos básicos de Python 11
4.1. Variables 11
4.2. Palabras reservadas 14
4.3. Operadores 14
4.4. Expresiones 16
4.5. Comentarios 16
4.6. Entrada de información 17
4.7. Expresiones booleanas 19
V. Estructuras de control 21
5.1. Condicionales 21
5.1.1. If simple 21
5.1.2. If-else 22
5.1.3. If-elif-else 23
5.2. Bucles 26
5.2.1. WHILE 26
5.2.2. FOR 28
VI. Estructuras de datos 29
6.1. Tuplas 30
6.2. Listas 32
6.2.1. Operadores y funciones 34
6.2.2. Equivalencia en las listas 38
6.2.3. Cadenas 40
6.2.4. Listas por comprensión 41
6.3. Diccionarios 42
VII. Funciones 45
VIII. Importación de módulos 50
IX. Gestión de archivos 52
X. Resumen 54
XI. Caso práctico 55
Recursos 57
Bibliografía 57
Glosario. 57
2/58
Fundamentos de programación en Python
I. Introducción
Un elemento básico para cualquier científico de datos es el conocimiento de algún lenguaje de programación que le
permita realizar programas con los que llevar a cabo el procesamiento de la información. Aunque sería posible
utilizar cualquier lenguaje de propósito general, hay algunos que incluyen la funcionalidad específica para realizar
las operaciones más comunes en este ámbito. En este sentido, existen varias alternativas.
En la presente unidad, se estudiará, en primer lugar, uno de los entornos de desarrollo más utilizados, denominado
Jupyter Notebook, y, a continuación, se revisarán los principales elementos del lenguaje de programación, tales
como los tipos de datos básicos, estructuras de control, estructuras de datos, funciones y gestión de archivos.
En esta unidad, se incluyen ejercicios que muestran la estructura y los elementos de Python. Se recomienda
ejecutarlos en cuadernos de Jupyter Notebook, ya que será beneficioso en el entendimiento de la sintaxis y
relevancia del lenguaje. Al finalizar la unidad, se será capaz de leer y codificar programas básicos en Python.
II. Objetivos
Los objetivos que los alumnos alcanzarán tras el estudio de esta unidad son:
Conocer las estructuras de control y las principales estructuras de datos del lenguaje Python.
3/58
Fundamentos de programación en Python
Entender lo que hace una parte de código Python de complejidad media y simple.
Es un lenguaje interpretado
Es multiparadigma
En este sentido, permite varios estilos de programación: imperativo, orientado a objetos y funcional.
Es multiplataforma
Python es un lenguaje disponible en los principales Sistemas Operativos (Windows, Linux y Mac).
El tipo de los datos es inferido en tiempo de ejecución, de manera que no es necesario declarar el tipo de sus
variables y permite conversiones dinámicas de los tipos de los datos.
En comparación con otros lenguajes de programación, Python es un lenguaje simple, fácil de leer y escribir y simple
de depurar. Por estas razones es fácil de aprender, de manera que la curva de aprendizaje es corta.
Asimismo, Python cuenta con una gran cantidad de librerías, tipos de datos y funciones incorporadas en el propio
lenguaje, lo que le dota de una gran capacidad de procesamiento. En particular, es ampliamente utilizado en el
ámbito del análisis de datos y, en general, en tareas de procesamiento de ciencias e ingeniería.
Desde el punto de vista del análisis de datos, dispone de una amplia variedad de librerías y
herramientas, tales como Numpy, Pandas, Matplotlib, Scipy, Scikit-learn, Theano, TensorFlow,
etc
4/58
Fundamentos de programación en Python
Se trata de un entorno de edición y ejecución visual que permite integrar trozos de códigos con contenidos
multimedia o textuales que ayudan a documentar y facilitar la comprensión de los programas realizados. Los
documentos generados se visualizan con un navegador (Explorer, Chrome, Firefox...) y pueden incluir cualquier
elemento accesible a una página web, además de permitir la ejecución de código escrito en el lenguaje de
programación Python.
Jupyter contiene todas las herramientas científicas estándar de Python que permiten realizar
tareas propias en el contexto del análisis de datos: importación y exportación, manipulación
y transformación, visualización, etc.
Descarga
Para instalarlo, lo mejor es el entorno Anaconda, el cual incluye un conjunto de herramientas de desarrollo para
Python, entre las que se encuentra el Jupyter Notebook. Anaconda se puede descargar desde la página web de
Anaconda1.En la zona de descargas, aparecen dos versiones. Se debe bajar la versión para Phyton 3.x (figura
3.1.).
5/58
Fundamentos de programación en Python
Instalación
Una vez descargado el software, para su instalación, se pueden seguir las instrucciones de para cada sistema
operativo que aparecen en la misma página de descargas 2.
6/58
Fundamentos de programación en Python
Ejecución
Para ejecutar Jupyter, es preciso buscar en la instalación realizada el icono de "Jupyter Notebook" dentro del
menú "Anaconda" y pulsar sobre el mismo (figura 3.3.).
7/58
Fundamentos de programación en Python
Nueva terminal
Jupyter Notebook es una aplicación web bajo el modelo cliente-servidor. Al ejecutar Jupyter, se iniciará un
servicio que se ejecuta localmente, por default, en la URL http://127.0.0.1:8888, y que es accesible desde el
navegador, por lo cual aparece una nueva terminal donde se ejecuta la herramienta (figura 3.4.). Este terminal no
debe cerrarse mientras se esté trabajando con el Jupyter Notebook, de lo contrario el servicio será detenido.
Interface en el navegador
A la vez, se lanza un navegador donde se puede acceder a la interface principal del Jupyter Notebook (figura
3.5.).
Esta interface actúa como un navegador de archivos y es posible moverse entre distintas carpetas —basta
pinchar sobre la carpeta correspondiente y se accede al contenido de dicha carpeta—, es posible crear nuevos
ficheros y carpetas. Para ello se pulsa sobre el desplegable que aparece en la parte derecha, denominado
New, y allí se selecciona Text File o Folder, dependiendo de lo que se quiera crear. También es posible
renombrar y eliminar las carpetas y archivos. Para ello basta seleccionar la correspondiente carpeta o archivo.
Una vez seleccionado, en la parte superior aparecen las opciones de Rename y el icono de la papelera, que
permiten renombrar y eliminar respectivamente.
8/58
Fundamentos de programación en Python
Creación de un notebook
Los notebooks de Jupyter son unos archivos con extensión .ipyb, en los que se puede escribir código python
ejecutable, texto, dibujar gráficas y otras operaciones más. Para crearse un nuevo notebook basta con pulsar
sobre el desplegable que aparece en la parte superior derecha, denominado New, y seleccionar en el mismo la
opción Python 3 que se muestran debajo de Notebooks (figura 3.6.).
Elementos esenciales
Cada notebook tiene un título asociado. Por defecto, aparece con el nombre Untitled. Para modificarlo, basta
pulsar sobre Untitled y aparece una ventana en la que se puede modificar el nombre.
En la parte superior de la interface del notebook, aparece un conjunto de menús con diferentes opciones
para gestionar los archivos, para editar, visionar, etc.
9/58
Fundamentos de programación en Python
Iconos que permiten realizar las acciones más comunes sobre los elementos del notebook.
Celdas.
La unidad de edición de un notebook son las celdas. Cada celda contiene código Python o la información
que documenta dicho código. En este sentido, un notebook es una secuencia de celdas. Las celdas pueden
ser de diferentes tipos según el contenido que almacenan:
Markdown: permite escribir texto formateado con el objetivo de documentar. Se usa el lenguaje de
marcas Markdown.
Raw NBConvert: son celdas que permiten escribir fragmentos de código sin que sean ejecutados.
Heading: permite embeber código html.
Code: sirven para escribir código Python ejecutable. Están marcadas por la palabra In [n] y están
numeradas. El resultado de la ejecución de cada celda se muestra en el campo Out[n], también
numerado.
Para elegir el tipo de celda a utilizar, se selecciona en un desplegable que aparece en la fila superior junto a los
iconos:
Todas las celdas son susceptibles de ser ejecutadas. La ejecución de una celda de código Python ejecutará el
código escrito en la celda y producirá una salida. La ejecución de celdas de tipo Markdown dará formato al
texto. Para ejecutar una celda, hay que colocarse en la celda y, posteriormente, pulsar el botón cuyo icono es un
triángulo mirando a la derecha (figura 3.9.).
Es recomendable ver el vídeo Jupyter notebook Hello World programming.3 En él se muestran los pasos para
ejecutar su primer programa.
10/58
Fundamentos de programación en Python
De igual forma para interrumpir la ejecución, se pulsa sobre el cuadrado. Para crear celdas nuevas, se pulsa
sobre el botón con el icono del signo +.
Elegir el tipo de celda. Por defecto, son de tipo Code. Dependiendo del tipo de celda elegido, Jupyter lo
interpretará de diferente manera.
Una vez introducido el código o texto en la celda, se debe ejecutar. Para ello, se pulsa sobre el icono en
forma de flecha.
[3] Coder Arts. Jupyter notebook Hello World programming. YouTube, 10 de abril de 2018.
Ejemplo de función
Por ejemplo, si se quiere crear una celda que contenga la función: def multiplica(a,b): return a*b y después
invocarla con los valores 3 y 4, multiplica(3,4), se haría como se muestra en la figura 3.10.
4.1. Variables
11/58
Fundamentos de programación en Python
pi=3.1416
radio=5
area=pi*(radio**2)
n=17
pi=3.1415926535897931
n=17
pi=3.1415926535897931
print(n)
print(pi)
Las variables son de un tipo que coincide con el tipo del valor que referencian. El método type () indica
el tipo de una variable
type (mensaje)
type(n)
int: enteros.
12/58
Fundamentos de programación en Python
str: cadenas.
Cabe señalar que existen unas reglas de construcción de los nombres de las variables:
Es necesario llamar la atención sobre el hecho de que, antes de poder actualizar una variable, se debe inicializar
mediante una asignación. A continuación, se puede actualizar la variable aumentándola (incrementar) o
disminuyendo (decrementar). Por ejemplo,
x=0
x=x+1
n1 = 1
n2 = 3
suma = n1 + n1
13/58
Fundamentos de programación en Python
lado = 3
print ("El área de un cuadrado que mide ",lado, "cm por lado es ",area)
import keyword
print(keyword.kwlist)
4.3. Operadores
Los operadores son símbolos especiales que representan cálculos, como la suma o la multiplicación. Los valores a
los cuales se aplican esos operadores reciben el nombre de operandos. Los principales operadores sobre los
tipos int y float son:
i+j
suma
i-j
resta
i*j
multiplicación
i/j
división de dos números. Si son enteros, el resultado es un entero, y si son reales, el resultado es un real
i//j
i% j
14/58
Fundamentos de programación en Python
i**j
i==j
i!=j
i>j
Pero existen algunas particularidades cuando se usan los operadores sobre las cadenas.
"c"*"c" # TypeError
len("psicología") # Devuelve 10
15/58
Fundamentos de programación en Python
3 != 2 #Devuelve false
4.4. Expresiones
1
Las expresiones tienen un tipo. Así, por ejemplo, 6 + 7 es una expresión que representa un entero. Cuando en
una expresión aparece más de un operador, el orden de evaluación depende de las reglas de precedencia.
Para los operadores matemáticos, Python sigue las convenciones matemáticas:
4**1+1 #Devuelve 5
6*1**2 #Devuelve 6
(-1)**3*3 #Devuelve -3
4.5. Comentarios
En Python comienzan con el símbolo #, de forma que todo lo que va desde # hasta el final de la línea es ignorado y
no afecta al programa.
16/58
Fundamentos de programación en Python
minuto=300
porcentaje=(minuto*100)/60
En el ejemplo anterior, el comentario aparece como una línea completa, pero también pueden ponerse comentarios
al final de una línea.
porcentaje=(minuto*100)/60
entrada = input()
Antes de recibir cualquier dato desde el usuario, es mejor escribir un mensaje explicando qué debe introducir. Se
puede pasar una cadena a input, que será mostrada al usuario antes de que el programa se detenga para recibir
su entrada.
17/58
Fundamentos de programación en Python
La secuencia \n al final del mensaje representa un newline, que es un carácter especial que provoca un salto de
línea. Por eso, la entrada del usuario aparece debajo del mensaje. Si se espera que el usuario escriba un entero,
puedes intentar convertir el valor de retorno a int usando la función int (), pero si el usuario escribe algo que no sea
una cadena de dígitos, obtiene un error.
deuda = input("Deuda\n")
Otros ejemplos en los que se convierte el valor de retorno a un tipo de dato específico son:
Programa que solicita dos palabras al usuario, las imprime con un espacio de separación y además
intercambia su primer carácter, por ejemplo: Aprendiendo Python debería imprimirse Pprendiendo Aython.
Programa que pregunta al usuario su edad, estatura y nombre, al final imprime los datos.
18/58
Fundamentos de programación en Python
Los códigos anteriores no tienen manejo de excepciones. Si el usuario escribe algo diferente al tipo de dato
esperado, se obtiene un error.
x == y # x es igual que y.
x != y # x es distinto de y.
x is y # x es lo mismo que y.
19/58
Fundamentos de programación en Python
10
and cierto si las dos expresiones que relaciona son ciertas y falso en caso contrario.
11
or falso si las dos expresiones que relaciona son falsas y cierto en caso contrario.
x >0 and x <10 es verdadero solo cuando x es mayor que 0 y menor que 10.
n%2 == 0 or n%3 == 0 es verdadero si el número es divisible por 2 o por 3.
not (x>y) es verdadero si x es menor o igual que y.
Hay que tener en cuenta que cualquier número distinto de cero se interpreta como “verdadero”. Por ejemplo: 23 and
True
7 == 7 #True
7 != 7 #False
7>7 #False
7 >=7 #True
10 > 1 #True
10 < 1 #False
10 <=1 #False
1 < 10 #True
20/58
Fundamentos de programación en Python
8>11 #False
8>5 #True
V. Estructuras de control
5.1. Condicionales
Las expresiones condicionales facilitan la codificación de estructuras que bifurcan la ejecución del código en varias
ramas o caminos de ejecución. Existen varias formas.
5.1.1. If simple
Tiene la estructura:
if expresión booleana:
ejecutar código
Programa que muestra el mensaje “El número es positivo” si se escribe un número mayor a
cero.
if x > 0:
21/58
Fundamentos de programación en Python
La expresión booleana después de la sentencia if recibe el nombre de condición. La sentencia if se finaliza con
un carácter de dos puntos (:) y la/s línea/s que van detrás de la sentencia if van indentadas. Este código se
denomina bloque.
Si la condición lógica es verdadera, la sentencia indentada será ejecutada. Si la condición es falsa, la sentencia
indentada será omitida.
No hay límite en el número de sentencias que pueden aparecer en el cuerpo, pero debe haber al menos una. A
veces puede resultar útil tener un cuerpo sin sentencias, usándose en este caso la sentencia pass, que no hace
nada.
5.1.2. If-else
La segunda forma de la sentencia if es la ejecución alternativa, en la cual existen dos posibilidades y la condición
determina cuál de ellas sería ejecutada:
if expresión booleana:
ejecutar código1
else:
ejecutar código2
Programa que solicita un número al usuario y muestra si está dentro del rango 10-20.
else:
22/58
Fundamentos de programación en Python
Programa que muestra el mensaje “El número es positivo” si se escribe un número mayor que cero y,
en caso contrario, se muestre “El número es negativo”.
if x > 0:
else:
Dado que la condición debe ser obligatoriamente verdadera o falsa, solamente una de las alternativas será
ejecutada. Las alternativas reciben el nombre de ramas, ya que se trata de ramificaciones en el flujo de la
ejecución.
5.1.3. If-elif-else
La tercera forma de la sentencia if es el condicional encadenado que permite que haya más de dos posibilidades o
ramas:
if expresión booleana:
ejecutar código 1
elif:
ejecutar código 2
else:
23/58
Fundamentos de programación en Python
n1 = 10
n2 = 11
if n1 < n2:
else:
n1 = 10
n2 = 11
n3 = 12
print (n1)
print (n2)
print (n3)
else:
24/58
Fundamentos de programación en Python
else:
Programa que muestra el mensaje “El número es positivo” si se escribe un número mayor que cero,
“El número es cero” si el número es cero y “El número es negativo” si el número es menor a cero.
if x > 0:
elif x == 0:
else:
No hay un límite para el número de sentencias elif. Si hay una cláusula else, debe ir al final, pero tampoco es
obligatorio que esta exista.
Un condicional puede también estar anidado dentro de otro. Sin embargo, estos pueden ser difíciles de leer, por lo
que deben evitarse y tratar de usar operadores lógicos que permitan simplificar las sentencias condicionales
anidadas.
25/58
Fundamentos de programación en Python
5.2. Bucles
Los bucles permiten la repetición de acciones y generalmente se construyen así:
5.2.1. WHILE
El primer tipo de bucle es el while. El cuerpo del bucle debe cambiar el valor de una o más variables, de modo que
la condición pueda en algún momento evaluarse como falsa y el bucle termine. La variable que cambia cada vez
que el bucle se ejecuta y controla cuándo termina este, recibe el nombre de variable de iteración. Si no hay variable
de iteración, el bucle se repetirá para siempre, resultando así un bucle infinito. Cada vez que se ejecuta el cuerpo
del bucle se dice que se realiza una iteración. Tiene la siguiente estructura:
código
i = 10
while( i<=50 ):
print(i)
i+=1
26/58
Fundamentos de programación en Python
invertida = ""
cont = len(cadena)
indice = -1
invertida += cadena[indice]
cont -= 1
print (invertida)
numero = 5
factorial = 1
factorial *= numero
numero -= 1
En este ejemplo, el bucle nunca se ejecuta cuando x=0 y nunca terminará si empieza con x<0.
Es preciso observar que, a veces, no se sabe si hay que terminar un bucle hasta que se ha recorrido la mitad del
cuerpo del mismo. En ese caso, se puede crear un bucle infinito a propósito y usar la sentencia break para salir
explícitamente cuando se haya alcanzado la condición de salida.
27/58
Fundamentos de programación en Python
while True:
if (linea == "Fin"):
break
print (linea)
Algunas
veces,
estando
dentro de un bucle se necesita terminar con la iteración actual y saltar a la siguiente de forma inmediata. En ese
caso se puede utilizar la sentencia continue para pasar a la siguiente iteración sin terminar la ejecución del cuerpo
del bucle para la actual.
5.2.2. FOR
El siguiente tipo de bucle es el for. Se repite a través de un conjunto conocido de elementos, de modo que ejecuta
tantas iteraciones como elementos hay en el conjunto. Es útil utilizar la función range para crear una secuencia.
Range puede tomar uno o dos valores:
Si toma dos valores, genera todos los enteros desde la primera entrada hasta la segunda entrada-1. Por
ejemplo: range (2, 5) = (2, 3, 4).
Y si toma un solo parámetro, entonces range(x) = range(0,x).
código
x=101
for i in range(1,x):
print (i)
28/58
Fundamentos de programación en Python
Usando un for, programa que muestra los números pares del 1 al 100
for i in range(1,101):
if( (i%2)==0 ):
print(i)
Un ejercicio más, programa que imprime al revés la frase que escriba el usuario
salida = ''
for n in entrada:
salida = n + salida
print (salida)
Usando un for, programa que pregunta al usuario cuántos números necesita validar. Posteriormente,
el usuario teclea cada uno y valida si son positivos, negativos o cero
for y in range(0,total):
if x > 0:
elif x == 0:
else:
29/58
Fundamentos de programación en Python
6.1. Tuplas
Una tupla es una secuencia de valores de cualquier tipo indexada por enteros. Las tuplas son inmutables —tienen
una longitud fija y no pueden cambiarse sus elementos— y son comparables. Sintácticamente, una tupla es una lista
de valores separados por comas y encerradas entre paréntesis.
Para crear una tupla con un único elemento, es necesario incluir una coma al final.
p = (4,)
Otra forma de construir una tupla es usar la función interna tuple que crea una tupla vacía si se invoca sin
argumentos, y si se le proporciona como argumento una secuencia (cadena, lista o tulpa) genera una tupla con los
elementos de la secuencia.
t = tuple()
print (t)
t = tuple("supercalifragilisticoespialidoso")
print (t)
print ( t[0] ) #3
t[0] # Devuelve 1
30/58
Fundamentos de programación en Python
No se pueden modificar los elementos de una tupla, pero se puede reemplazar una tupla por otra.
Se comienza comparando el primer elemento de cada secuencia. Si es igual en ambas, pasa al siguiente
elemento, y así sucesivamente, hasta que encuentra uno que es diferente. A partir de ese momento, los
elementos siguientes ya no son tenidos en cuenta.
31/58
Fundamentos de programación en Python
Tupla con los nombres de los meses del año. Se solicita al usuario que escriba un número y se
muestra el mes del año que corresponde:
meses = ("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre",
"Noviembre", "Diciembre")
else:
print(":(")
Tupla con números aleatorios del 1 al 10. Se solicita un número al usuario y se imprime cuantas veces
se repite:
tupla = (2,3,2,1,3,4,7,8,9,7,6,5,5,6,7,8,9,10,4,3,2,1,6,4,5,3,6,6,6,6,6)
contador= 0
for i in tupla:
if numero == i:
contador = contador + 1
6.2. Listas
Una lista es una secuencia de valores de cualquier tipo que reciben el nombre de elementos.
Creación
El método más simple para crear una lista es encerrar los elementos entre corchetes. Por ejemplo, t = [10, 20,
30, 40]
32/58
Fundamentos de programación en Python
Asignación
La asignación de valores a una lista no retorna nada, sin embargo, si se usa el nombre de la lista, es posible ver
el contenido de la variable. Por ejemplo:
Listas vacías
Una lista que no contiene elementos recibe el nombre de lista vacía —se crea con unos corchetes vacíos []—.
Por ejemplo:
t = []
t # Devuelve []
Acceso a elementos
Para acceder a los elementos de una lista, se usa el operador corchete que contiene una expresión que
especifica el índice —los índices comienzan por 0—. Los índices de una lista se caracterizan por:
Si un índice tiene un valor negativo, se cuenta hacia atrás desde el final de la lista.
Por ejemplo:
t[2] # Devuelve 30
33/58
Fundamentos de programación en Python
Listas mutables
Las listas son mutables, puesto que su estructura puede ser cambiada después de ser creadas. Por ejemplo:
numeros[1] = 5
Tipo de elementos
Los elementos en una lista no tienen por qué ser todos del mismo tipo. Por ejemplo:
Anidación
Cuando una lista está dentro de otra, se dice que está anidada. En una lista anidada, cada lista interna solo
cuenta como un único elemento. Por ejemplo:
Soporta indexación con números negativos que permite seleccionar por el final de la lista. Por ejemplo:
34/58
Fundamentos de programación en Python
Concatenación
a = [1, 2, 3]
b = [4, 5, 6]
c=a+b
Pertenencia de un elemento
a = [1, 2, 3]
2 in a # True
5 in a # False
El operador in se puede usar para recorrer los elementos de una lista usando un bucle for, como por ejemplo:
a = [1, 2, 3]
for x in a:
print (x)
Repetición
Selección de secciones
El operador (slice) cuya sintaxis es [inicio:final:salto] permite seleccionar secciones de una lista:
35/58
Fundamentos de programación en Python
Eliminación de elementos
del t[1]
Suma de listas
t = [1, 2, 3, 4, 5, 6]
t = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Longitud de la lista
t = [1, 2, 3, 4, 5, 6, 7, 8, 9]
len(t) # Devuelve 9
La función range () crea una secuencia de valores a partir del dado como parámetro. Es útil para los bucles de
tipo for. Por ejemplo:
for i in lista:
36/58
Fundamentos de programación en Python
Para ver el contenido generado por range (), se debe usar el constructor list.
Añadir elementos
t.append("nuevo")
extend toma una lista como argumento y añade al final de la actual todos sus elementos.
t1 = [1, 2, 3, 4, 5, 6]
t2 = [7, 8, 9]
t1.extend(t2)
t1 # Devuelve [1, 2, 3, 4, 5, 6, 7, 8, 9]
Ordenación de elementos
t = ["d","e","a","c","x"]
t.sort()
t = [7,6,5,4,3,2,1]
t.sort()
t # Devuelve [1, 2, 3, 4, 5, 6, 7]
37/58
Fundamentos de programación en Python
Extracción de elementos
El método pop elimina un elemento de la lista referenciado en forma de índice. Devuelve el elemento que ha
sido eliminado. Si no se proporciona un índice, borra y devuelve el último elemento.
t = ["d","e","a","c","x"]
x = t.pop(1)
Eliminar elementos
t = ["d","e","a","c","x"]
t.remove("e")
En Python dos listas son equivalentes si tienen los mismos elementos, pero no son idénticas. Sin embargo, si dos
listas son idénticas, también son equivalentes, es decir, la equivalencia no implica que sean idénticas. Para
comprobar si dos variables son idénticas, se puede usar el operador is.
a = [1, 2, 3]
b = [1, 2, 3]
a is b # Devuelve false
a = [1, 2, 3]
a=b
a is b # Devuelve true
38/58
Fundamentos de programación en Python
Si a y b son idénticas significa que la lista tiene dos referencias o nombres diferentes. Así, los cambios
que se hagan usando cualquiera de los nombres afectan a la misma lista.
a = [1, 2, 3]
b=a
b[0] = 45
En las operaciones que se realizan sobre las listas existen aquellas que modifican listas y otras
que crean listas nuevas. Por ejemplo, el método append modifica una lista, pero el operador +
crea una lista nueva.
t1 = [2, 3]
t2 = [5]
t1.append(4)
Por ejemplo:
Programa que solicita al usuario una palabra y guarda los caracteres en una lista sin repetirlos:
lista = []
for c in palabra:
lista.append(c)
print(palabra)
print(lista)
Lista vacía, se solicita al usuario valores para la lista. Al final, se muestra la suma y el promedio:
39/58
Fundamentos de programación en Python
lista = []
for i in range(total):
lista.append(numero)
suma = sum(lista)
print (lista)
6.2.3. Cadenas
Una cadena es una secuencia de caracteres y una lista es una secuencia de valores, pero una lista de caracteres
no es lo mismo que una cadena. Para convertir desde una cadena a una lista de caracteres, se puede usar la
función list, que divide una cadena en letras individuales.
s = "casa"
t = list (s)
t = s.split()
Una vez usado split, se puede utilizar el operador índice (corchetes) para buscar una palabra concreta
en la lista.
40/58
Fundamentos de programación en Python
Se puede llamar a split con un argumento opcional denominado delimitador, que especifica qué
caracteres se deben usar como delimitadores de palabras.
s = "El-camión-rojo-de-Juan"
t = s.split("-")
Join es la inversa de split y toma una lista de cadenas y concatena sus elementos. Al ser un método de cadena,
debe invocarse sobre el delimitador y pasarle la lista como un parámetro.
delimitador = "-"
Una lista por comprensión es una expresión compacta para definir listas, conjuntos y diccionarios en Python. Se
trata de definir cada uno de los elementos sin tener que nombrar cada uno de ellos.
41/58
Fundamentos de programación en Python
letras = ['a','b','g','h','n']
Lista que contiene los valores de 3 elevado a la x, donde x es un número par y pertenece al rango del 1
a 100:
c = [3 ** x for x in range(1,101) if x % 2 == 0]
print (c)
c = [ x for x in range(1,101) if x % 3 == 0]
print (c)
6.3. Diccionarios
Un diccionario es una colección no ordenada de pares clave-valor donde la clave y el valor son objetos que
pueden ser de (casi) cualquier tipo. La función dict () crea un diccionario nuevo sin elementos.
ejemplo = dict()
ejemplo # Devuelve {}
Para añadir elementos al diccionario, se pueden usar corchetes y usar acceso indexado a través de la clave.
42/58
Fundamentos de programación en Python
ejemplo = dict()
ejemplo # Devuelve {}
ejemplo["primero"] = "Libro"
Otra forma de crear un diccionario es mediante una secuencia de pares clave-valor separados por comas y
encerrados entre llaves.
ejemplo2 = {"primero":"Libro","segundo":34,"tercero":(3,4)}
El orden de los elementos en un diccionario es impredecible, pero eso no es importante, ya que se usan las claves
para buscar los valores correspondientes. En este sentido, si la clave especificada no está en el diccionario se
obtiene una excepción.
Algunos métodos:
El método len()
ejemplo2 = {"primero":"Libro","segundo":34,"tercero":(3,4)}
len (ejemplo2) #3
El método in()
ejemplo2 = {"primero":"Libro","segundo":34,"tercero":(3,4)}
43/58
Fundamentos de programación en Python
El método values()
Para ver si algo aparece como valor en un diccionario, se puede usar el método values, que devuelve los valores
como una lista, y después usar el operador in sobre esa lista.
valores = ejemplo2.values()
El método get ()
Toma una clave y un valor por defecto. Si la clave aparece en el diccionario get, devuelve el valor
correspondiente. En caso contrario, devuelve el valor por defecto.
El método keys()
El método ítems()
Devuelve una lista de tuplas, cada una de las cuales es una pareja clave-valor sin ningún orden definido.
t = contadores.items();
44/58
Fundamentos de programación en Python
Se puede utilizar un diccionario como una secuencia en una sentencia for, de manera que se recorren
todas las claves del diccionario.
# 2 42
# 3 100
El ejemplo anterior se podría haber realizado de una manera equivalente utilizando el método ítems ().
# 2 42
# 3 100
VII. Funciones
Una función es una secuencia de sentencias que realizan una operación y que reciben un nombre. Sus principales
características son:
Creación
Para crear una función se utiliza la palabra reservada def. A continuación, aparece el nombre de la función, entre
paréntesis los parámetros, y finaliza con :. Esta línea se denomina cabecera de la función. Después de los :
aparece el código que se ejecuta cuando se llama a la función. Este trozo de código, se denomina cuerpo de la
función y debe estar indentado. El cuerpo puede contener cualquier número de sentencias. Para devolver el
valor se usa la palabra reservada return.
45/58
Fundamentos de programación en Python
m1 = x + y
m2 = m1 + z
return m2
multiplicacion = 1
for i in lista:
multiplicacion *= i
return (multiplicacion)
lista = {1,2,3,4}
def palindromo(palabra):
palabra_al_reves = palabra[::-1]
print(palabra_al_reves)
print("Es palindromo")
else:
print("No es palindromo")
46/58
Fundamentos de programación en Python
Definición y llamada
Las reglas para los nombres de las funciones son los mismos que para las variables: se pueden usar letras,
números y algunos signos de puntuación, pero el primer carácter no puede ser un número. No se puede usar una
palabra clave como nombre de una función y se debería evitar también tener una variable y una función con el
mismo nombre. Las funciones con paréntesis vacíos después del nombre indican que esta función no toma
ningún argumento.
La sintaxis para llamar a una función definida consiste en indicar el nombre de la función junto a una expresión
entre paréntesis denominados argumentos de la función. El argumento es un valor o variable que se pasa a la
función como parámetro de entrada.
r = suma_tres ( 1, 2, 3 ) # Devuelve 6
r = suma_tres ( 4, 5, 6 ) # Devuelve 15
Algunas características
La definición de una función debe ser ejecutada antes de que la función se llame por primera vez, y no
generan ninguna salida. Sin embargo, las sentencias dentro de cada función son ejecutadas solamente
cuando se llama a esa función.
Las definiciones de funciones no alteran el flujo de la ejecución de un programa debido a que las sentencias
dentro de una función no son ejecutadas. Sin embargo, una llamada a una función es como un desvío en el
flujo de la ejecución. En vez de pasar a la siguiente sentencia, el flujo salta al cuerpo de la función, ejecuta
todas las sentencias que hay allí y después vuelve al punto donde lo dejó.
Las funciones que disponen de argumentos son asignadas a variables llamadas parámetros. Se puede usar
cualquier tipo de expresión como argumento, la cual será evaluada antes de que la función sea llamada. El
nombre de la variable que se pasa como argumento no tiene nada que ver con el nombre del parámetro, de
manera que dentro de la función recibirá el nombre del parámetro.
suma = a+b
return suma
c=5
x = sumandos ( c, c+7 )
47/58
Fundamentos de programación en Python
Cuando se definen los argumentos de una función, estos pueden tener valores por defecto.
def ejemplo ( a = 3 ):
print (a)
ejemplo() # Devuelve 3
Una vez que se ha definido una función puede usarse dentro de otra, facilitando de esta manera la
descomposición de un problema, y resolverlo mediante una combinación de llamadas a funciones
return a+b
return c+ ejemplo1(a,b)
ejemplo2(3,4,5) # Devuelve 12
Aquellas que producen resultados, con los que se querrá hacer algo, como asignárselo a una variable.
return 3*a
b = ejemplo1(4)
48/58
Fundamentos de programación en Python
Aquellas que realizan alguna acción, pero no devuelven un valor y, sin embargo, pueden mostrar algo por
pantalla. Si se asigna el resultado a una variable, se obtiene el valor None.
print( 3*a)
b = ejemplo1(4)
#Devuelve None
Es posible definir funciones que devuelvan múltiples resultados, los cuales se empaquetan en una tupla. Por
ejemplo, función que recibe el número de segundos y calcule la duración de horas, minutos y segundos:
def segundos_a_HMS(segundos):
hs = int(segundos / 3600)
(h, m, s) = segundos_a_HMS(3661)
print ("Son",h,"horas",m,"minutos",s,"segundos")
Python proporciona un número importante de funciones internas que pueden ser usadas sin necesidad de tener que
definirlas previamente:
Las funciones max y min dan respectivamente el valor mayor y menor de una lista.
La función len devuelve cuantos elementos hay en su argumento. Si el argumento es una cadena devuelve el
número de caracteres que hay en la cadena.
49/58
Fundamentos de programación en Python
Funciones que permiten convertir valores de un tipo a otro: int(), float(), y str().
La función chr tiene como parámetro un número entero que devuelve un carácter (cadena) cuyo código Unicode
es el número entero (parámetro). Por ejemplo, chr(97) devuelve la carácter (cadena) 'a'.
La función ord tiene como parámetro un carácter (cadena) que devuelve el valor ASCII de una cadena. Por
ejemplo, ord ('a') devuelve el entero 97.
En Python el paso de argumentos a una función se hace por referencia, de manera que las modificaciones que se
hagan sobre los argumentos se mantienen después de la llamada y ejecución de la función. Ejemplos de
programas que utilizan funciones internas:
for x in range(97,122):
for x in range(65,91):
Para poder utilizarlas, hay que importarlas previamente, lo cual se puede hacer de varias formas:
50/58
Fundamentos de programación en Python
De esta manera para utilizar un elemento hay que usar el nombre del módulo seguido de un punto (.) y el nombre
del elemento que se desee obtener.
Mediante la estructura from nombre_modulo import lista_elementos, los elementos importados se usan
directamente por su nombre.
El usuario debe teclear el radio del círculo y seleccionar el cálculo que necesita:
if opcion == 1:
elif opcion == 2:
elif opcion == 3:
else:
51/58
Fundamentos de programación en Python
print ("Adios")
Importar todo el módulo mediante la palabra reservada import y definir un alias mediante la palabra
reservada as.
De manera que para usar un elemento hay que utilizar el nombre del módulo seguido de un punto (.) y el nombre
del elemento que se desee obtener. Por ejemplo, usando el módulo os, 6 programa que imprime el directorio
actual y su contenido:
import os as te
Para conocer las operaciones disponibles de un módulo, se puede usar el comando dir.
import os
dir (os)
Para abrir un archivo en Python se usará la función open, que recibe el nombre del archivo a abrir. Por defecto,
si no se indica nada, el archivo se abre en modo lectura.
La función open abrirá el archivo con el nombre indicado. Si no tiene éxito, se lanzará una excepción. Si se ha
podido abrir el archivo correctamente, la variable asignada a la apertura permitirá manipularlo.
Lectura
La operación más sencilla que se debe realizar sobre un archivo es leer su contenido. Para procesarlo línea por
línea, es posible hacerlo de la siguiente forma:
fichero= open("cuna.txt")
52/58
Fundamentos de programación en Python
print(linea)
Además, usando la función readlines es posible recuperar de una sola vez todo el contenido del archivo
estructurado en forma de líneas.
fichero= open("cuna.txt")
lineas = fichero.readlines()
print(lineas)
En este caso, la variable líneas tendrá una lista de cadenas con todas las líneas del archivo. Téngase en cuenta
que es posible eliminar los saltos de línea.
lineas[0].rstrip()
Si se quiere abrir un archivo en modo escritura, hay que indicar una w como segundo parámetro de la función
open. En caso de que no exista el archivo se crea y, si existe, se pierde la información que hubiera.
f = open ('prueba.txt','w')
f.write('Primer archivo')
f.close()
53/58
Fundamentos de programación en Python
Crea un archivo llamado ‘nuevo.txt’ y guarda las líneas pares del archivo ‘cuna.txt’ que se puede
descargar en este enlace.
if i%2 == 0:
else:
pass
arc_write.close()
Cierre
Al terminar de trabajar con un archivo, se debe cerrar, ya que lo que se haya escrito no se guardará realmente
hasta no cerrar el archivo. Para ello, se usa close.
arc_write.close()
También es posible abrir un archivo en modo escritura posicionándose al final del mismo. Para ello, se usa la
opción a con la función open. En este caso se crea el archivo si no existe, pero en caso de que exista se
posiciona al final, manteniendo el contenido original.
X. Resumen
En esta unidad, se ha introducido el lenguaje de programación Python. Se trata de un lenguaje de propósito general
que dispone de potentes librerías para análisis de datos, lo que le convierte en uno de los lenguajes más utilizados
en el ámbito del Big Data.
Uno de los entornos de trabajo más utilizados en Python es el Jupyter Notebook. Consiste en una herramienta que
permite integrar código con otros recursos, como vídeo, imágenes o código html.
54/58
Fundamentos de programación en Python
También se ha realizado un repaso de los elementos básicos del lenguaje Python, comenzando por las variables,
expresiones y operadores. A continuación, se han revisado las principales estructuras de control, las estructuras de
datos fundamentales (listas, tuplas, diccionarios y cadenas), las funciones como principal elemento de
estructuración de los programas en Python y, por último, otros aspectos del lenguaje, como importación de módulos
o apertura de ficheros.
Se pide implementar un programa en Python que solicite al usuario que introduzca por teclado un texto a codificar y
un número que representa el desplazamiento de letras. Como resultado, el programa mostrará por pantalla el
mensaje codificado. Se deben hacer las comprobaciones necesarias sobre la entrada, es decir, es una cadena y
un número, fichero Caso_práctico.ipynb.
Solución
def convertir(text,desp):
resul = ""
if car.islower():
if car.isupper():
55/58
Fundamentos de programación en Python
resul += car
return resul
if desp.isdigit():
cifrado = convertir(texto,desp)
print (cifrado)
else:
56/58
Fundamentos de programación en Python
Recursos
Bibliografía
Algoritmos de Programación con Python :
Wachenchauzer, Rosita; Manterola, Margarita; Curia, Maximiliano; Medrano, Marcos; Paez, Nicolás.
Algoritmos de Programación con Python. 2006-2019. [En línea] URL disponible en https://uniwebsidad.com/l
ibros/algoritmos-python
Guía de aprendizaje de Python :
Rossum, Guido van. Guía de aprendizaje de Python. Release 2.0. Fred L. Drake, Jr. (ed. orig.); 2000. [En
línea] URL disponible en http://es.tldp.org/Tutoriales/Python/tut.pdf
Introducción a la programación con Python 3 :
Marzal Varó, Andrés; Gracia Luengo, Isabel; y García Sevilla, Pedro. Introducción a la programación con
Python 3. Castelló de la Plana: Publicacions de la Universitat Jaume I. Servei de Comunicació i
Publicacions; 2014. [En línea] URL disponible en http://repositori.uji.es/xmlui/bitstream/handle/10234/102653
/s93_impressora.pdf?sequence=2&isAllowed=y
Python para principiantes :
Bahit, Eugenia. Python para principiantes. 2011-2013. [En línea] URL disponible en http://librosweb.es/libro/
python/
Referencia de la Biblioteca de Python :
Rossum, Guido van; Drake, Fred L. Jr. Referencia de la Biblioteca de Python. 2000. [En línea] URL
disponible en http://pyspanishdoc.sourceforge.net/lib/lib.html
Tutorial de Python :
Rossum, Guido van. Tutorial de Python. Fred L. Drake, Jr. (ed. orig.); 2009. [En línea] URL disponible en http:
//docs.python.org.ar/tutorial/pdfs/TutorialPython2.pdf
Glosario.
Bucle: estructura de control de Python que permite repetir un conjunto de acciones un número de veces que
depende de una condición determinada.
Condicional: estructura de control de Python que permite ejecutar acciones alternativas de acuerdo con el
valor de una expresión.
Diccionario: estructura de datos de Python que permite almacenar la información en forma de parejas
clave-valor. Es un tipo de datos mutable.
Echo: este comando se utiliza para mostrar en pantalla (en terminal) una cadena de texto que se le pasa
como argumento
Entorno de desarrollo: también denominado editor. Es una aplicación informática que permite crear y
ejecutar programas para un determinado lenguaje de programación.
57/58
Fundamentos de programación en Python
Estructura de control: hace referencia a sentencias de un lenguaje que permiten estructurar el flujo de
ejecución de un programa.
Estructura de datos: hace referencia a una forma lógica determinada de almacenar la información.
Expresión: conjunto de valores y/o variables combinadas mediante un conjunto de operadores que
representan un valor de un tipo de datos.
Lista: estructura de datos de Python que permite almacenar un conjunto de datos de diferentes tipos. Es un
tipo de datos mutable.
Listas por comprensión: es una forma de definir una lista en la que, en vez de indicar los valores
concretos, se indica la expresión que permite generar dichos valores.
Módulo: también denominado librería, se trata de un conjunto de funciones y/o métodos que añaden nueva
funcionalidad a Python con respecto a la que dispone de manera estándar.
Mutabilidad: es una propiedad de las estructuras de datos en Python que indica si los datos pueden
modificar su estructura y contenido una vez que se han definido.
Notebook: tipo de archivo utilizado por el Jupyter Notebook para editar código Python que permite integrar
otros recursos como vídeos o imágenes.
Tupla: estructura de datos de Python que permite almacenar un conjunto de datos de diferentes tipos. Es
similar a las listas, pero no mutable.
58/58