"""
Use integer division and modulo:
1 minute = 60 seconds
1 hour = 60 minutes
1 day = 24 hours
1 week = 7 days
"""
"""
Convert a total number of seconds into weeks, days, hours,
minutes, and seconds. The function receives the total seconds
and returns each component in a dictionary.
"""
def convert_seconds(total_seconds: int) -> dict:
SECS_PER_MIN = 60
SECS_PER_HOUR = 60 * SECS_PER_MIN
SECS_PER_DAY = 24 * SECS_PER_HOUR
SECS_PER_WEEK = 7 * SECS_PER_DAY
# Compute each unit using integer division and modulo
weeks = total_seconds // SECS_PER_WEEK
total_seconds %= SECS_PER_WEEK
days = total_seconds // SECS_PER_DAY
total_seconds %= SECS_PER_DAY
hours = total_seconds // SECS_PER_HOUR
total_seconds %= SECS_PER_HOUR
minutes = total_seconds // SECS_PER_MIN
seconds = total_seconds % SECS_PER_MIN
return {
"weeks": weeks,
"days": days,
"hours": hours,
"minutes": minutes,
"seconds": seconds
}
if __name__ == "__main__":
seconds = 1_000_000
result = convert_seconds(seconds)
print(f"{result['weeks']} weeks, "
f"{result['days']} days, "
f"{result['hours']} hours, "
f"{result['minutes']} minutes, "
f"{result['seconds']} seconds")
"""
run:
1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds
"""