2016-10-17 4 views
0

Ich bin zur Zeit neu zu Python zu lernen und auf dieses Problem gestoßen:(Python) Modulo Mit dem Rest von wechselnden Sekunden zu erhalten, zu Stunden und Minuten

Übung 2-7 die Zeit bekommen eines Schreiben Algorithmus, der die Zeit in Sekunden liest und dann die entsprechenden Stunden, Minuten und verbleibenden Sekunden anzeigt. • Eine Stunde entspricht 60 Minuten. • Eine Minute entspricht 60 Sekunden.

Hier ist, wie ich es geschrieben hätte:

def amount_time(t): 
    h = t//3600 
    m = int((t/3600 - h)*60) 
    s = int(((t/3600 - h)*60 - m)*60) 
    print("Number of hours:",h) 
    print("Number of minutes:",m) 
    print("Number of Seconds:", s) 
amount_time(5000) 

Ich wurde gesagt, es ist ein einfacher Weg, es zu schreiben Modulo mit dem Rest für die Minuten und Sekunden zu erhalten, könnte jemand helfen? Vielen Dank!

Antwort

0

Das ist einfach "aus dem Kopf", weil ich kein Testsystem habe, das ich jetzt benutzen könnte.

def amount_time(t): 
    print("Number of Seconds:", t % 60) 
    print("Number of Minutes:", (t // 60) % 60) 
    print("Number of Hours:", (t // 3600)) 

Was "t% 60" tut:

  1. nehmen t, teilen sie durch 60
  2. Everthing entfernen des Punkt links
  3. multiplizieren mit 60

Mit Nummern:

  1. 5000/60 = 83,33333
  2. => 0,33333
  3. 0,33333 * 60 = 20
+0

Danke für die Erklärung! Es funktioniert perfekt. –

+0

Gern geschehen! – Woozar

0

Ihre Berechnung nicht funktioniert minuts richtig, verwenden Sie Modulo mit den Stunden. Sie könnten das gleiche mit Minuten tun, wie Sie Wirh Sekunden tat statt:

m =  (t - h * 3600) // 60 
s = int (t - h*3600 - m*60) 
ms = int ((t - h*3600 - m*60 - s) * 1000) # milliseconds 

und die Ergebniszeichenfolge zu bauen gibt es bessere Möglichkeiten, F. E.

print '{}:{}:{}.{}'.format(h,m,s,ms) 

Sie finden mehr Möglichkeiten und Optionen zu formatieren, wenn Sie hier:

python dokumentation for string formatting

+0

Mein schlechtes Ich habe vergessen, die Minuten zurück zu ändern, nachdem ich fertig getestet (editiert), Ganzzahl-Division scheint gut mit den Stunden funktionieren, kann ich nicht modulo mit den Minuten und Sekunden verwenden, um die Anzahl der Operationen zu verkürzen? –

Verwandte Themen