1. Conceptos básicos
1.1. ¿Qué es Python?
Python es un lenguaje de programación interpretado, multiparadigma y de tipado dinámico.
1.2. Breve historia de Python
-
Python fue creado a finales de los años 80 por Guido van Rossum.
-
Guido van Rossum quería diseñar un lenguaje de programación sencillo, legible y versátil.
-
Python en un lenguaje de programación muy popular[1] utilizado en una amplia variedad de aplicaciones como desarrollo web, ciencia de datos y machine learning, entre otras.
1.3. Estado de las versiones de Python
-
En el momento de escribir este tutorial, la última versión estable es Python 3.13.2 (Release date: 2025-02-04).

Los estados de las versiones son:
-
end-of-life: El ciclo de vida de la versión está congelado, no se pueden realizar más cambios en ella.
-
security: Solo se aceptan correcciones de seguridad y no se lanzan más binarios, aunque se pueden lanzar nuevas versiones solo con el código fuente.
-
bugfix: Se aceptan correcciones de errores y correcciones de seguridad, pero aún se lanzan nuevos binarios. También se llama modo de mantenimiento o versión estable.
-
feature: Se aceptan nuevas características, correcciones de errores y correcciones de seguridad.
1.4. Python es un lenguaje interpretado
-
Java es un lenguaje compilado e interpretado.
-
En Java, es necesario compilar el código fuente para obtener un archivo
.class
que contiene el bytecode que será interpretado por la JVM (Java Virtual Machine).
javac HelloWorld.java (1)
java HelloWorld (2)
1 | Compilamos el código fuente con javac para obtener un archivo .class (bytecode). |
2 | Ejecutamos el bytecode en la JVM. |
-
Pyton es un lenguaje interpretado.
-
Podemos ejecutar directamente el código sin necesidad de compilarlo.
-
El intérprete oficial de Python es CPython, aunque existen otros como: PyPy, Jython, IronPython o MicroPython, entre otros.
python hello.py
1.5. Python es un lenguaje multiparadigma
-
Java utiliza un paradigma orientado a objetos.
-
El código se organiza en clases y métodos.
-
Es necesario el método
main()
como punto de entrada.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("¡Hola, mundo!");
}
}
-
Python es un lenguaje multiparadigma.
-
Es compatible con programación estructurada, orientada a objetos y funcional.
-
Puedo ejecutar código sin tener que crear una clase.
print("¡Hola, mundo!")
1.6. Python utiliza tipado dinámico
-
Utiliza un tipado estático. Es necesario definir los tipos de datos de las variables antes de ser utilizadas.
-
Utiliza un tipado dinámico. Los tipos de datos de las variables se determinan en tiempo de ejecución.
1.7. Python es menos verboso
-
Requiere escribir más líneas de código para tareas sencillas.
-
Es obligatorio finalizar las instrucciones con
;
.
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("¿Cómo te llamas? ");
String name = scanner.nextLine();
System.out.println("¡Hola, " + name + "! Bienvenido a Java.");
}
}
-
Es mucho más sencillo.
-
Es opcional finalizar las instrucciones con
;
.
name = input("¿Cómo te llamas? ")
print(f"¡Hola, {name}! Bienvenido a Python.")
1.8. Python no usa llaves
-
Utiliza llaves
{}
para delimitar bloques de código.
public class Suma {
public static void main(String[] args) {
int suma = 0;
for (int i = 1; i <= 100; i++) {
suma += i;
}
System.out.println("La suma es: " + suma);
}
}
-
Utiliza la indentación para delimitar bloques de código.
suma = 0
for numero in range(1, 101):
suma += numero
print(f"La suma es: {suma}")
2. Configuración del entorno de desarrollo
2.1. Instalación de Python
-
Descarga Python desde la página oficial: Python.org.
2.2. IDEs recomendados
-
PyCharm: IDE profesional de JetBrains.
-
Visual Studio Code: Editor de código de Microsoft.
-
Jupyter Notebook: Entorno interactivo para ciencia de datos.
-
Google Colab: Entorno de Google para ejecutar notebooks en la nube.
En este curso utilizaremos: Visual Studio Code y Google Colab. |
2.3. Visual Studio Code
-
Descarga e instala Visual Studio Code.
-
Instala la extensión de Python para VS Code.

Interfaz de usuario de Visual Studio Code
Después de instalar la extesión de Python en Visual Studio Code le aparercerán las siguientes funcionalidades en la interfaz de usuario.

-
A: Permite ejecutar y depurar código Python.
-
B: Permite configurar tests para nuestro proyecto Python.
-
C: Permite definir breakpoints para depurar nuestro código.
-
D: Permite crear un nuevo termimal.
-
E: Muestra el lenguaje de programación del archivo actual.
-
F: Permite seleccionar el intérprete de Python que queremos utilizar.
-
G: Permite ejecutar el el código actual.
Paleta de comandos
Abre la paleta de comandos con Ctrl + Shift + P
(Linux y Windows) o Cmd + Shift + P
(macOS), y escribe Python para ver cuáles son las opciones disponibles.

Configurar nuestro Workspace
Antes de iniciar Visual Studio Code
Para configurar nuestro workspace antes de iniciar Visual Studio Code podemos seguir los siguientes pasos:
-
Crea un nuevo directorio para tu proyecto.
-
Abre Visual Studio Code y selecciona el directorio creado.
-
Crea un nuevo archivo con extensión
.py
y comienza a escribir tu código.
Ejemplo:
mkdir proyecto
cd proyecto
code .
Desde la interfaz de usuario de iniciar Visual Studio Code
También puede configurar su workspace desde la interfaz de usuario de VS Code
accediendo a File > Open Folder
para seleccionar la carpeta de su proyecto.

3. Entornos virtuales
3.1. ¿Qué es un entorno virtual en Python?
Es un espacio aislado que permite instalar dependencias específicas para un proyecto, evitando conflictos con otros proyectos que estén en la misma máquina o con la configuración global de Python del sistema.
Cuando instalamos el intérprete de Python en nuestro sistema se instala el
módulo venv
que
es el que nos permite crear entornos virtuales.
3.2. ¿Qué contiene un entorno virtual?
-
Scripts para activar el entorno virtual.
-
Enlaces simbólicos al intérprete Python que hemos seleccionado para este entorno.
-
Scripts para utilizar el gestor de paquetes
pip
. -
El directorio
site-packages
que es donde se instalarán las dependencias de nuestro proyecto.
Ejemplo:
.venv/
├── .gitignore
├── bin
│ ├── Activate.ps1
│ ├── activate
│ ├── activate.csh
│ ├── activate.fish
│ ├── pip
│ ├── pip3
│ ├── pip3.13
│ ├── python -> python3.13
│ ├── python3 -> python3.13
│ └── python3.13 -> /Library/Frameworks/Python.framework/Versions/3.13/bin/python3.13
├── include
│ └── python3.13
├── lib
│ └── python3.13
│ └── site-packages
└── pyvenv.cfg
Ejemplo:
En este ejemplo se muestran dos proyectos que utilizan entornos virtuales para gestionar diferentes versiones del intérprete de Python y Flask.
# Proyecto A (usa Python 3.11 y Flask 2.2.1)
proyectoA/
├── .venv/ # Entorno virtual
│ └── bin/python3.11
│ └── lib/python3.11/site-packages/flask-2.2.1.dist-info
│ └── ...
└── requirements.txt
└── ...
# Proyecto B (usa Python 3.13 y Flask 3.1.0)
proyectoB/
├── .venv/ # Entorno virtual
│ └── bin/python3.13
│ └── lib/python3.13/site-packages/flask-3.1.0.dist-info
│ └── ...
└── requirements.txt
└── ...
3.3. Crear un entorno virtual
python -m venv mi-entorno
En este ejemplo se ha utilizado mi-entorno
como nombre del entorno virtual,
pero puede utilizar cualquier otro nombre.
Es una buena práctica utilizar el nombre |
3.4. Activar un entorno virtual
El script activate
modifica algunas variables de entorno (PATH
,
VIRTUAL_ENV_PROMPT
, PS1
) y define en el shell la función deactivate
para
poder revertir los cambios.
Activar un entorno virtual en Linux o macOS.
source mi-entorno/bin/activate
Activar un entorno virtual en Windows (CMD).
mi_entorno\Scripts\activate.bat
Activar un entorno virtual en Windows (PowerShell).
.\mi-entorno\Scripts\Activate.ps1
Puede ser que en Windows necesite habilitar la ejecución de scripts en PowerShell. Si le aparece un error de política de ejecución ejecute el siguiente comando:
Referencia: |
Cuando haya activado el entorno virtual, el nombre del entorno aparecerá en el prompt de la terminal entre paréntesis al inicio de la línea de comandos.
Ejemplo:
(mi-entorno) /home/josejuan/proyecto$
3.5. Desactivar un entorno virtual
deactivate
Este comando es una función de shell que se carga en memoria al activar el
entorno virtual. Esta función permite revertir los cambios realizados en las
variables de entorno que se realizaron con activate
.
3.6. Cómo gestionar los entornos virtuales en Visual Studio Code
-
Abra la paleta de comandos con
Ctrl + Shift + P
(Linux y Windows) oCmd + Shift + P
(macOS). -
Escriba Python: Create Environment.
-
Le aparecerá una lista de tipos entornos disponibles: Venv o Conda. En nuestro caso seleccionaremos Venv.

