Seite 1 von 1
Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 18:51
von Taioft
Guten Abend, zur aller erst, ich bin ein Programmierneuling. Mein Problem ist, dass ich mehrere Python Programme für die Uni geschrieben habe und die soweit auch bei Notepad++ so funktionieren, wie sie auch sollen. Aber wenn ich die Dateien aus dem Ordner starte und meine input eingaben "erledige" schießt das Eingabefenster und bekommen meinen print nicht.
Danke schon mal für eure Hilfe.

Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:00
von __deets__
Bitte zeig mal eines der Programme um das es geht.
Und wie *genau* startest du das Programm? Was gibst du ein in der Shell?
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:08
von Taioft
Naja ich mache einen Doppelklick auf die Datei, so dass sich glaube der Python Interpreter öffnet.
x = input("Geschaetzte Stundenzahl(0-23) in Seoul: ")
y = input("Geschaetzte Minutenzahl(0-59) in Seoul: ")
z = int(x)*60 + int(y)
zD = z + 420
if zD < 1440:
zS = zD//60
zM = zD%60
if zM<10:
zM = "0"+str(zM)
t = str(zS) + ":" + str(zM)
print("Ankunftszeit in Deutschland: " + str(t))
else:
zD = zD - 1440
zS = zD//60
zM = zD%60
if zM<10:
zM = "0"+str(zM)
t = str(zS) + ":" + str(zM)
print("Ankunftszeit in Deutschland: " + str(t))
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:10
von __deets__
Da kommt's dann drauf an, wer sich fuer die Dateiendung .py verantwortlich fuehlt. Und das kann ggf. Python 2 sein, aber du schreibst Python 3 - oder umgekehrt. Und dann geht das in die Hose. Versuch bitte stattdessen die Eingabeaufforderung. Ein simples meinprogramm.py sollte dem Doppelklick gleichkommen, aber hoffentlich einen Fehler zeigen (und nicht einfach verschwinden). Und "python meinprogramm.py" (ohne Anfuehrungszeichen, und ggf. vollen Pfaden zu sowohl Python als auch dem Programm) kannst du auch mal ausprobieren.
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:18
von Taioft
Wie genau starte ich meine Datei über die Eingabeaufforderung?
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:45
von Fire Spike
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:52
von Taioft
can't find '__main__' module in... , das steht dann bei mir
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:54
von __blackjack__
@Taioft: Bitte genau was Du eingegeben hast und genau was dann daraufhin ausgegeben wird. Nicht abtippen sondern kopieren.
Edit: Und bei dem Programm solltest Du dann dringend vernünftige Namen verwenden, diese gruselige `str()` und ``+`` Kombination durch Zeichenkettenformatierung mit der `format()`-Methode oder f-Zeichenkettenliteralen ersetzen, und das ``if``/``else`` loswerden. Oder zumindest nicht in beiden Zweigen fast das gleiche stehen haben. Wobei Du die Modulo-Operation bereits kennst. Die `divmod()`-Funktion solltest Du Dir mal anschauen. Oder gleich das `datetime`-Modul.
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 19:57
von Taioft
C:\Users\taita>Python C:\Users\taita\OneDrive\Desktop\Uni Python\Übung01\Aufgabe_1.py
C:\Users\taita\AppData\Local\Programs\Python\Python37\python.exe: can't find '__main__' module in 'C:\\Users\\taita\\OneDrive\\Desktop\\Uni'
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 20:02
von __blackjack__
@Taioft: Du gibst da mehr als einen Dateinamen an: C:\Users\taita\OneDrive\Desktop\Uni und Python\Übung01\Aufgabe_1.py. Python versucht dann das erste auszuführen und übergibt das zweite als Argument. Du brauchst entweder Anführungszeichen um den Dateinamen mit dem Leerzeichen, oder Du nennst denn "Uni Python"-Ordner so um, dass er kein Leerzeichen enthält.
Oder Du wechselst vorher in das Verzeichnis und gibst dann nur noch den Dateinamen an.
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 20:04
von Sirius3
Das Problem ist, dass Du Leerzeichen in Deinem Verzeichnisnamen hast.
Am besten ist es, nach C:\Users\taita\OneDrive\Desktop\Uni Python\Übung01 zu wechseln und dort ›python Aufgabe_1.py‹ einzugeben.
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 20:09
von Taioft
Nach dem ich das Leerzeichen bei dem Ordner "Uni Python" entfernt habe, klappt es. Jetzt funktioniert es auch genau so, wie es soll. Danke
Und auch danke für tippy beim programmieren an sich, da werde ich mich ran setzen.

Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 20:21
von __blackjack__
Da der Zeitunterschied zwischen Seoul und Deutschland momentan 7 Stunden, also 420 Minuten beträgt, möchtest Du vielleicht neben dem `datetime`-Modul noch das externe `pytz`-Modul verwenden. Dann ist die Rechnung auch unabhängig von Faktoren wie Sommer/Winterzeit die etwas an den 420 Minuten ändern können, richtig.
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 20:34
von Sirius3
Ein paar Tipps zu Deinem Code: erstmal steht im if-Block fast das selbe wie im else-Block. Das gemeinsame kann man einmal danach schreiben:
Code: Alles auswählen
x = input("Geschaetzte Stundenzahl(0-23) in Seoul: ")
y = input("Geschaetzte Minutenzahl(0-59) in Seoul: ")
z = int(x)*60 + int(y)
zD = z + 420
if zD < 1440:
pass
else:
zD = zD - 1440
zS = zD//60
zM = zD%60
if zM<10:
zM = "0"+str(zM)
t = str(zS) + ":" + str(zM)
print("Ankunftszeit in Deutschland: " + str(t))
Jetzt ist der if-Block überflüssig und man kann einfach die if-Bedingung umdrehen.
Wenn man Zahlen ausgeben will, benutzt man String-Formatierung, dann kann man auch gleich angeben, dass man führende Nullen haben will.
Code: Alles auswählen
x = input("Geschaetzte Stundenzahl(0-23) in Seoul: ")
y = input("Geschaetzte Minutenzahl(0-59) in Seoul: ")
z = int(x)*60 + int(y)
zD = z + 420
if zD >= 1440:
zD = zD - 1440
zS = zD//60
zM = zD%60
print("Ankunftszeit in Deutschland: {}:{:02d}".format(zS,zM))
Will man Teilen und Module gemeinsam ausrechnen, nimmt man divmod. Die Variablen könnten noch besser benannt sein.
Code: Alles auswählen
stunden_seoul = input("Geschaetzte Stundenzahl(0-23) in Seoul: ")
minuten_seoul = input("Geschaetzte Minutenzahl(0-59) in Seoul: ")
minuten_gesamt_seoul = int(stunden_seoul)*60 + int(minuten_seoul)
minuten_gesamt_berlin = minuten_gesamt_seoul + 420
if minuten_gesamt_berlin >= 1440:
minuten_gesamt_berlin -= 1440
stunden_berlin, minuten_berlin = divmod(minuten_gesamt_berlin, 60)
print("Ankunftszeit in Deutschland: {}:{:02d}".format(stunden_berlin, minuten_berlin))
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 20:49
von Sirius3
Das ganze mal mit den richtigen Werkzeugen für Zeitrechnungen:
Code: Alles auswählen
from datetime import datetime as DateTime, timedelta as TimeDelta
import pytz
flugzeit = TimeDelta(hours=15)
zeitzone_berlin = pytz.timezone('Europe/Berlin')
zeitzone_seoul = pytz.timezone('Asia/Seoul')
uhrzeit_seoul = input("Startzeit in Seoul (HH:MM): ")
uhrzeit_seoul = zeitzone_seoul.localize(DateTime.strptime(uhrzeit_seoul, '%H:%M'))
uhrzeit_berlin = uhrzeit_seoul.astimezone(zeitzone_berlin) + flugzeit
print("Ankunftszeit in Deutschland: {:%H:%M} Uhr".format(uhrzeit_berlin))
Re: Python Programm stürzt ab, funktionier aber in Notepa++
Verfasst: Mittwoch 30. Oktober 2019, 22:01
von __blackjack__
@Sirius3: Da fehlt noch ein `zeitzone_berlin.normalize()` auf das Ergebnis der Addition wenn ich die `pytz`-Dokumentation richtig verstanden habe.