1. Faro

Nivel 6 · Depuración: el tiempo de la ruta parece incorrecto

La solicitud

De Daniel Brooks, Director de Operaciones

“La hoja de los conductores dice que la ruta de hoy tarda "2.25 h 15 min". Eso no puede ser. ¿Puedes arreglar el script que escribe la etiqueta?”

Tu objetivo

Corrige el código para que result sea la etiqueta de texto del tiempo total de la ruta en horas completas y minutos sobrantes, exactamente con el formato "2 h 15 min" (un str). Los tres tramos ya están en el starter.

  • Guarda un texto (str) en resultpendiente

Tu código

Python

Cargando el editor…

    ResultadoPresiona Ejecutar para ver el tuyo

    Mote revisa tu resultado

    Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.

    La lección

    Leer un error a partir de su salida

    La etiqueta dice «2.25 h 15 min». Ahí hay dos pistas. Primera, 2.25 tiene decimales, así que hours es un float: algo usó la división real. Segunda, 0.25 horas son exactamente 15 minutos, así que el resto se está contando dos veces, una dentro de las horas y otra en los minutos. Leer con atención la salida errónea suele indicarte qué línea mirar antes incluso de abrir el código.

    Los tramos suman 48 + 52 + 35 = 135 minutos:

    135 / 60    # 2.25   true division: hours with a fraction
    135 // 60   # 2      floor division: whole hours only
    135 % 60    # 15     modulo: the minutes left over

    La pareja inseparable

    // y % están diseñados para usarse juntos. La división entera responde a «cuántos 60 caben» y el módulo responde a «qué sobra». Siempre vuelven a encajar:

    (135 // 60) * 60 + 135 % 60   # 120 + 15 = 135

    Eso los convierte en la herramienta estándar para separar cualquier cantidad en unidades grandes y pequeñas: minutos en horas y minutos, días en semanas y días, unidades en cajas completas y unidades sueltas.

    Cuando las dos partes son números enteros, el f-string hace el resto. f"{hours} h {rest} min" coloca cada valor en el texto y, como ambos son ints, no hay decimales sobrantes.

    Comprueba la corrección con más de un valor

    Una corrección que solo funciona para la ruta de hoy no es una corrección. Prueba algunos totales de cabeza o en el editor: 60 minutos deberían dar “1 h 0 min”, 59 deberían dar “0 h 59 min” y 150 deberían dar “2 h 30 min”. Los casos límite, justo en una hora y justo por debajo de una, son donde se esconden los errores de conversión.

    Errores comunes

    • Reemplazar / por round(minutes / 60). Redondea a la hora más cercana, así que casualmente funciona para 135 minutos pero convierte 165 minutos en “3 h 45 min”. Además, Python redondea las mitades al número par (round(2.5) es 2), lo que hace el error aún más difícil de ver en las pruebas.
    • Dar formato al float con :.0f. La etiqueta mostraría “2 h”, pero 2.75 horas se mostrarían como “3 h”.
    • Cambiar la línea del módulo. minutes % 60 ya estaba bien.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.