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).