Ahora le aparecerá una lista con los intérpretes de Python disponibles en su sistema y tendrá que seleccionar el intérprete que desea utilizar para su proyecto.

Cuando seleccione el intérprete se creará automáticamente un entorno virtual con el nombre .venv
dentro del directorio de su proyecto.
Para comprobar cuál es el entorno virtual activo, puede consultar la esquina inferior derecha de la interfaz de usuario de Visual Studio Code.

4. Gestión de paquetes
El gestor de paquetes de Python es pip
.
Los paquetes de Python se pueden descargar desde el repositorio oficial de Python, PyPI o desde otros repositorios.
4.1. Instalar un paquete
pip install nombre_paquete
Ejemplo:
Para instalar el paquete NumPy para trabajar con arrays multidiemensionales ejecutaremos:
pip install numpy
Para instalar el paquete Flask que contiene un microframework para crear aplicaciones web ejecutaremos:
pip install flask
4.2. Desinstalar un paquete
pip uninstall nombre_paquete
4.3. Listar paquetes instalados
Obtener un listado de los paquetes instalados en forma de tabla.
pip list
Ejemplo:
>>> pip list
Package Version
------------ -------
blinker 1.9.0
click 8.1.8
Flask 3.1.0
itsdangerous 2.2.0
Jinja2 3.1.5
MarkupSafe 3.0.2
pip 25.0.1
Werkzeug 3.1.3
Obtener un listado de los paquetes instalados en formato paquete==versión
.
pip freeze
Ejemplo:
>>> pip freeze
blinker==1.9.0
click==8.1.8
Flask==3.1.0
itsdangerous==2.2.0
Jinja2==3.1.5
MarkupSafe==3.0.2
Werkzeug==3.1.3
4.4. Crear un archivo requirements.txt
pip freeze > requirements.txt
Crea un archivo requirements.txt
que contiene una lista de todos los paquetes
instalados en el entorno de Python actual, junto con sus versiones exactas. Este archivo es útil para poder replicar el entorno en otro sistema.
4.5. Instalar paquetes desde un archivo requirements.txt
Instalar paquetes desde un archivo requirements.txt
.
pip install -r requirements.txt
5. Ejecución de código Python
5.1. Ejecución de código desde el REPL
¿Qué es el REPL?
REPL (Read-Eval-Print Loop) es una herramienta interactiva que permite ejecutar código Python de forma interactiva ejecutando el código línea a línea.
-
Read: Lee el código que escribes.
-
Eval: Ejecuta el código.
-
Print: Muestra el resultado.
-
Loop: Repite el proceso en bucle.
Esta herramienta es muy útil para:
-
Probar fragmentos de código rápidamente.
-
Aprender sintaxis o funciones nuevas.
-
Depurar pequeños fragmentos de código.
¿Cómo acceder al REPL?
Desde una terminal, ejecuta el comando python
, python3
o py
(Windows).
Te aparecerá un mensaje de bienvenida con la versión del intérprete de Python y el prompt >>>
.
$ python
Python 3.13.1 (v3.13.1:06714517797, Dec 3 2024, 14:00:22) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Una vez que estés en el REPL puedes escribir el código Python que quieras ejecutar.
>>> print("Hello world!")
Hello world!
Para salir del REPL, puedes presionar |
5.2. Ejecución de código desde un archivo en la terminal
La forma más habitual de trabajar con Python será escribir nuestro código en un archivo y ejecutarlo desde la terminal.
Para ello, sigue estos pasos:
-
Abre tu editor de código favorito.
-
Escribe el código Python que quieras ejecutar.
-
Guarda el archivo con la extensión
.py
. -
Abre una terminal y sitúate en la carpeta donde guardaste el archivo.
-
Ejecuta el archivo con el comando
python
opython3
seguido del nombre del archivo.
Ejemplo:
Creamos el archivo hello.py
con el siguiente contenido.
print("Hello world!")
Ejecutamos el archivo desde la terminal.
$ python hola_mundo.py
Hello world!
5.3. Ejecución de código desde un archivo en Visual Studio Code
También podemos ejecutar nuestro código Python directamente desde la interfaz de Visual Studio Code.
En la parte superior derecha de la interfaz hay un botón de Run
que nos
permite ejecutar el código. Cuando lo pulsamos, se abrirá una terminal en la
parte inferior de la interfaz y se mostrará el resultado de la ejecución.

6. Funciones integradas

