-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
97 lines (81 loc) · 3.49 KB
/
Copy pathmain.py
File metadata and controls
97 lines (81 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"""
Se requiere una herramienta para auditar el inventario y decidir qué artículos
necesitan ser reabastecidos. La información se encuentra en una matriz:
[Código Artículo, Nombre, Stock Actual, Stock Mínimo Requerido].
Requisitos de Desarrollo
• Matriz: Crear una matriz con al menos 5 artículos.
• Módulos: Se requiere un módulo (función) para determinar la cantidad exacta a pedir para un artículo.
• Lógica de Negocio:
◦ Si el Stock Actual es menor al Stock Mínimo, la cantidad a pedir es la diferencia (Mínimo Requerido - Stock Actual).
◦ Si el Stock Actual es suficiente (mayor o igual al Mínimo), la cantidad a pedir es cero.
• Salida: Imprimir una lista de pedidos que muestre el nombre del artículo y la cantidad exacta que debe ser solicitada.
"""
def calcular_cantidad_a_pedir(stock_actual: int, stock_minimo: int) -> int:
"""
Calcula la cantidad exacta a pedir para un articulo.
Parametros:
stock_actual (int): Cantidad actual en inventario.
stock_minimo (int): Cantidad minima requerida en inventario.
Retorna:
int: Cantidad a pedir. Si el stock actual es menor al minimo,
retorna la diferencia (minimo - actual). Si es suficiente, retorna 0.
"""
if stock_actual < stock_minimo:
return stock_minimo - stock_actual
return 0
def generar_lista_pedidos(inventario: list) -> list:
"""
Genera una lista de pedidos a partir de la matriz de inventario.
Parametros:
inventario (list): Matriz con los articulos del inventario.
Cada fila es [codigo, nombre, stock_actual, stock_minimo].
Retorna:
list: Lista de tuplas (nombre_articulo, cantidad_a_pedir) para
aquellos articulos que necesitan reabastecimiento.
"""
pedidos = []
for articulo in inventario:
codigo, nombre, stock_actual, stock_minimo = articulo
cantidad = calcular_cantidad_a_pedir(stock_actual, stock_minimo)
if cantidad > 0:
pedidos.append((nombre, cantidad))
return pedidos
def imprimir_pedidos(pedidos: list) -> None:
"""
Imprime en consola la lista de pedidos formateada.
Parametros:
pedidos (list): Lista de tuplas (nombre_articulo, cantidad_a_pedir).
"""
print("\n--- LISTA DE PEDIDOS ---")
if not pedidos:
print("No se requiere reabastecer ningun articulo.")
else:
print(f"{'Articulo':<30} {'Cantidad a Pedir':<20}")
print("-" * 63)
for nombre, cantidad in pedidos:
print(f"{nombre:<30} {cantidad:<20}")
def main():
"""
Funcion principal del programa.
Define la matriz de inventario y genera/imprime la lista de pedidos.
"""
# Matriz de inventario: [Codigo, Nombre, Stock Actual, Stock Minimo Requerido]
inventario = [
[101, "Laptop HP", 5, 10],
[102, "Teclado USB", 20, 15],
[103, "Mouse Inalambrico", 3, 8],
[104, "Monitor 24 pulg", 2, 5],
[105, "Webcam HD", 12, 10],
]
print("+" * 63)
print("=== AUDITORIA DE INVENTARIO ===")
print(f"{'Codigo':<8} {'Nombre':<25} {'Stock Actual':<15} {'Stock Minimo':<15}")
print("-" * 63)
for articulo in inventario:
codigo, nombre, stock_actual, stock_minimo = articulo
print(f"{codigo:<8} {nombre:<25} {stock_actual:<15} {stock_minimo:<15}")
pedidos = generar_lista_pedidos(inventario)
imprimir_pedidos(pedidos)
print("+" * 63)
if __name__ == "__main__":
main()