Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich habe ein kleines Problem mit meiner Python-Stoppuhr. Ich weiß auch nicht genau zu welchem Themenbereich ich die Frage hochladen soll aber ich hoffe, in Allgemeine Fragen bekomme ich etwas Hilfe.
Mein Programm ( weiter unten mit eingefügt ) soll eine Stoppuhr sein. Das Programm läuft soweit im Visual Studio Code ( Python Version 3.8 ), doch sobald ich das Programm in das Terminal des Raspberrys abspielen lassen möchte, kommt: " NameError: name 'start_time' is not defined ".
In Python bin ich noch neu dabei, deshalb bin ich gerade etwas Planlos.
Eine weitere Bitte von mir wäre( kein muss ), wie ich die gestoppte Zeit von Sekunden auf Minuten und Stunden umrechnen kann, sofern sie mehr als 60 Sekunden beträgt, da ich nicht nur eine lange Zahlenfolge in Sekunden ablesen möchte. Damit meine ich, dass die Zeit dann so als H:M:S ausgegeben wird. Könnte ich nicht auch dabei einfach mit einer If-Abfrage arbeiten?
Ich wäre euch dankbar für Hilfestellungen und Lösungsvorschläge.
Ich würde dir empfehlen mehr mit DateTime zu berechnen, da du bei DateTimeObjekten mehr Möglichkeiten hast als mit dem float den du bei time.time() raus bekommst.
import datetime
input("\nZum Starten bitte beliebgige Taste drücken. Zum Beenden bitte STRG + C drücken\n")
start = datetime.datetime.now()
while True:
try:
print(f"{str(datetime.datetime.now() - start)[:-4]}") #-4 nur damit die Millisekunden 2 statt 6 Stellen haben
except KeyboardInterrupt:
break
ende = datetime.datetime.now()
print(f"\nEs dauerte {ende-start}")
Wenn das dir zu schnell geht kannst du ja dann noch ein time.sleep(1) einbauen, dass er nur jede Sekunde die vergangene Zeit ausgibt.
Bei deinem Code oben importierst du zwar schon die DateTime Lib, benutzt diese aber nur in einer Zeile welche keinen Einfluss auf den Code hat.
Die Formatierungseinstellungen von timedeltas ist sehr eingeschränkt, so dass man da mit Stringmanipulation herummurksen muß. Einen str-Aufruf in einem Formatstring wäre mit schon zu viel Logik, zumal Du nichts anderes machst, als einen String damit auszugeben. Ohne sleep wird zu viel ausgegeben, so dass die Ausgabe nicht mehr mit der Zeit hinterherkommt und damit die Sekunden unregelmäßig ablaufen.
@03Leon01: zum Umrechnen ist divmod sehr praktisch. Für Zeitabläufe ist time.monotonic besser.
Die Zeit die während des Laufens der Stoppuhr angezeigt wird ist dann evtl. nicht exakt die Richtige, aber die Zeit die als Ergebnis rauskommt ist doch definitiv die Richtige, oder? Da spielt ja die Logik im Formatstring keine Rolle mehr.
Moin,
Ich bedanke mich bei euch, die Hilfestellung mit dem divmod und time.monotonic habe ich mir weiter zu nutze gemacht und es funktioniert jtz alles wie ich mir das vorgestellt habe.
Dankeschön.