1. Variables y Tipos de Datos
Ejercicio 1.1 (Variables y Strings):
- Crea una variable llamada
nombre_usuarioy asígnale tu nombre como un string. - Crea otra variable
mensaje_bienvenidaque contenga el string “Bienvenido al sistema, “. - Imprime por pantalla la concatenación del mensaje de bienvenida y el nombre de usuario.
Concepto: Variables, Strings, Concatenación,
print().
Ejercicio 1.2 (Números y Booleanos):
- Crea una variable
intentos_loginy asígnale el valor entero3. - Crea una variable
max_intentosy asígnale el valor5. - Crea una variable booleana
sesion_activay asígnaleFalse. - Imprime el tipo de cada una de estas variables usando la función
type(). Concepto: Variables, Integers, Booleans,type().
Ejercicio 1.3 (Listas):
- Crea una lista llamada
ips_permitidasque contenga las siguientes direcciones IP (como strings): “192.168.1.1”, “10.0.0.5”, “8.8.8.8”. - Imprime la lista completa.
- Imprime el segundo elemento de la lista (recordar que el índice empieza en 0).
- Añade la IP “192.168.1.100” al final de la lista.
- Imprime la lista modificada.
Concepto: Listas (creación, acceso por índice, añadir elementos con
append()).
Ejercicio 1.4 (Diccionarios):
- Crea un diccionario llamado
permisos_usuariodonde las claves sean nombres de usuario (strings) y los valores sean sus roles (strings). Ejemplo:{"admin": "superuser", "invitado": "lectura", "auditor": "lectura_logs"}. - Imprime el diccionario completo.
- Imprime el rol del usuario “admin”.
- Añade un nuevo usuario “desarrollador” con el rol “escritura”.
- Imprime el diccionario actualizado. Concepto: Diccionarios (creación, acceso por clave, añadir elementos).
2. Operadores
Ejercicio 2.1 (Aritméticos y Comparación):
- Usando las variables
intentos_loginymax_intentosdel ejercicio 1.2, calcula cuántos intentos quedan (intentos_restantes = max_intentos - intentos_login). Imprime el resultado. - Verifica si
intentos_logines menor quemax_intentos. Imprime el resultado (debería serTrueoFalse). - Verifica si el
nombre_usuario(del ejercicio 1.1, asegúrate de que esté definido) es exactamente igual a “admin”. Imprime el resultado. Concepto: Operadores aritméticos (-), Operadores de comparación (<,==).
Ejercicio 2.2 (Lógicos):
- Crea dos variables booleanas:
usuario_valido = Trueypassword_correcto = False. - Verifica si el usuario es válido Y la contraseña es correcta. Imprime el resultado.
- Verifica si el usuario es válido O la contraseña es correcta. Imprime el resultado.
- Verifica si el usuario NO es válido. Imprime el resultado.
Concepto: Operadores lógicos (
and,or,not).
3. Estructuras de Control: Condicionales (if, elif, else)
Ejercicio 3.1 (Comprobación Simple):
- Pide al usuario que introduzca una contraseña usando
input("Introduce tu contraseña: "). Guarda la entrada en una variablepassword_introducida. - Comprueba si la longitud (número de caracteres) de
password_introducidaes menor que 8. - Si es menor que 8, imprime “Contraseña demasiado corta. Debe tener al menos 8 caracteres.”
- Si no (es decir, si es 8 o más), imprime “Longitud de contraseña aceptable.”
Concepto:
input(),len(),if...else.
Ejercicio 3.2 (Múltiples Condiciones):
- Usando la
password_introducidadel ejercicio anterior (puedes pedirla de nuevo o reutilizar la variable si estás ejecutando secuencialmente):- Si la longitud es menor que 8, imprime “Contraseña DÉBIL”.
- Si la longitud está entre 8 y 12 (inclusive), imprime “Contraseña MEDIA”.
- Si la longitud es mayor que 12, imprime “Contraseña FUERTE”.
Concepto:
if...elif...else, operadores de comparación (<,>=,<=,>).
Ejercicio 3.3 (Pertenencia):
- Pide al usuario que introduzca su dirección IP usando
input(). - Usando la lista
ips_permitidasdel ejercicio 1.3 (asegúrate de que esté definida), comprueba si la IP introducida está en la lista. - Si está en la lista, imprime “Acceso permitido.”
- Si no está en la lista, imprime “Acceso denegado.”
Concepto:
inoperator with lists,if...else.
ips_permitidas = ["192.168.1.1", "10.0.0.5", "8.8.8.8", "192.168.1.100"]4. Estructuras de Control: Bucles (for, while)
Ejercicio 4.1 (for con Listas):
- Itera sobre la lista
ips_permitidas(asegúrate de que esté definida). - Dentro del bucle, imprime cada dirección IP precedida por “Verificando IP: “.
Concepto: Bucle
forpara iterar sobre listas.
ips_permitidas = ["192.168.1.1", "10.0.0.5", "8.8.8.8", "192.168.1.100"] Ejercicio 4.2 (for con range):
- Usa un bucle
fory la funciónrange()para imprimir los números del 1 al 5 (inclusive). Concepto: Buclefor,range().
Ejercicio 4.3 (while):
- Simula un contador de intentos de acceso. Inicializa una variable
intentosa 0. - Usa un bucle
whileque se ejecute mientrasintentossea menor que 3. - Dentro del bucle, imprime “Intento número X” (sustituyendo X por el número de intento actual, empezando desde 1).
- Incrementa la variable
intentosen 1 en cada iteración. - Al salir del bucle, imprime “Número máximo de intentos alcanzado.”
Concepto: Bucle
while, contadores, incremento.
5. Funciones
Ejercicio 5.1 (Función Simple):
- Define una función llamada
saludar_usuarioque tome un argumentonombre. - Dentro de la función, debe imprimir “Hola, [nombre]! Bienvenido/a.”.
- Llama a la función pasándole tu nombre.
Concepto: Definición de funciones (
def), argumentos, llamadas a funciones.
Ejercicio 5.2 (Función con Retorno):
- Define una función llamada
es_longitud_seguraque tome un argumentopassword. - La función debe devolver
Truesi la longitud delpasswordes 8 o más, yFalseen caso contrario. - Llama a la función con diferentes contraseñas (ej. “12345”, “claveSegura123”) y guarda el resultado en una variable. Imprime esa variable para ver el resultado.
Ejercicio 5.3 (Función con Bucle y Lista):
- Define una función llamada
verificar_ipque tome dos argumentos:ip_a_verificar(un string) ylista_ips(una lista). - Dentro de la función, usa un bucle
forpara recorrerlista_ips. - Si
ip_a_verificarse encuentra enlista_ips, la función debe devolverTrueinmediatamente. - Si el bucle termina sin encontrar la IP, la función debe devolver
False(fuera del bucle). - Llama a la función usando la lista
ips_permitidasy prueba con una IP que esté en la lista (“10.0.0.5”) y otra que no (“1.1.1.1”). Imprime los resultados. Concepto:returnstatement, funciones que devuelven booleanos.
Ejercicio 5.3 (Función con Bucle y Lista):
- Define una función llamada
verificar_ipque tome dos argumentos:ip_a_verificar(un string) ylista_ips(una lista). - Dentro de la función, usa un bucle
forpara recorrerlista_ips. - Si
ip_a_verificarse encuentra enlista_ips, la función debe devolverTrueinmediatamente. - Si el bucle termina sin encontrar la IP, la función debe devolver
False(fuera del bucle). - Llama a la función usando la lista
ips_permitidasy prueba con una IP que esté en la lista (“10.0.0.5”) y otra que no (“1.1.1.1”). Imprime los resultados. Concepto: Combinar funciones, bucles, listas yreturn.
ips_permitidas = ["192.168.1.1", "10.0.0.5", "8.8.8.8", "192.168.1.100"]6. Manejo de Errores Básico (try...except)
Ejercicio 6.1 (Entrada Numérica):
- Pide al usuario que introduzca el número de días de validez de una contraseña (un entero) usando
input(). - Intenta convertir la entrada a un entero usando
int(). - Usa un bloque
try...except ValueErrorpara manejar el caso en que el usuario introduzca texto en lugar de un número. - Si la conversión es exitosa, imprime “Número de días establecido: [número]“.
- Si ocurre un
ValueError, imprime “Error: Debes introducir un número entero.”
Concepto: try...except, ValueError, int().
7. Entrada/Salida Básica (Archivos)
Ejercicio 7.1 (Escritura en Archivo):
- Crea una lista de strings llamada
usuarios_bloqueados = ["user1", "test_user", "guest"]. - Abre un archivo llamado
bloqueados.txten modo escritura ('w'). Se recomienda usarwith. - Usa un bucle
forpara recorrer la listausuarios_bloqueados. - Dentro del bucle, escribe cada nombre de usuario en el archivo, seguido de un salto de línea (
\n).
Concepto: Abrir archivos (open()), modo escritura ('w'), escribir líneas (write()), saltos de línea (\n), with statement.
Ejercicio 7.2 (Lectura de Archivo):
- Abre el archivo
bloqueados.txtque creaste en el ejercicio anterior en modo lectura ('r'), usandowith. - Lee todas las líneas del archivo usando
readlines()y guárdalas en una nueva lista llamadaleidos_desde_archivo. - Imprime la lista
leidos_desde_archivo. - Opcional Avanzado: Imprime la lista pero eliminando el
\nde cada elemento usando un buclefory el método.strip().
Concepto: Modo lectura ('r'), leer líneas (readlines()), with statement, método strip() (opcional).