Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Proyecto] [PRACTICA] [CALCULANDO TIEMPO]

"""
Camila está organizando un proyecto y necesita calcular el tiempo total necesario para concluir tres actividades: A, B y C. Sin embargo, si alguna actividad tiene un número de días negativo, el código debe avisar que los valores ingresados son inválidos y no calcular el total.

Escribe un programa que reciba el número de días de tres actividades y muestre el tiempo total del proyecto. Si algún valor es negativo, muestra un mensaje informando el error.
"""
proyectos =["A","B","C"]

def mostrarEncabezado():
    print("=" * 35)
    print("=  CALCULANDO TIEMPO TOTAL  =")
    print("=" * 35 + "\n")

def ingresardata(proyectos:list,rango=3)->tuple:
    data = [ int(input(f"Informe los dias para la actividad {proyectos[i]}: ")) for i in range(rango)]
    return data

def valoresNoNegativos(data:tuple)->bool:
    if all(dias > 0 for dias in data):
        mensaje = f"Los dias para terminar las actividades {proyectos} seran de: {sum(data)} días"
    else:
        mensaje = "Error: Los valores ingresados no pueden ser negativos."
    print(mensaje)
    return mensaje

def main()->None:
    mostrarEncabezado()
    valoresNoNegativos(ingresardata(proyectos))

if __name__ == "__main__":
    main()

1 respuesta

Hola Elmer, espero que estés bien

¡Espero que estés teniendo un buen día! He revisado tu código y parece que estás en el camino correcto para resolver el problema. Sin embargo, hay un pequeño detalle que podrías ajustar para que funcione perfectamente de acuerdo a lo que se solicita en el ejercicio.

En la función valoresNoNegativos, estás verificando si todos los valores son mayores que cero con all(dias > 0 for dias in data). Sin embargo, esto debería ser all(dias >= 0 for dias in data) para incluir el caso en que los días sean cero, ya que cero no es un valor negativo y debería ser considerado válido.

Aquí está el ajuste que podrías hacer:

def valoresNoNegativos(data:tuple)->bool:
    if all(dias >= 0 for dias in data):  # Cambiado de > a >=
        mensaje = f"Los dias para terminar las actividades {proyectos} seran de: {sum(data)} días"
    else:
        mensaje = "Error: Los valores ingresados no pueden ser negativos."
    print(mensaje)
    return mensaje

Con este pequeño cambio, tu programa debería funcionar como se espera, mostrando el tiempo total de las actividades cuando todos los valores son válidos y mostrando un mensaje de error si alguno de los valores es negativo.

Espero que esta sugerencia te sea útil y que puedas seguir avanzando con tu proyecto. ¡Bons estudios!