Gibt es in Python einen goto Befehl?

3 Antworten

Hallo gerlochi,

hast also Python probiert, wunderbarst. Ich will nicht wie die anderen anfangen von wegen "goto ist .." aber ein berühmter Programmierer namens "Edsger W. Dijkstra" meinte mal: "Goto users will burn in hell". Das kannst du dir als T-Shirt kaufen, anziehen und wenn du programmierst immer mal auf deine Brust runterschauen.

Es gibt Programmierparadigmen die 2 wichtigsten sind strukturierte und objektorentierte Programmierung. Das heißt, dass ein bestimmter Stil möglichst eingehalten wird und das Programm eine Konsitenz bekommt. Irgendwo durch den Quelltext huppen bis man nicht mehr weiß was da passiert ist mist.

Objektorientiert musst du anfangs nocht programmieren aber strukturiert MUSS drin sein. Das heißt, dass du wiederkehrenden Code in Funktionen (Unterprogrammen mit Parametern) auslagerst, Schleifen und Verzweigungen benutzt...

Du tust dir damit einen Gefallen, ich weiß noch wie grauenhaft das C64 Basic war :D (selbst da gabs ne Art Prozedur aufruf.. aber die Zeilennummer musste gleich bleiben, das war die Hölle).

Versuche bei deinen Problemen umzudenken und "normale", gute Lösungen zu finden. Und vorallem: bleib dran. Statt jetzt irgendwas mit Android zu machen (siehe neuste Frage... Das brauchst das Android Studio und Ahnung, da ist alle objektorientiert und du wirst nicht durchsehen... und nein GOTO gibts da erstrecht nicht), bleib bei Python und mach meinetwegen erstmal ein "Zahl erraten"-Spiel..
Also so hier (Spieloutput):

Zahl eingeben: 5
Kleiner!
Zahl eingeben: 3
Größer!
Zahl eingeben: 4
Richtig! Du hast 3 Versuche gebraucht

Hallo gerlochi,

Python hat keinen goto-Befehl. Goto ist auch nicht empfehlenswert, weil es oftmals zu Spaghetti-Code führt.

Hättest du auch einfach selbst herausfinden können ;-)

http://stackoverflow.com/questions/18863309/the-equivalent-of-a-goto-in-python

Grüße - bormolino

Woher ich das weiß:Studium / Ausbildung – B.Sc. Informatik mit FR Software Engineering

gerlochi 
Beitragsersteller
 24.06.2015, 21:01

warte ich versuch mal was...

0
gerlochi 
Beitragsersteller
 24.06.2015, 21:05
@bormolino
ende = 13
    auswahl = 0

    while auswahl != ende:
auswahl = int(input("Auswahl= "))
if auswahl == 1:
print "h"
break
0
bormolino  24.06.2015, 21:13
@gerlochi

Erstmal solltest du den Code richtig einrücken, das ist bei Python sehr wichtig. Wenn du dann noch print() so verwendest, wie ich es in dem Beispiel getan habe, sollte es laufen. Hier mal die Korrektur:

ende = 13
auswahl = 0
while auswahl != ende:
auswahl = int(input("Auswahl= "))
if auswahl == 1:
print("h\n")
break
0
gerlochi 
Beitragsersteller
 24.06.2015, 21:01

mache das über app 😯

0
gerlochi 
Beitragsersteller
 24.06.2015, 20:55

leider konnte ich das nicht so untereinander machen

0
bormolino  24.06.2015, 20:59
@gerlochi

Wenn du den Code richtig über "Codebeispiel einfügen" formatierst, kann ich dir das eventuell beantworten.

1
gerlochi 
Beitragsersteller
 24.06.2015, 20:55

was ist der fehler? ich seh in nicht: ende = 13 auswahl = 0 while auswahl != ende: auswahl = int(input("Auswahl= ")) if auswahl == 1: print "h"

0
gerlochi 
Beitragsersteller
 24.06.2015, 20:41

Ok, danke

0
gerlochi 
Beitragsersteller
 24.06.2015, 20:26

Und woe, bin Anfänger

0
gerlochi 
Beitragsersteller
 24.06.2015, 20:22

Gibt es eine alternative?

0
bormolino  24.06.2015, 20:24
@gerlochi

Du könntest Funktionen erstellen und diese an geeigneter Stelle aufrufen.

2
gerlochi 
Beitragsersteller
 24.06.2015, 20:22

Danke

0

Du scheinst nicht wirkich was von Programmieren zu verstehen wenn du in jeder Sprache einen Goto Befehl suchst.

Das ist 80er Jahre Style und heute ein NoGo. Sowas gehört nicht dazu oder qualifiziert eine Sprache.


gerlochi 
Beitragsersteller
 24.06.2015, 20:37

Wenn es alle nervt frage ich anders...

0
CSANecromancer  25.06.2015, 00:20
@gerlochi

Und das soll genau was ändern?

Willst du wirklich "kluge" Ratschläge von Leuten, die kein GOTO-Konstrukt erkennen, bloß weil du es in andere Worte kleidest?

Kurz, knapp und bündig:

Der GOTO-Befehl ist ein Konstrukt aus längst vergangenen Tagen. Auch wenn hier und da mal jemand was von einer Ausnahme reden wird, wo ein GOTO vielleicht einsetzbar ist und sogar noch Sinn macht - DU wirst mit diesen Ausnahmen mindestens die nächsten 10 Jahre GANZ sicher nicht in Berührung kommen.

Wenn du also Programmieren lernen willst (und nicht nur stupides Ab- bzw. Nachtippen von Tutorials oder Videobeispielen), dann tue dir selbst einen Gefallen und lerne, deine programmtechnischen Problemlösungen (umgangssprachlich: Programme) so umzuformulieren, dass du kein GOTO benötigst. Das geht in so ziemlich jeder Sprache. Allerdings kannst du eine solche Umformulierung nur dann machen, wenn du tatsächlich wenigstens die Grundprinzipien und Befehle einer Sprache kennst.

Solltest du aber uuuuunbedingt und zwingend und aber-ich-will an deinem GOTO festhalten wollen: Lern' Assembler. Da ist ein GOTO (in verschiedenen Varianten, wenn man es so nennen will) das tägliche Brot und absolut nichts Ungewöhnliches.

Aber in allen Hochsprachen outet dich die Verwendung von GOTO sofort als blutigsten Anfänger, der erst nochmal seine Grundlagen lernen sollte, bevor man sich seiner weiteren Probleme annimmt.

(Und für die gaaanz genauen Ameisentätowierer: Wenn ein Wizard einen GOTO einsetzt, dann sehe ich das am Rest des Codes. Der sieht dann nämlich unter Garantie anders aus (z.B. automorph) als der eines N00bs.)

2
gerlochi 
Beitragsersteller
 21.08.2015, 22:56
@CSANecromancer

Ich bin jetzt weg von der Stapelverarbeitungsdateiprogrammierung (wenn man es ueberhaupt so nennt ;)). Ich programmiere jetzt (erfolgreich) Java.

0
gerlochi 
Beitragsersteller
 24.06.2015, 20:37

Bin Anfänger und neu auf dem gebiet programmieren

0
EightSix  24.06.2015, 21:28
@gerlochi

Dann lern Programmieren - da wird Goto nie gebraucht. Batch"programmierung" ist was anderes.

1