En la documentación oficial de Python puede encontrar una descripción detallada de cada una de las funciones integradas en Python. |
Veamos algunos ejemplos de algunas funciones:
-
print()
: Imprime un mensaje en la consola. -
help()
: Muestra la documentación de un objeto. -
type()
: Muestra el tipo de un objeto. -
dir()
: Muestra la lista de atributos y métodos de un objeto. -
int()
: Convierte un valor a entero. -
float()
: Convierte un valor a número real. -
str()
: Convierte un valor a cadena.
Ejemplo:
>>> print("Hello world!")
Hello world!
>>> help(int)
>>> type('Cadena')
<class 'str'>
>>> type(10)
<class 'int'>
>>> type(2.5)
<class 'float'>
>>> type(True)
<class 'bool'>
>>> int(10.5)
10
>>> float(1)
1.0
>>> str(1)
'1'
>>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
7. Palabras reservadas
Para obtener la lista de palabras reservadas en Python, puede ejecutar el
comando help('keywords')
en el intérprete de Python.
>>> help('keywords')
Here is a list of the Python keywords. Enter any keyword to get more help.
False class from or
None continue global pass
True def if raise
and del import return
as elif in try
assert else is while
async except lambda with
await finally nonlocal yield
break for not
8. Comentarios
En Java se pueden utilizar los caracteres //
para comentarios de una línea y /* */
para comentarios de múltiples líneas y una línea.
// Comentario de una una línea
a = 10 // Esto es un comentario inline
/* Esto es
un comentario
de múltiples
líneas */
/* También se pueden utilizar para una sola línea */
En Python se utiliza el carácter #
para hacer comentarios.
Python permite utilizar los caracteres """ """
o ''' '''
para realizar
comentarios de múltiples líneas.
A estas cadenas se les conoce como docstrings y se suelen utilizar para documentar funciones, clases, métodos o módulos.
# Esto es un comentario de una línea
a = 10 # Esto es un comentario inline
# Esto es un comentario
# de múltiples líneas
"""
También podemos escribir comentarios
de múltples líneas así.
"""
'''
O utilizando
comillas simples
'''
def suma(a, b):
"""
Esto es un comentario de múltiples líneas que se utiliza para
documentar funciones, clases, métodos o módulos.
Son conocidos como docstrings.
"""
return a + b
9. Tipos de datos y variables
La guía de estilo oficial de Python PEP 8 recomienda utilizar la siguiente notación:
-
snake_case para nombres de variables, funciones y métodos.
-
CamelCase para nombres de clases.
Ejemplo:
# Variables en snake_case
nombre_usuario = "Pepe"
saldo_cuenta = 1500.50
# Clase en CamelCase
class Persona:
pass
9.1. Declaración de variables: tipado estático vs. dinámico
En Java, se debe declarar el tipo de una variable al momento de definirla.
int edad = 25;
String nombre = "Pepe";
double salario = 1800.50;
En Python, no es necesario declarar el tipo de la variable, se asigna automáticamente según el valor.
edad = 25
nombre = "Pepe"
salario = 1800.50
9.2. Tipos de datos básicos: enteros, reales, cadenas, booleanos
-
Enteros:
int
,short
,long
,byte
-
Reales:
float
odouble
-
Complejos: No está implementado como tipo de dato primitivo.
-
Cadenas:
String
-
Booleanos:
boolean
-
Enteros:
int
-
Reales:
float
-
Complejos:
complex
-
Cadenas:
str
-
Booleanos:
bool
Ejemplo:
# Declaración de variables
numero_entero = 10
numero_real = 3.14
numero_complejo = -1.23 + 4.5j
cadena = "Hola"
es_par = True
# Verificación de tipos
print(type(numero_entero)) # <class 'int'>
print(type(numero_real)) # <class 'float'>
print(type(numero_complejo)) # <class 'complex'>
print(type(cadena)) # <class 'str'>
print(type(es_par)) # <class 'bool'>
# None es un valor especial que equivale a null en Java
# None es una instancia de la clase NoneType
a = None
print(type(a)) # <class 'NoneType'>
Todos los tipos de datos de Python son clases, no existen los tipos primitivos como en Java. Pruebe a ejecutar la función Puede hacer lo mismo con el resto de tipos de datos: |
9.3. Tipos de datos disponibles
La lista de tipos de datos disponibles en Python es la siguiente:
Categoría | Tipos |
---|---|
Tipos booleanos |
|
Tipos de datos numéricos |
|
Cadenas de caracteres |
|
Tipos de secuencias |
|
Tipos de secuencias binarias |
|
Tipos mapa (Diccionario) |
|
Conjuntos |
|
Referencia:
9.4. Todos los valores son objetos
En Python, todos los valores son objetos, son instancias de una clase y todas
heredan de la clase object
.
>>> cadena = "Hola"
>>> isinstance(cadena, object)
True
>>> isinstance("Hola", object)
True
>>> isinstance(10, object)
True
>>> isinstance(7.5, object)
True
>>> isinstance(True, object)
True
>>> isinstance(10, int)
True
>>> isinstance(10, float)
False
>>> (3).is_integer()
True
>>> "Hola".upper()
'HOLA'
9.5. Más sobre variables en Python
Una variable es una etiqueta que apunta a un objeto en memoria.
Recuerda que las variables en Python son referencias, que no tienen un tipo de dato asociado, sino que el tipo de dato está asociado al objeto al que apunta.

Ejemplo:
En este ejemplo vamos a utilizar la función id()
para obtener la dirección de
memoria de un objeto.
>>> x = 5
>>> id(x)
4559587432
>>> id(5)
4559587432
>>> type(x)
<class 'int'>
>>> type(5)
<class 'int'>
>>> y = x
>>> id(y)
4559587432
>>> y = 10
>>> id(y)
4559587592
9.6. Objetos mutables e inmutables
En Python, los objetos se clasifican en dos categorías:
-
Mutables: Pueden cambiar su contenido después de haber sido creados.
-
Tipos de datos mutables:
list
,dict
,set
,bytearray
.
-
-
Inmutables: No pueden cambiar su contenido después de haber sido creados.
-
Tipos de datos inmutables:
int
,float
,complex
,str
,tuple
,frozenset
,bool
.
-
Ejemplo de objeto inmutable:
En este ejemplo, la variable x
es de tipo int
que es un tipo inmutable.
Cuando modificamos el valor de x
, Python crea un nuevo objeto en memoria y
actualiza la referencia de la variable x
.
# Creamos una variable de tipo entero
>>> x = 5
>>> type(x)
<class 'int'>
# Consultamos la dirección de memoria de x
>>> id(x)
4394825832
# Modificamos el valor de la variable x
>>> x = 10
# Volvemos a consultar la dirección de memoria y vemos que ha cambiado
>>> id(x)
4394825992
Ejemplo de objeto mutable:
En este ejemplo, la variable lista
es de tipo list
que es un tipo mutable.
Por lo tanto, cuando modificamos el contenido de la lista, la dirección de
memoria no cambia.
# Creamos una lista
>>> lista = [1, 2, 3]
# Consultamos la dirección de memoria de la lista
>>> id(lista)
4402171904
# Modificamos el contenido de la lista
>>> lista.append(4)
# Consultamos la dirección de memoria de la lista
>>> id(lista)
4402171904
10. Cadenas
Las cadenas en Python pueden ir encerradas entre comillas simples ('
) o dobles ("
).
Veamos algunas operaciones comunes que podemos realizar con cadenas.
nombre = "Pepe"
print(nombre)
nombre = 'Pepe'
print(nombre)
10.1. Cadenas multilínea
Podemos crear cadenas multilínea utilizando tres comillas simples o dobles.
cadena_multilnea = """Esto es un ejemplo
de una cadena multilínea."""
print(cadena_multilnea)
cadena_multilnea = '''Esto es un ejemplo
de una cadena multilínea.'''
print(cadena_multilnea)
10.2. Concatenación de cadenas
Podemos concatenar cadenas utilizando el operador +
.
nombre = "Pepe"
apellido = "Pérez"
nombre_completo = nombre + " " + apellido
print(nombre_completo)
10.3. Operaciones con cadenas
cadena = "seminario de Python para desarrolladores Java"
# Longitud de la cadena
len(cadena)
# Devuelve la cadena en mayúsculas pero no modifica la cadena
cadena.upper()
# Devuelve la cadena en minúsculas pero no modifica la cadena
cadena.lower()
# Devuelve la primera letra en mayúscula pero no modifica la cadena
cadena.capitalize()
# Devuelve una nueva cadena reemplazando una subcadena pero no modifica la original
cadena.replace("thon", "tón")
# Devuelve una lista de cadenas separadas por un delimitador.
# Si no se indica el delimitador, se utiliza el espacio por defecto
cadena.split()
cadena = " Seminario de Python "
# Devuelve una cadena eliminando los espacios en blanco al principio y al final
cadena.strip()
# Podemos utilizar varios métodos encadenados
cadena = " valor1;valor2;valor3;valor4 "
cadena.strip().split(";")
10.4. Actividades
Ejercicio 1
Extrae el nombre de usuario y la contraseña de la siguiente cadena:
"usuario:admin|contraseña:1234"
Pista: Puedes utilizar la función split()
.
Ejercicio 2
Extrae el valor numérico como float
(1500.5) de la siguiente cadena:
" Precio: 1,500.50€ "
Pista: Puedes utilizar las funciones strip()
, split()
, replace()
y float()
.
11. Colecciones
Tipo de Colección | Descripción |
---|---|
Lista |
|
Tupla |
|
Diccionario |
|
Conjunto |
|
11.1. Listas
Una lista en Python es una colección de elementos que se pueden ordenar, que pueden ser de diferentes tipos de datos y que se pueden modificar.
Uso de ArrayList
.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> lista = new ArrayList<>();
lista.add("Uno");
lista.add("Dos");
lista.add("Tres");
System.out.println(lista);
}
}
Uso de list
.
lista = ["Uno", "Dos", "Tres"]
print(lista)
type(lista) # <class 'list'>
Diferencias clave:
-
En Python, las listas son un tipo de dato integrado, mientras que en Java se necesita importar
ArrayList
.
Cómo crear una lista
# Crea una lista vacía
lista = list()
# También se puede crear así
lista = []
# Inicializar una lista con valores
lista = [1, 2, 3, 4]
# Las listas pueden almacenar diferentes tipos de datos
lista = [1, "Dos", 3.0, True, [1, 2, 3]]
Consultar el tamaño de la lista
Para consultar el tamaño de una lista podemos utilizar la función len
.
print(len(lista))
Cómo acceder a los elementos de una lista
Las listas empiezan en el índice 0.

