Estructuras de Control
Estructuras de Control
3. Control de bucles:
break: Termina prematuramente la ejecución de un bucle.
continue: Salta a la siguiente iteración de un bucle.
pass: No hace nada. Se utiliza cuando la sintaxis requiere un bloque de código pero no se desea
ejecutar nada en ese momento.
Ejemplo de estructuras de control en Python:
1 # Estructura de selección
2 x = 10
3 if x > 0:
4 print("x es positivo")
5 elif x == 0:
6 print("x es cero")
7 else:
8 print("x es negativo")
9
10 # Estructura de iteración
11 lista = [1, 2, 3, 4, 5]
12 for elemento in lista:
13 print(elemento)
14
15 # Control de bucles
16 for i in range(10):
17 if i == 3:
18 break
Página 1 de 6
19 print(i)
Esto es solo una introducción básica. Python ofrece muchas más características avanzadas en
sus estructuras de control, como la comprensión de listas, manejo de excepciones, entre otros.
2. Compresion de listas
La comprensión de listas en Python es una técnica concisa y poderosa para crear listas.
Permite crear una nueva lista aplicando una expresión a cada elemento de otra secuencia
(como otra lista o un rango) o iterando sobre una secuencia y filtrando los elementos que
cumplan cierta condición. La sintaxis básica es bastante simple:
1 nueva_lista = [expresion for elemento in secuencia]
O con filtrado:
1 nueva_lista = [expresion for elemento in secuencia if condicion]
3. Creación de una lista de tuplas (número, cuadrado) para los números del 0 al 4:
1 tuplas = [(x, x**2) for x in range(5)]
2 print(tuplas) # Output: [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
Página 2 de 6
17 pass
18
19 except:
20 # Manejo para cualquier otra excepción no capturada por los bloques anteriores
21 pass
22
23 else:
24 # Se ejecuta si no se levanta ninguna excepción en el bloque try
25 pass
26
27 finally:
28 # Bloque opcional que se ejecuta sin importar si se levantó una excepción o no.
29 # Se utiliza para limpiar recursos, cerrar archivos, etc.
30 pass
En este ejemplo, el bloque try intenta realizar una división que generará una excepción
ZeroDivisionError. Esta excepción es capturada por el bloque except ZeroDivisionError, que
imprime un mensaje de error. Luego, el bloque finally se ejecuta para realizar tareas de
limpieza, como cerrar archivos o liberar recursos.
El manejo de excepciones te permite escribir código más robusto y manejar errores de manera
más elegante y controlada. Es una práctica recomendada en Python y en la programación en
general.
4. ej: un cliente x accede a registrarse en la clase usuario (con sus atributos:
nombre, edad, direccion , ciudad, rut y la metodo: estudiar) para que se instancie
el objeto usuario, derivando a la clase orden de compra (tarjeta de credito)
instanciando el objeto orden de compra que una vez procesada y validada
accede a la clase premiun definiendo el objeto premiun asociado al cliente x.
Entendido, aquí tienes una implementación básica en Python utilizando clases y el manejo de
excepciones:
1 class Usuario:
2 def __init__(self, nombre, edad, direccion, ciudad, rut):
3 self.nombre = nombre
4 self.edad = edad
5 self.direccion = direccion
6 self.ciudad = ciudad
7 self.rut = rut
8
9 def estudiar(self):
10 print(f"{self.nombre} está estudiando.")
11
12
13 class OrdenDeCompra:
14 def __init__(self, usuario, tarjeta_credito):
15 self.usuario = usuario
16 self.tarjeta_credito = tarjeta_credito
17
18 def procesar_orden(self):
Página 3 de 6
19 # Simulación de procesamiento de la orden
20 if self.tarjeta_credito.validar():
21 print("Orden procesada y validada.")
22 else:
23 raise ValueError("Tarjeta de crédito no válida.")
24
25
26 class TarjetaCredito:
27 def __init__(self, numero, fecha_vencimiento, cvv):
28 self.numero = numero
29 self.fecha_vencimiento = fecha_vencimiento
30 self.cvv = cvv
31
32 def validar(self):
33 # Simulación de validación de tarjeta de crédito
34 return True # Suponiendo que la validación siempre es exitosa
35
36
37 class Premium:
38 def __init__(self, usuario):
39 self.usuario = usuario
40 self.beneficios = ["Descuentos especiales", "Atención personalizada"]
41
42
43 # Ejemplo de uso
44 try:
45 # Crear usuario
46 cliente_x = Usuario("Cliente X", 30, "Calle Principal 123", "Ciudad A", "12345678-9")
47
48 # Crear tarjeta de crédito
49 tarjeta_cliente_x = TarjetaCredito("1234 5678 9012 3456", "12/25", "123")
50
51 # Crear orden de compra
52 orden_cliente_x = OrdenDeCompra(cliente_x, tarjeta_cliente_x)
53 orden_cliente_x.procesar_orden()
54
55 # Si la orden se procesa correctamente, se convierte en cliente Premium
56 cliente_x_premium = Premium(cliente_x)
57 print(f"{cliente_x.nombre} ahora es cliente Premium con los siguientes beneficios:")
58 for beneficio in cliente_x_premium.beneficios:
59 print("-", beneficio)
60
61 except ValueError as error:
62 print("Error:", error)
Este código simula el proceso de registro de un cliente, creación de una orden de compra con
una tarjeta de crédito asociada, procesamiento de la orden y, si es exitoso, el cliente se
convierte en cliente Premium con beneficios adicionales.
5. Insertar por teclado los datos del cliente_x y la Tarjeta_cliente_x luego del
proceso derivar a un archivo excell Cliente_x, Tarjeta Cliente x, orden de
compra cliente x, curso que adquirio, caracteristica premiun o no—
Para lograr eso, puedes utilizar la biblioteca openpyxl para manipular archivos de Excel en
Python. Aquí tienes una versión actualizada del código que permite al usuario ingresar los
datos del cliente y de la tarjeta de crédito desde el teclado, y luego guarda la información en
un archivo Excel:
1 import openpyxl
2
3 class Usuario:
Página 4 de 6
4 def __init__(self, nombre, edad, direccion, ciudad, rut):
5 self.nombre = nombre
6 self.edad = edad
7 self.direccion = direccion
8 self.ciudad = ciudad
9 self.rut = rut
10
11 def estudiar(self):
12 print(f"{self.nombre} está estudiando.")
13
14
15 class OrdenDeCompra:
16 def __init__(self, usuario, tarjeta_credito, curso):
17 self.usuario = usuario
18 self.tarjeta_credito = tarjeta_credito
19 self.curso = curso
20
21 def procesar_orden(self):
22 # Simulación de procesamiento de la orden
23 if self.tarjeta_credito.validar():
24 print("Orden procesada y validada.")
25 else:
26 raise ValueError("Tarjeta de crédito no válida.")
27
28
29 class TarjetaCredito:
30 def __init__(self, numero, fecha_vencimiento, cvv):
31 self.numero = numero
32 self.fecha_vencimiento = fecha_vencimiento
33 self.cvv = cvv
34
35 def validar(self):
36 # Simulación de validación de tarjeta de crédito
37 return True # Suponiendo que la validación siempre es exitosa
38
39
40 class Premium:
41 def __init__(self, usuario):
42 self.usuario = usuario
43 self.beneficios = ["Descuentos especiales", "Atención personalizada"]
44
45
46 def obtener_datos_usuario():
47 nombre = input("Ingrese el nombre del cliente: ")
48 edad = input("Ingrese la edad del cliente: ")
49 direccion = input("Ingrese la dirección del cliente: ")
50 ciudad = input("Ingrese la ciudad del cliente: ")
51 rut = input("Ingrese el RUT del cliente: ")
52 return Usuario(nombre, edad, direccion, ciudad, rut)
53
54
55 def obtener_datos_tarjeta():
56 numero = input("Ingrese el número de tarjeta de crédito: ")
57 fecha_vencimiento = input("Ingrese la fecha de vencimiento de la tarjeta (MM/YY): ")
58 cvv = input("Ingrese el CVV de la tarjeta de crédito: ")
59 return TarjetaCredito(numero, fecha_vencimiento, cvv)
60
61
62 def guardar_datos_en_excel(cliente, tarjeta, curso, premium):
63 wb = openpyxl.Workbook()
64 ws = wb.active
Página 5 de 6
ws.append(["Nombre", "Edad", "Dirección", "Ciudad", "RUT", "Número de tarjeta", "Fecha de vencimiento", "CVV",
65
"Curso", "Premium"])
ws.append([cliente.nombre, cliente.edad, cliente.direccion, cliente.ciudad, cliente.rut, tarjeta.numero,
66
tarjeta.fecha_vencimiento, tarjeta.cvv, curso, premium])
67 wb.save("datos_clientes.xlsx")
68
69
70 try:
71 # Obtener datos del usuario y la tarjeta de crédito
72 cliente_x = obtener_datos_usuario()
73 tarjeta_cliente_x = obtener_datos_tarjeta()
74
75 # Crear orden de compra
76 curso_adquirido = input("Ingrese el curso adquirido por el cliente: ")
77 orden_cliente_x = OrdenDeCompra(cliente_x, tarjeta_cliente_x, curso_adquirido)
78 orden_cliente_x.procesar_orden()
79
80 # Determinar si el cliente es Premium
81 es_premium = input("¿El cliente es Premium? (Sí/No): ").lower() == "sí"
82
83 # Guardar los datos en un archivo Excel
84 guardar_datos_en_excel(cliente_x, tarjeta_cliente_x, curso_adquirido, "Sí" if es_premium else "No")
85
86 print("Datos guardados exitosamente en el archivo datos_clientes.xlsx.")
87
88 except ValueError as error:
89 print("Error:", error)
Este código solicitará al usuario que ingrese los datos del cliente y de la tarjeta de crédito
desde el teclado. Luego, creará un objeto de orden de compra con los datos ingresados y
guardará toda la información en un archivo Excel llamado "datos_clientes.xlsx".
Página 6 de 6