El alumnado trabajará un caso práctico real: la gestión de las campañas de aceituna. En muchas cooperativas y pequeñas almazaras se siguen usando hojas de cálculo o anotaciones manuales.
El objetivo educativo es que aprendan a automatizar este proceso mediante un algoritmo en Python, desarrollando un programa que:
- Permita introducir un número indeterminado de entregas.
- Calcule automáticamente el peso total y el rendimiento medio.
- Genere un informe final en PDF.
Esta situación permite conectar la programación con los sectores productivos de Andalucía y generar aprendizajes significativos con datos reales.
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
registros = []
kilos_total = 0
aceite_total = 0
while True:
registro = input("¿Quieres añadir un registro? (S/N): ")
if registro.upper() == "S":
kilos = float(input("Introduce los kilos recogidos: "))
rendimiento = float(input("Introduce el rendimiento medio (%): "))
aceite = kilos * (rendimiento / 100)
registros.append((kilos, rendimiento, aceite))
kilos_total += kilos
aceite_total += aceite
print("Registro añadido")
print(f"Kilos acumulados: {kilos_total} KG")
print(f"Aceite acumulado: {aceite_total:.2f} L\n")
elif registro.upper() == "N":
break
else:
print("Opción no válida")
w, h = A4
c = canvas.Canvas("almazara.pdf", pagesize=A4)
x = 50
y = h - 50
c.setFont("Helvetica-Bold", 18)
c.drawCentredString(w / 2, y, "Almazara")
y -= 20
c.line(50, y, w - 50, y)
y -= 40
c.setFont("Helvetica-Bold", 10)
c.drawString(50, y, "KG recogidos")
c.drawString(200, y, "Rendimiento %")
c.drawString(350, y, "Total aceite (L)")
y -= 5
c.line(50, y, w - 50, y)
c.setFont("Helvetica", 10)
y -= 20
for i, (kilos, rendimiento, aceite) in enumerate(registros, start=1):
c.drawString(30, y, f"{i}.")
c.drawString(50, y, f"{kilos:.2f}")
c.drawString(200, y, f"{rendimiento:.2f}")
c.drawString(350, y, f"{aceite:.2f}")
y -= 20
y -= 10
c.line(50, y, w - 50, y)
y -= 25
c.setFont("Helvetica-Bold", 11)
c.drawString(50, y, f"Kilos totales: {kilos_total:.2f} KG")
c.drawString(300, y, f"Aceite total: {aceite_total:.2f} L")
c.showPage()
c.save()
print("\nPDF generado correctamente: almazara.pdf")
#Francisco José Plaza García
https://drive.google.com/file/d/1EyAx0KOg541JQJFT5XE4mXIWNYDl05pR/view?usp=sharing
El programa entra en un bucle donde te pregunta:
¿Quieres añadir un registro? (S/N)
Si escribes S:
- Te pide los kilos recogidos.
- Te pide el rendimiento medio (porcentaje).
- Calcula el aceite con esta fórmula:
aceite = kilos *(rendimiento / 100)
Por ejemplo:
Si recoges 100 kg y el rendimiento es 20%, obtienes 20 litros de aceite.
Guarda cada registro en una lista y va sumando:
- Los kilos totales.
- El aceite total.
Si escribes N, termina de pedir datos.
Después de eso, el programa crea un archivo PDF llamado «almazara.pdf» usando la librería reportlab.
En el PDF hace esto:
- Escribe el título «Almazara».
- Dibuja una tabla con columnas:
- KG recogidos
- Rendimiento %
- Total aceite (L)
- Escribe todos los registros que introdujiste.
- Al final pone:
- Kilos totales.
- Aceite total.
Finalmente guarda el archivo y muestra el texto:
PDF generado correctamente: almazara.pdf