Python-Skript beenden

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.
Antworten
WvonRiedi
User
Beiträge: 36
Registriert: Mittwoch 20. Januar 2021, 20:46

Ich bin 60 Jahre alt und möchte etwas programmieren lernen. Das eine oder ander habe ich schon gelernt.
Nun mein Problem: Ich möchte an einem bestimmten Punkt den Code verlassen.

Code: Alles auswählen

zahl_1 = 1
zahl_2 = 1

if zahl_1 == zahl_2:
   
    print("Beide gleich")
    exit                              # ab hier möchte ich den ganzen Code beenden

 # ab hier habe ich Code geschreiben der nicht ausgeführt werden soll
print("weitergemacht") 

Ich habe schon kill , break, (und ander die ich im Internet gefunden habe) versucht ohne Erfolg. Im Forum herum gelesen, jedoch nichts einfaches gefunden.
Es muss doch eine symplen Befehl geben um den Code zu beenden.
Danke für Eure Antwort
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

Sollte mit sys.exit() möglich sein.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Sollte man sich aber gut überlegen. Denn statt das Programm dort einfach zu beenden, und sich damit Möglichkeiten zu nehmen, könnte man den Programmfluss auch einfach so gestalten, dass er zu einem ”natürlichen” Ende kommt:

Code: Alles auswählen

zahl_1 = 1
zahl_2 = 1
if zahl_1 == zahl_2:
    print("Beide gleich")
else:
    print("weitergemacht")
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
WvonRiedi
User
Beiträge: 36
Registriert: Mittwoch 20. Januar 2021, 20:46

darktrym hat geschrieben: Mittwoch 20. Januar 2021, 23:59 Sollte mit sys.exit() möglich sein.
Danke, habe ich auch schon probiert erzeugt
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-4-58e0cdc873be> in <module>
5
6 print("Beide gleich")
----> 7 sys.exit() # ab hier möchte ich den ganzen Code beenden
8
9 # ab hier habe ich Code geschreiben der nicht ausgeführt werden soll

NameError: name 'sys' is not defined

--------------------------
Gruss Werner
WvonRiedi
User
Beiträge: 36
Registriert: Mittwoch 20. Januar 2021, 20:46

__blackjack__ hat geschrieben: Donnerstag 21. Januar 2021, 00:19 Sollte man sich aber gut überlegen. Denn statt das Programm dort einfach zu beenden, und sich damit Möglichkeiten zu nehmen, könnte man den Programmfluss auch einfach so gestalten, dass er zu einem ”natürlichen” Ende kommt:

Code: Alles auswählen

zahl_1 = 1
zahl_2 = 1
if zahl_1 == zahl_2:
    print("Beide gleich")
else:
    print("weitergemacht")
Danke für die Antwort.
Habe ich auch schon gemacht, jedoch hat mein Code über 150 Zeilen und mit der Einrückung des restlichen Codes entstehen Fehler.
Ist mir erst am Ende des Codes aufgefallen :( , dass ich das Programm nicht mehr ausführen soll wenn der Code schon einmal ausgeführt wurde.
Gruss Werner
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@WvonRiedi: Du musst die Beiträge nicht komplett zitieren, die stehen doch direkt über Deiner Antwort.

Ich sehe keine Gründe das nicht mit ``else`` zu lösen in Deiner Antwort. Wie viele Zeilen das sind ist egal und es entstehen auch keine Fehler durch das einrücken die nicht schon vorher da waren. Das wären Argumente wenn Einrücken bedeuten würde man würde jede einzelne der 150 Zeilen einzeln einrücken in dem man in jeder Zeile vier Leerzeichen vorne eintippt. Das macht man aber nicht. Man markiert die 150 oder wieviele auch immer Zeilen und drückt dann *einmal* die Tab-Taste. Oder was immer der Editor oder die IDE der Wahl für's einrücken von markierten Zeilen vorgesehen hat.

150 Zeilen sind eventuell auch etwas viel für *eine* Funktion. Das steht doch in einer Funktion? Falls nicht: sollte es.

`sys.exit()` sollte man in der Regel nur in der Hauptfunktion verwenden und auch dort nur falls es mindestens die Möglichkeit gibt, das man da einen anderen Rückgabecode als 0 haben kann. Denn dafür ist die Funktion da: um einen Rückgabecode an den Aufrufer übermitteln zu können. Alles andere riecht nach „keine Lust gehabt sich über den Programmablauf Gedanken zu machen und eine schmutzige Abkürzung gesucht.“
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
WvonRiedi
User
Beiträge: 36
Registriert: Mittwoch 20. Januar 2021, 20:46

Danke für Deine Antwort. Nachdem ich den "Codeschnipsel" welcher einen Fehler verursachte in ein .py Datei geschrieben habe klappe es mit der Else Variante.
......„keine Lust gehabt.......
Das hat nichts damit zu tun, ich bin noch am lernen und habe halt immer wieder neue Erkenntnisse in den Code eingeführt.
BT72
User
Beiträge: 8
Registriert: Samstag 23. Januar 2021, 12:21

probiere mal

Code: Alles auswählen

raise SystemExit
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@BT72: Warum? Dafür ist `sys.exit()` vorgesehen und wo man `sys.exit()` nicht verwenden sollte, sollte man natürlich auch nicht selbst Teile davon nachprogrammieren.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten