Dato il numero di secondi passati dalla mezzanotte, che ore sono adesso?
Versione 1
Utilizza gli operatori quoziente e resto della divisione intera.
Le variabili tutto maiuscolo contengono dati da elaborare.
Le variabili tutto maiuscolo contengono dati definitivi.
SECONDI = 86399 # 24*60*60-1, un secondo prima di mezzanotte
MINUTI = SECONDI // 60 # <-- 86399 // 60 = 1439
secondi = SECONDI % 60 # <-- 86399 % 60 = 59
ore = MINUTI // 60 # <-- 1439 // 60 = 23
minuti = MINUTI % 60 # <-- 1439 % 60 = 59
print(ore, minuti, secondi) # 23 59 59
Versione 2.1
Se il numero di secondi può esssere grande a piacere allora bisogna passare ai giorni e agli anni
secondi = 31626061
MINUTI = SECONDI // 60
secondi = SECONDI % 60
ORE = MINUTI // 60
minuti = MINUTI % 60
GIORNI = ORE // 24
ore = ORE % 24
anni = GIORNI // 365
giorni = GIORNI % 365
print("Anni =", anni)
print("Giorni =", giorni)
print("Ore =", ore)
print("Minuti =", minuti)
print("Secondi =", secondi)
Versione 2.2
Lo stesso codice ma su due colonne
secondi = 31626061
MINUTI = SECONDI // 60; secondi = SECONDI % 60
ORE = MINUTI // 60; minuti = MINUTI % 60
GIORNI = ORE // 24; ore = ORE % 24
ANNI = GIORNI // 365; giorni = GIORNI % 365
print("Anni =", ANNI)
print("Giorni =", giorni)
print("Ore =", ore)
print("Minuti =", minuti)
print("Secondi =", secondi)
Versione 2
Troppe variabili… ne bastano la metà!
secondi = 31626061
minuti = secondi // 60
secondi = secondi % 60
ore = minuti // 60
minuti = minuti % 60
giorni = ore // 24
ore = ore % 24
anni = giorni // 365
giorni = giorni % 365
print(anni, giorni, ore, minuti, secondi)
Versione 3
Alcuni linguaggi non hanno né le funzioni né gli operatori per il quoziente e/o per il resto della divisione intera.
Utilizza la divisione e la sottrazione.
from math import floor # arrotondamento all'intero che precede
secondi = 86399
minuti = secondi / 60 # 1439,9833...
minuti = floor(minuti) # 1439
secondi = secondi-60*minuti # 86399-60*1439 = ... = 59
ore = minuti / 60 # 23,98333...
ore = floor(ore) # 23
minuti = minuti-60*ore # 1439-60*23 = ... = 59
print(ore, minuti, secondi) # 23 59 59
Versione 4
Se vuoi visualizzare l’orario nella forma hh:mm:ss, con due cifre per ogni posizione, allora si rende necessario
- aggiungere eventuali zeri prima delle cifre singole
- utilizzare il parametro sep di print()
secondi = 10000
minuti = secondi // 60 # 166
secondi = secondi % 60 # 40
ore = minuti // 60 # 2
minuti = minuti % 60 # 46
if(ore < 10): ore = "0"+str(ore) # "0"+"2" = "02"
if(minuti < 10): minuti = "0"+str(minuti) #
if(secondi < 10): secondi = "0"+str(secondi) #
print(ore, minuti, secondi, sep=":") # 02:46:40