lista = ['banana', 'orange', 'mango', 'lemon']
# Accedemos al primer elemento
print(lista[0])
# Acceso al último elemento
last_index = len(lista) - 1
print(lista[last_index])
# Accedemos a un elemento de una lista anidada
lista = [1, "Dos", 3.0, True, [1, 2, 3]]
print(lista[4][0])
print(lista[4][1])
print(lista[4][2])
También podemos utilizar índices negativos para acceder a la lista desde el final.

En este caso el último elemento de la lista tendrá el índice -1, el penúltimo el -2 y así sucesivamente.
lista = ['banana', 'orange', 'mango', 'lemon']
# Accedemos al último elemento
print(lista[-1])
# Accedemos al penúltimo elemento
print(lista[-2])
Modificar elementos de una lista
Las listas son tipos de datos mutables, por lo que podemos modificar sus elementos.
lista = ['banana', 'orange', 'mango', 'lemon']
lista[0] = 'apple'
print(lista)
Slicing
Python nos permite obtener una parte de la lista utilizando la técnica de slicing.
La sintaxis es la siguiente:
lista[inicio:fin:incremento]
Donde:
-
inicio
: Es el índice donde comienza el slice (incluido). -
fin`
: Es el índice donde termina el slice (excluido). -
paso
: Es el intervalo entre elementos (opcional, por defecto 1).

Ejemplos:
lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Devuelve todos los elemntos de la lista
lista[:]
# Devuelve los elementos desde el índice 2 al 5
print(lista[2:6])
# Devuelve desde el primer elemento hasta el índice 5
print(lista[:6])
# Devuelve dese el primer hasta el último de dos en dos
print(lista[::2])
# Devuelve desde el índice -3 hasta el final
print(lista[-3:])
# Devuelve la lista en orden inverso
print(lista[::-1])
Cómo añadir elementos a una lista
lista = ['banana', 'orange', 'mango', 'lemon']
lista.append('apple')
lista.append('kiwi')
lista.apend('grape')
Cómo insertar elementos en una posición de la lista
lista = ['banana', 'orange', 'mango', 'lemon']
lista.insert(1, 'apple')
lista.insert(3, 'kiwi')
Cómo eliminar un elemento de la lista
lista = ['banana', 'orange', 'mango', 'lemon']
# Elminamos un elemento de una posición determinada
del lista[1]
# Devuelve y elimina el último elemento de la lista
lista.pop()
Eliminar elementos por su valor
lista = ['banana', 'orange', 'mango', 'lemon']
lista.remove('orange')
Ordenar una lista
El método sort()
ordena la lista y modifica su valor.
lista = ['banana', 'orange', 'mango', 'lemon']
lista.sort()
Sin embargo, si utlizamos la función sorted
mostrará la lista ordenada pero no
modificará la lista original.
lista = ['banana', 'orange', 'mango', 'lemon']
# Muestra la lista ordenada pero no la modifica
print(sorted(lista))
# Muestra la lista como estaba
print(lista)
Invertir el orden de una lista
lista = ['banana', 'orange', 'mango', 'lemon']
lista.reverse()
print(lista)
Concatenar listas
lista = ['banana', 'orange', 'mango', 'lemon']
lista = lista + [4, 5, 6]
print(lista)
vegetables = ['potato', 'tomato', 'cucumber']
lista = lista + vegetables
print(lista)
Copiar listas
lista = ['banana', 'orange', 'mango', 'lemon']
# Si hacemos una asignación directa, ambas variables apuntarán a la misma lista
copia = lista
# Podemos comprobarlo consultando la dirección de memoria a la que apuntan
print(id(lista))
print(id(copia))
# Hacmos un copia real de la lista
copia = lista.copy()
# Comprobamos la dirección de memoria a la que apuntan
print(id(lista))
print(id(copia))
Suma, media, máximo y mínimo
temperaturas = [25, 30, 35, 40]
# Suma de los elementos
print(sum(temperaturas))
# Media
media = sum(temperaturas) / len(temperaturas)
print(media)
# Máximo
print(max(temperaturas))
# Mínimo
print(min(temperaturas))
11.2. Tuplas
Una tupla es una colección de objetos que pueden ser de diferentes tipos de datos. Esta colección está ordenada y es inmutable.
No se pueden modificar sus elementos una vez que se han definido.
tupla = ('banana', 'orange', 'mango', 'lemon')
# No se puede modificar
tupla[0] = 'apple'
#Traceback (most recent call last):
# File "<python-input-117>", line 1, in <module>
# lista[0] = 'apple'
# ~~~~~^^^
#TypeError: 'tuple' object does not support item assignment
Convertir una tupla en una lista
tupla = ('banana', 'orange', 'mango', 'lemon')
print(type(tupla)) # <class 'tuple'>
lista = list(tupla)
print(type(lista)) # <class 'list'>
Puede encontrar más información sobre cómo trabajar con tuplas en la siguiente URL: |
11.3. Diccionarios
Un diccionario es una colección de pares clave-valor, desordenados y modificables.
Las claves deben ser únicas e inmutables.
Uso de HashMap
.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, Double> diccionario = new HashMap<>();
diccionario.put("almeria", 22.5);
diccionario.put("granada", 23.7);
diccionario.put("malaga", 21.9);
System.out.println(diccionario);
System.out.println("Valor asociado a 'almeria': " + diccionario.get("almeria"));
diccionario.remove("malaga");
System.out.println(diccionario);
}
}
Uso de dict
.
diccionario = {"almeria": 22.5, "granada": 23.7, "malaga": 21.9}
print(diccionario)
# Acceder a un valor del diccionario por su clave
print("Valor asociado a 'almeria':", diccionario["almeria"])
# Eliminar un elemento del diccionario
del diccionario["malaga"]
print(diccionario)
Cómo crear un diccionario
# Creamos un diccionario vacío
usuario = {}
# Creamos un diccionario con valores
usuario = {"nombre": "Pepe", "apellido1": "López", "apellido2": "Martínez", "edad": 20}
# Accedemos a los valores del diccionario a través de su clave
print(usuario["nombre"])
print(usuario["apellido1"])
print(usuario["apellido2"])
print(usuario["edad"])
Acceder a los elementos de un diccionario
usuario = {"nombre": "Pepe", "apellido1": "López", "apellido2": "Martínez", "edad": 20}
# Accedemos a los valores del diccionario a través de su clave
print(usuario["nombre"])
print(usuario["apellido1"])
print(usuario["apellido2"])
print(usuario["edad"])
Añadir nuevos elementos a un diccionario
Podemos añadir nuevos pares de clave-valor al diccionario de una forma muy sencilla.
usuario = {"nombre": "Pepe", "apellido1": "López", "apellido2": "Martínez", "edad": 20}
# Creamos un nuevo par de clave-valor
usuario["email"] = "pepe@ual.es"
print(usuario)
Modificar elementos de un diccionario
usuario = {"nombre": "Pepe", "apellido1": "López", "apellido2": "Martínez", "edad": 20}
usuario["edad"] = 21
print(usuario)
Eliminar un elemento de un diccionario
usuario = {"nombre": "Pepe", "apellido1": "López", "apellido2": "Martínez", "edad": 20}
del usuario["edad"]
print(usuario)
Recorrer los elementos de un diccionario
usuario = {"nombre": "Pepe", "apellido1": "López", "apellido2": "Martínez", "edad": 20}
# Recorremos las claves
for clave in usuario:
print(clave)
# Recorremos los valores
for valor in usuario.values():
print(valor)
# Recorremos los pares clave-valor
for clave, valor in usuario.items():
print(clave, ":", valor)
11.4. Conjuntos (Sets)
Un conjunto es una colección desordenada, no indexada que no admite elementos repetidos.
Uso de Set
.
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
HashSet<String> conjunto = new HashSet<>();
conjunto.add("A");
conjunto.add("B");
conjunto.add("C");
System.out.println(conjunto);
}
}
Uso de set
.
conjunto = {"A", "B", "C"}
print(conjunto)
print(type(conjunto)) # <class 'set'>
Puede encontrar más información sobre cómo trabajar con tuplas en la siguiente URL: |
11.5. Actividades
Ejercicio 1. Listas (Manipulación básica)
Crea una lista de números del 1 al 10 y realiza las siguientes operaciones:
-
Modificar el tercer elemento a 100.
-
Extraer una sublista del 5º al 8º elemento.
-
Añadir el número 200 al final.
-
Calcular la suma y media de los elementos.
Ejercicio 2. Tuplas (Conversión y modificación)
Dada una tupla de coordenadas (40.7128, -74.0060)
realiza las siguientes operaciones:
-
Convertir a lista.
-
Añadir un tercer elemento (altitud: 10).
-
Convertir de vuelta a tupla.
-
Desempaquetar los tres valores en variables.
Ejercicio 3. Diccionarios
Crea un diccionario con información de un estudiante que contenga las siguientes claves:
-
nombre (cadena)
-
edad (entero)
-
asignaturas (Lista de cadenas).
Una vez creado realiza las siguientes operaciones:
-
Añadir una nueva asignatura a la lista.
-
Actualizar la edad a 21 años
-
Mostrar todas las claves y valores del diccionario.
12. Operadores
12.1. Operadores aritméticos
Operadores artiméticos en Python.
a = 10
b = 3
print(a + b) # Suma: 13
print(a - b) # Resta: 7
print(a * b) # Multiplicación: 30
print(a ** b) # Potencia, `a` elevado a `b`: 1000
print(a / b) # División: 3.333...
print(a // b) # División entera: 3
print(a % b) # Módulo: 1
12.2. Operadores relacionales
Operadores relacionales en Python.
Operación | Significado |
---|---|
|
estrictamente mayor que |
|
mayor o igual que |
|
estrictamente menor que |
|
menor o igual que |
|
igual que (comparación de valor) |
|
diferente que (comparación de valor) |
|
igualdad a nivel de identidad (mismo objeto en memoria) |
|
desigualdad a nivel de identidad (objetos diferentes en memoria) |
x = 5
y = 10
print(x > y) # False
print(x >= y) # False
print(x < y) # True
print(x <= y) # True
print(x == y) # False
print(x != y) # True
x is y # False
x is not y # True
12.3. Operadores lógicos
Operadores lógicos en Python.
Operación | Resultado |
---|---|
|
Si |
|
Si |
|
Si |
x = True
y = False
print(x and y) # False
print(x or y) # True
print(not x) # False
13. Operaciones de Entrada/Salida
13.1. Mostrar por pantalla. print()
Esta función nos permite mostar un mensaje por pantalla. Podemos utilizar comillas dobles o comillas simples.
print("Texto")
print('Texto')
Podemos mostrar el contenido de una variable.
print(variable)
Podemos combinar una cadena de texto con variables.
print("Texto: ", variable)
A partir de Pyton 3.6 podemos utilizar las cadenas f.
print(f",Texto {variable}")
Por defecto, imprime un salto de línea, pero podemos indicar qué no haga un salto de línea indicando cuál debe ser el último carácter de la cadena que se debe imprimir. Si utilizamos end=""
, entonces no escribirá el salto de línea.
print("Texto", end="")
13.2. Leer por teclado. input()
numero = input("Introduce un número: ")
Los valores que leemos desde el teclado se almacenarán como una cadena de caracteres, pero es posible convertirlos al tipo de datos que sea necesario con las siguientes funciones:
-
int()
-
float()
-
complex()
-
bool()
No se recomienda el uso de la función Se recomienda la lectura del artículo: Eval really is dangerous. |
13.3. Actividades
Actividad 1
Escriba un programa en Python que convierta de grados Celsius a grados Farenheit. El programa tiene que pedir por teclado el valor de una temperatura en grados Celsius y convertirla a grados Farenheit. Tenga en cuenta que la fórmula para convertir de grados Celsius a grados Farenheit es la siguiente:
Actividad 2
Escriba un programa en Python que calcule el área de un círculo. El programa tiene que pedir por teclado el valor del radio del círculo. Tenga en en cuenta que la fórmula para calcular el área de un círculo es la siguiente:
Puede importar el módulo |
Actividad 3
Escriba un programa en Python que calcula la hipotenusa de un triángulo rectángulo. El programa tiene que pedir por teclado el valor de los dos catetos. Tenga en cuenta que la fórmula para calcular la hipotenusa de un triángulo rectángulo es la siguiente:
Para poder realizar la raíz cuadrada tendrá que utilizar la función |
Actividad 4
Escriba un programa en Python que calcule el índice de masa corporal de una persona (IMC). El programa tiene que pedir por teclado el valor del peso en kilogramos y la altura en metros. Tenga en cuenta que la fórmula para calcular el índice de masa corporal de una persona es la siguiente:
Actividad 5
Escriba un programa en Python que pida por teclado una cantidad en euros y la convierta a dólares estadounidenses (USD) y bitcoins (BTC). Tenga en cuenta que los valores de las monedas a día de hoy son los siguientes:
-
1 euro equivale a 1,06 dólar estadounidense (USD).
-
1 euro equivale a 0,000034 bitcoins (BTC).
14. Módulos
Un módulo es un archivo con extensión .py
que contiene código Python que se
puede puede reutlizar (funciones, clases, variables).
Los módulos permiten organizar el código, para poder reutilizarlo y facilitar su mantenimiento.
14.1. Importar módulos estándar de Python
Importar un módulo completo
Ejemplo 1
import math (1)
print(math.pi) (2)
1 | Importamos el módulo math . Al importar el módulo math podemos acceder a todas las variables, constantes y funciones que están definidas en él. |
2 | Hacemos uso de la constante pi que está definida en el módulo math . Como el módulo ha sido importado con la instrucción import math debemos indicar el nombre del módulo seguido de un punto para acceder a sus variables, constantes y funciones. |
Importar un elemento del módulo
Ejemplo 2
from math import pi (1)
print(pi) (2)
1 | Importamos únicamente la constante pi del módulo math . El resto de contenido del módulo math no estará disponible porque no ha sido importado. |
2 | Hacemos uso de la constante pi que hemos importado en el paso anterior. A diferencia del ejemplo anterior, en este caso no es necesario indicar el nombre del módulo delante de la constante. |
14.2. Importar nuestros propios módulos
Vamos a crear un archivo llamado funciones.py
con el siguiente contenido:
def sumar(a, b):
return a + b
def restar(a, b):
return a - b
def multiplicar(a, b):
return a * b
Importar un módulo completo
Ahora vamos a crear un archivo llamado main.py
donde vamos a importar el archivo funciones.py
:
import funciones
print(funciones.sumar(2, 3))
print(funciones.restar(5, 2))
print(funciones.multiplicar(3, 4))
Importar un módulo completo con un alias
Ahora vamos a crear un archivo llamado main.py
donde vamos a importar el archivo funciones.py
:
import funciones as func
print(func.sumar(2, 3))
print(func.restar(5, 2))
print(func.multiplicar(3, 4))
Importar algunos elementos del módulo
from funciones import sumar, restar
print(sumar(2, 3))
print(restar(5, 2))
15. Condicionales
15.1. if
, else
y elif
Condicionales en Java.
if (x > 10) {
System.out.println("Mayor a 10");
} else if (x == 10) {
System.out.println("Igual a 10");
} else {
System.out.println("Menor a 10");
}
Condicionales en Python.
if x > 10:
print("Mayor a 10")
elif x == 10:
print("Igual a 10")
else:
print("Menor a 10")
Diferencia clave:
-
Python no utiliza llaves
{}
ni puntos y comas;
. -
La indentación es obligatoria y define los bloques de código.
15.2. match
y switch
Sentencia switch
en Java.
switch (dia) {
case "1":
System.out.println("Lunes");
break;
case "2":
System.out.println("Martes");
break;
case "3":
System.out.println("Miércoles");
break;
case "4":
System.out.println("Jueves");
break;
case "5":
System.out.println("Viernes");
break;
case "6":
System.out.println("Sábado");
break;
case "7":
System.out.println("Domingo");
break;
default:
return "Día no válido";
}
Sentenca match
en Python.
match dia:
case "1":
print("Lunes")
case "2":
print("Martes")
case "3":
print("Miércoles")
case "4":
print("Jueves")
case "5":
print("Viernes")
case "6":
print("Sábado")
case "7":
print("Domingo")
case _:
return "Día no válido"
-
La sentencia
match
de Python permite realizar comparaciones más complejas que elswitch
de Java.
15.3. Actividades
Actividad 1
Escriba un programa en Python que lea un número entero por teclado y muestre un mensaje indicando si el número es par o impar.
Tenga en cuenta que un número es par si el resto de la división del número entre 2 es igual a 0. Para calcular el resto de una división puede utilizar el operador módulo (%
).
Actividad 2
Escribe un programa en Python que lea por teclado un número real entre 1 y 10, simulando una nota numérica, y muestre un mensaje indicando la calificación obtenida teniendo en cuenta los siguientes rangos:
-
Insuficiente: [0, 5)
-
Suficiente: [5, 6)
-
Bien: [6, 7)
-
Notable: [7, 9)
-
Sobresaliente: [9, 10]
Si el número introducido no está en ninguno de los rangos anteriores debe mostrar un mensaje de error indicando que la nota no es válida.
Actividad 3
Escribe un programa en Python que simule el comportamiento de lanzar una moneda al aire y muestre un mensaje indicando si ha salido cara o cruz.
Para generar un número entero aleatorio puede utilizar la función randint
del módulo random
. Esta función genera un número entero aleatorio comprendido entre los dos números que recibe como parámetros.
Por ejemplo, para generar un número entero entre 1 y 10 podríamos utilizar las siguientes opciones.
Opción 1
import random
n = random.randint(1, 10)
print(n)
Opción 2
from random import randint
n = randint(1, 10)
print(n)
Actividad 4
Escriba un programa en Python que muestre el siguiente mensaje por pantalla para preguntarle al usuario si desea seleccionar cara o cruz.
0 - Cara
1 - Cruz
Introduce una opción (0 o 1):
Después de leer la opción seleccionada por el usuario el programa generará un número aleatorio para simular el lanzamiento de una moneda y mostrará un mensaje indicando si el usuario ha ganado o ha perdido dependiendo del resultado.
Actividad 5
Escriba un programa en Python que simule el juego de piedra, papel o tijera. En primer lugar el programa tendrá que mostrar un mensaje por pantalla al usuario para preguntarle qué opción desea elegir. Por ejemplo:
1. Piedra
2. Papel
3. Tijera
Seleccione una opción (1, 2 o 3):
Después de leer la opción seleccionada por el usuario el programa generará un número aleatorio para simular una jugada y mostrará un mensaje indicando si el usuario ha ganado o ha perdido dependiendo del resultado.
Tenga en cuenta que:
-
La piedra gana a la tijera pero pierde contra el papel.
-
El papel gana a la piedra pero pierde contra la tijera.
-
La tijera gana al papel pero pierde contra la piedra.
16. Bucles
16.1. Bucle for
Bucle for
.
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
Bucle for
.
for numero in range(5): # Itera de 0 a 4
print(numero)
Diferencias clave:
-
En Python,
for
puede iterar sobre cualquier objeto iterable, como listas o cadenas.
Recorrer una lista con for
nombres = ["Juan", "María", "Carlos", "Luisa"]
for nombre in nombres:
print(nombre)
Recorrer una cadena con for
cadena = "Hola Mundo"
for letra in cadena:
print(letra)
Recorrer un diccionario con for
diccionario = {"nombre": "Juan", "edad": 30, "ciudad": "Almería"}
for clave, valor in diccionario.items():
print(clave, valor)
Utilizar for
con range
La función range
devuelve una secuencia de números que es de tipo range
.
Puede aceptar uno, dos o tres argumentos:
range(inicio, fin, paso)
-
inicio
: valor inicial de la secuencia. Su valor por defecto es0
. -
fin
: valor final de la secuencia. -
paso
: incremento de la secuencia. Su valor por defecto es1
.
Ejemplos:
for numero in range(5): # Itera de 0 a 4
print(numero)
for numero in range(1, 6): # Itera de 1 a 5
print(numero)
for numero in range(0, 11, 2): # Itera de 0 a 10 de 2 en 2
print(numero)
for numero in range(10, 0, -1): # Itera de 10 a 1
print(numero)
for numero in range(10, 0, -2): # Itera de 10 a 1 de 2 en 2
print(numero)
16.2. Bucle while
Bucle while
.
int contador = 0;
while (contador < 5) {
System.out.println(contador);
contador++;
}
Bucle while
.
contador = 0
while contador < 5:
print(contador)
contador += 1
Diferencia clave:
-
En Python, no es necesario utilizar llaves
{}
para delimitar el cuerpo del bucle.
16.3. Actividades
Actividad 1
Escriba un programa en Python que muestre una lista de números del 1 al 10.
Resuelva el ejercicio de dos formas distintas, utilizando los bucles for
y while
.
Cuando utilice el bucle for puede hacer uso de la función range
.
Actividad 2
Escriba un programa en Python que muestre una lista de números del 10 al 1.
Resuelva el ejercicio de dos formas distintas, utilizando los bucles for
y while
.
Cuando utilice el bucle for puede hacer uso de la función range
.
Actividad 3
Escriba un programa en Python que muestre los números pares que hay entre 0 y 10.
Resuelva el ejercicio utilizando un bucle for
.
Actividad 4
Escriba un programa en Python que muestre los números impares que hay entre 1 y 11.
Resuelva el ejercicio utilizando un bucle for
.
Actividad 5
Escriba un programa en Python que lea por teclado un número comprendido entre 1 y 10.
Resuelva el ejercicio utilizando un bucle while
. ¿Es posible resolver este ejercicio con un bucle for
?
Actividad 6
Escriba un programa en Python que realice las siguientes operaciones:
-
Leer por teclado un número comprendido entre 1 y 10.
-
Una vez que ha leído el número tiene que mostrar su tabla de multiplicar.
Actividad 7
Escriba un programa en Python que realice las siguientes operaciones:
-
Leer por teclado un número comprendido entre 1 y 10.
-
Una vez que ha leído el número tiene que mostrar su tabla de multiplicar.
-
Después de mostrar la tabla de multiplicar tiene que preguntar al usuario si desea introducir otro número o no. Si el usuario selecciona que quiere continuar el programa tendrá que volver a ejecutarse y repetir los mismos pasos. Si el usuario indica que no quiere continuar el programa finaliza.
Actividad 8
Escriba un programa en Python que muestre todas las tablas de multiplicar de los números comprendidos del 1 al 10.
17. Funciones
Las funciones se declaran con la palabra reservada def
.
17.1. Funciones sin parámetros
En este ejemplo la función no recibe ningún parámetro y no devuelve ningún valor.
def saludar():
print("¡Hola mundo!")
saludar()
17.2. Funciones que devuelven un valor
En este ejemplo la función recibe dos parámetros y devuelve un valor.
# Declarar una función
def sumar(a, b):
return a + b
# Invocar a una función
sumar(1, 2)
17.3. Funciones que devuelve más de un valor
En este ejemplo la función recibe un parámetro y devuelve dos valores.
def dividir(dividendo, divisor):
cociente = dividendo // divisor
resto = dividendo % divisor
return cociente, resto
c, r = dividir(10, 3)
print(f"Cociente: {c}, Resto: {r}")
17.4. Funciones pasando argumentos con clave y valor
Si utilizamos una función pasando argumentos con clave y valor, podemos cambiar el orden de los argumentos.
def saludar(nombre, apellido):
print(f"Hola {nombre} {apellido}")
saludar(apellido="Pérez", nombre="Juan")
17.5. Funciones con parámetros por defecto
Si no le pasamos un valor a un parámetro, se utilizará el valor que se haya definido por defecto.
def saludar(nombre="Mundo"):
print(f"Hola {nombre}")
saludar()
saludar("Juan")
17.6. Funciones con un número variable de argumentos
Si queremos que una función pueda recibir un número variable de argumentos,
podemos utilizar el operador *
para indicar que se trata de una tupla.
def sumar(*numeros):
suma = 0
for numero in numeros:
suma += numero
return suma
s = sumar(1, 2, 3, 4, 5)
print(s)
17.7. Actividades
Actividad 1
Escriba un programa en Python que haga uso de una función llamada saludar
que cumpla los siguientes requisitos:
-
Entrada: No tiene parámetros de entrada.
-
Salida: No tiene parámetros de salida.
-
Funcionalidad: Imprime por pantalla el texto "Hola mundo".
Solución
# Definimos la función saludar
def saludar():
print("Hola mundo")
#--------------------------------------------------
# Programa Principal
# Utilizamos la función saludar
saludar()
Actividad 2
Escriba un programa en Python que haga uso de una función llamada saludar
que cumpla los siguientes requisitos:
-
Entrada: Tiene 1 parámetro de entrada, que será una cadena de texto con el nombre de una persona.
-
Salida: No tiene parámetros de salida.
-
Funcionalidad: Imprime por pantalla un mensaje saludando al nombre de la persona que se haya pasado como parámetro de entrada. Por ejemplo, si el parámetro de entrada es "Pepe", la función mostrará por pantalla: "¡Hola Pepe!".
Solución
# Definimos la función saludar
def saludar(nombre):
print(f"¡Hola {nombre}!")
#--------------------------------------------------
# Programa Principal
# Utilizamos la función saludar
nombre = input("Dime tu nombre: ")
saludar(nombre)
Actividad 3
Escriba un programa en Python que haga uso de una función llamada saludar
que cumpla los siguientes requisitos:
-
Entrada: Tiene 3 parámetros de entrada, que serán 3 cadenas de texto.
-
Nombre,
-
Primer apellido,
-
Segundo apellido
-
-
Salida: No tiene parámetros de salida.
-
Funcionalidad: Imprime por pantalla un mensaje saludando al nombre de la persona que se haya pasado como parámetro de entrada. Por ejemplo, si los parámetros de entrada son "Pepe López Martínez", la función mostrará por pantalla: "¡Hola Pepe López Martínez!".
Solución
# Definimos la función saludar
def saludar(nombre, apellido1, apellido2):
print(f"¡Hola {nombre} {apellido1} {apellido2}!")
#--------------------------------------------------
# Programa Principal
# Utilizamos la función saludar
nombre = input("Dime tu nombre: ")
apellido1 = input("Dime tu primer apellido: ")
apellido2 = input("Dime tu segundo apellido: ")
saludar(nombre, apellido1, apellido2)
Actividad 4
Escriba un programa en Python que haga uso de una función llamada calcular_area_circulo
que cumpla los siguientes requisitos:
-
Entrada: Tiene 1 parámetro de entrada, que será un número real con el valor del radio del círculo del que queremos calcular su área.
-
Salida: Tiene 1 parámetro de salda, que será un número real con el valor del área del círculo.
-
Funcionalidad: Calcula el área de un círculo. Tenga en cuenta que el valor del radio no se pide dentro de la función, sino que se recibe como parámetro de entrada.
Solución
import math
# Definimos la función
def calcular_area_circulo(radio):
area = math.pi * radio * radio
return area
#-------------------------------------------------------
# Programa Principal
radio = float(input("Introduce el radio del círculo: "))
area = calcular_area_circulo(radio)
print(f"El área del círculo es {area}")
Actividad 5
Escriba un programa en Python que haga uso de una función llamada calcular_area_triangulo
que cumpla los siguientes requisitos:
-
Entrada: Tiene 2 parámetros de entrada, que serán dos números reales con el valor de la base y la altura del triángulo que queremos calcular su área.
-
Salida: Tiene 1 parámetro de salida, que será un número real con el valor del área del triángulo.
-
Funcionalidad: Calcula el área de un triángulo. Tenga en cuenta que el valor de la base y la altura no se piden dentro de la función, sino que se reciben como parámetros de entrada.
Solución
# Definimos la función
def calcular_area_triangulo(base, altura):
area = (base * altura) / 2
return area
#--------------------------------------------------
# Programa Principal (Main)
base = float(input("Introduce el valor de la base: "))
altura = float(input("Introduce el valor de la altura: "))
area = calcular_area_triangulo(base, altura)
print(f"El área del triángulo es {area}")
Actividad 6
Escriba un programa en Python que haga uso de una función llamada calcular_area_rectangulo
que cumpla los siguientes requisitos:
-
Entrada: Tiene 2 parámetros de entrada, que serán dos números reales con el valor de la base y la altura del rectángulo que queremos calcular su área.
-
Salida: Tiene 1 parámetro de salida, que será un número real con el valor del área del rectángulo.
-
Funcionalidad: Calcula el área de un rectángulo. Tenga en cuenta que el valor de la base y la altura no se piden dentro de la función, sino que se reciben como parámetros de entrada..
Solución
# Definimos la función
def calcular_area_rectangulo(base, altura):
area = base * altura
return area
#--------------------------------------------------
# Programa Principal (Main)
base = float(input("Introduce el valor de la base: "))
altura = float(input("Introduce el valor de la altura: "))
area = calcular_area_rectangulo(base, altura)
print(f"El área del rectángulo es {area}")
Actividad 7
Escriba un programa en Python que muestre un menú que permita al usuario seleccionar qué operación desea realizar. Las operaciones que puede realizar serán calcular el área de un círculo, un triángulo o un rectángulo. El menú que se le muestra al usuario será similar al siguiente:
1. Calcular el área de un círculo
2. Calcular el área de un triángulo
3. Calcular el área de un rectángulo
4. Salir
Introduce una opción (1-4):
El programa se estará ejecutando de forma indefinida hasta que el usuario seleccione la opción 4.
Tendrá que diseñar las siguientes funciones:
-
mostrar_menu
-
Descripción: Muestra el menú por pantalla con todas las opciones disponibles.
-
-
principal
-
Descripción: Lee por teclado la opción seleccionada por el usuario, valida que la opción está entre 1 y 4, y una vez que ha leído una opción válida llamará a la función correspondiente en función de la opción seleccionada.
-
-
opcion1
-
Descripción: Lee por teclado el valor del radio del círculo, valida que el radio siempre sea mayor que 0 y una vez que ha validado el radio llamará a la función
calcular_area_circulo
.
-
-
opcion2
-
Descripción: Lee por teclado el valor de la base y la altura del triángulo, valida que los dos datos son mayores que 0 y una vez que los ha validado llamará a la función
calcular_area_triangulo
.
-
-
opcion3
-
Descripción: Lee por teclado el valor de la base y la altura del rectángulo, valida que los dos datos son mayores que 0 y una vez que los ha validado llamará a la función
calcular_area_rectangulo
.
-
18. Clases y Objetos
18.1. Declaración de clases y objetos
Declaración de una clase y creación de un objeto
public class Persona {
private String nombre;
public Persona(String nombre) {
this.nombre = nombre;
}
public void saludar() {
System.out.println("Hola, mi nombre es " + nombre);
}
public static void main(String[] args) {
Persona persona = new Persona("Juan");
persona.saludar();
}
}
Declaración de una clase y creación de un objeto
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def saludar(self):
print(f"Hola, mi nombre es {self.nombre}")
# Crear un objeto
persona = Persona("Juan")
persona.saludar()
Diferencias clave:
-
En Python, no es necesario especificar modificadores de acceso como
public
oprivate
. -
El constructor en Python se define con
init
y el parámetroself
es obligatorio para métodos de instancia.
Constructores: init
en Python vs. métodos en Java
Constructor y uso de valores por defecto.
public class Persona {
private String nombre;
public Persona() {
this.nombre = "Sin nombre";
}
public Persona(String nombre) {
this.nombre = nombre;
}
public void saludar() {
System.out.println("Hola, mi nombre es " + nombre);
}
}
Constructor y valores por defecto.
class Persona:
def __init__(self, nombre="Sin nombre"):
self.nombre = nombre
def saludar(self):
print(f"Hola, mi nombre es {self.nombre}")
persona = Persona() # Sin nombre
persona.saludar()
Nota: En Python, los valores por defecto se definen directamente en los parámetros del constructor.
Métodos de instancia y estáticos
Métodos de instancia y estáticos.
public class Ejemplo {
public void metodoInstancia() {
System.out.println("Este es un método de instancia.");
}
public static void metodoEstatico() {
System.out.println("Este es un método estático.");
}
public static void main(String[] args) {
Ejemplo ejemplo = new Ejemplo();
ejemplo.metodoInstancia();
Ejemplo.metodoEstatico();
}
}
Métodos de instancia y estáticos.
class Ejemplo:
def metodo_instancia(self):
print("Este es un método de instancia.")
@staticmethod
def metodo_estatico():
print("Este es un método estático.")
ejemplo = Ejemplo()
ejemplo.metodo_instancia()
Ejemplo.metodo_estatico()
Diferencia clave: En Python, los métodos estáticos requieren el decorador @staticmethod
.
18.2. Encapsulación, herencia y polimorfismo
Modificadores de acceso.
public class Persona {
private String nombre;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
Encapsulación y acceso controlado.
class Persona:
def __init__(self, nombre):
self.__nombre = nombre # Variable privada
def get_nombre(self):
return self.__nombre
def set_nombre(self, nombre):
self.__nombre = nombre
En Python, los atributos "privados" usan un prefijo doble de guiones
bajos ( Por ejemplo, en el ejemplo anterior, el atributo
|
Herencia: uso de super()
en ambos lenguajes
Herencia y uso de super
.
class Animal {
public void sonido() {
System.out.println("El animal hace un sonido");
}
}
class Perro extends Animal {
@Override
public void sonido() {
super.sonido();
System.out.println("El perro ladra");
}
}
Herencia y uso de super
.
class Animal:
def sonido(self):
print("El animal hace un sonido")
class Perro(Animal):
def sonido(self):
super().sonido()
print("El perro ladra")
perro = Perro()
perro.sonido()
18.3. Actividades
Ejerccio 1
Escribe una clase llamada Punto
que tenga dos atributos x
e y
que
representan las coordenadas de un punto en un plano cartesiano. La clase debe
tener un método llamado imprimir_punto
que imprima las coordenadas del punto.
Realice la intancia de 3 puntos y muestre sus coordenadas haciendo uso del método correspondiente.
class Punto:
def __init__(self, x, y):
self.x = x # Coordenada x del punto
self.y = y # Coordenada y del punto
def imprimir_punto(self):
print(f"Coordenadas: ({self.x}, {self.y})")
# Creamos 3 instancias de las clase Punto
p1 = Punto(0, 0)
p2 = Punto(2, 5)
p3 = Punto(-1, 3)
# Imprimimos las coordenadas de los puntos
p1.imprimir_punto() # Salida: Coordenadas: (0, 0)
p2.imprimir_punto() # Salida: Coordenadas: (2, 5)
p3.imprimir_punto() # Salida: Coordenadas: (-1, 3)
Ejercicio 2
Haciendo uso de la clase anterior (Punto
), escriba una nueva clase llamada
Triangulo
que tengas tres atributos que serán de tipo Punto
y representarán
los vértices de un triángulo. La clase debe tener un método llamado
imprimir_vertices
que imprima las coordenadas de los tres vértices, haciendo
uso del método imprimir_punto
de la clase Punto
.
class Punto:
def __init__(self, x, y):
self.x = x # Coordenada x del punto
self.y = y # Coordenada y del punto
def imprimir_punto(self):
print(f"Coordenadas: ({self.x}, {self.y})")
class Triangulo:
def __init__(self, v1, v2, v3):
self.v1 = v1 # Primer vértice (objeto Punto)
self.v2 = v2 # Segundo vértice (objeto Punto)
self.v3 = v3 # Tercer vértice (objeto Punto)
def imprimir_vertices(self):
print("Vértice 1:")
self.v1.mostrar_punto() # Usa el método de Punto
print("Vértice 2:")
self.v2.mostrar_punto()
print("Vértice 3:")
self.v3.mostrar_punto()
# Creamos 3 instancias de la clase Punto
p1 = Punto(0, 0)
p2 = Punto(2, 5)
p3 = Punto(-1, 3)
# Creamos un triángulo con los puntos que hemos creado
triangulo = Triangulo(p1, p2, p3)
# Imprimir los vértices del triángulo
triangulo.imprimir_vertices()
19. Gestión de Excepciones
Para gestionar excepciones en Python podemos utilizar las sentencias try
y
except
. Estas nos permiten manejar errores que pueden surgir durante la
ejecución de un programa.
La sintaxis básica es la siguiente:
Ejemplo 1: ZeroDivisionError
try:
x = 1 / 0
except ZeroDivisionError:
print("Error: División por cero")
Ejemplo 2: IndexError
try:
lista = [1, 2, 3]
print(lista[5])
except IndexError:
print("Error: Índice fuera de rango")
Ejemplo 3: Uso de except
, else
y finally
try:
num1 = int(input("Introduce el número 1: "))
num2 = int(input("Introduce el número 2: "))
resultado = num1 / num2
print(f"Resultado: {resultado}")
except ValueError:
print("Error: Debe introducir números enteros")
except ZeroDivisionError:
print("Error: No se puede dividir entre cero")
else:
print("Todo funcionó correctamente (sin errores)")
finally:
print("Este mensaje siempre se ejecuta")
20. Manejo de Archivos
20.1. Lectura y escritura de archivos
Para leer y escribir archivos en Python, se utiliza la función open()
. Esta
función recibe dos argumentos: el nombre del archivo y el modo de apertura.
Los modos de apertura más comunes son:
-
r
: Lectura (Es el modo por defecto). -
r+
: Lectura y escritura. -
w
: Escritura. Si el archivo no existe, se crea y si ya existe, se sobreescribe. -
w+
: Igual quew
, pero permite la lectura. -
a
: Abre el archivo para añadir contenido al final. -
a+
: Igual quea
, pero permite la lectura.
Modo | Crea el archivo si no existe | Sobrescribe el archivo si existe | Lectura | Escritura | Posición inicial |
---|---|---|---|---|---|
|
No |
No |
Sí |
No |
Inicio |
|
No |
No |
Sí |
Sí |
Inicio |
|
Sí |
Sí |
No |
Sí |
Inicio (el archivo estará vacío) |
|
Sí |
Sí |
Sí |
Sí |
Inicio (el archivo estará vacío) |
|
Sí |
No |
No |
Sí |
Final |
|
Sí |
No |
Sí |
Sí |
Final |
Ejemplo de escritura en un archivo
with open("archivo.txt", "w+") as file:
file.write("Primera línea del archivo\n")
file.write("Segunda línea del archivo\n")
Ejemplos de lectura de un archivo
En este ejemplo, la función file.read().splitlines()
carga todo el contenido
en memoria, lo que puede ser ineficiente si el archivo es muy grande.
with open("archivo.txt", "r") as file:
for line in file.read().splitlines():
print(line)
En este ejemplo, el archivo se lee línea por línea, lo que es más eficiente.
with open("archivo.txt", "r") as file:
for line in file:
print(line.strip())
Referencia: |
21. Licencia
El contenido de esta web está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.