Verschachtelte Funktionen funktionen bei Python (Spyder) nicht?
Hey ich programier gerade mein erstes Text Based Adventure Game in Python. Ich benutzte das IDE Spyder. Mir ist jetzt schon öfter aufgefallen das, wenn ich zu viele Funktionen ineinander aufrufe, das ganze nicht mehr funktioniert. Bisher konnte ich das Problem immer gut umgehen aber das geht bei diesem Projekt leider nicht mehr. Der Code ist richtig und müsste theoretisch auch funktionieren.. (Könnte das ein fehler des IDE sein?)
zB
Funktion 1 führt zu einer der Funktionen 1.1 bis 1.5 welche wiederum entweder zu Funktion 1 zurück oder zu Funktion 2 führen.
Funktion 1 ist der Start und Funktion 2 das Ende die Funktionen 1.1 bis 1.5 sind zwischenschritte die entweder zum Ende (Funktion 2) oder zurück zum Anfang (Funktion 1) führt.
Ich dachte eig das es ein übersichtliche lösung wäre in dem Main code jeweils nur einzelne Funktionen auszuführen die ich dann weiter unten definier.
hat das ein grund das dass nicht funktioniert?
Ich kenne mich mit dem ganzen leider noch nicht so gut aus da ich vor kurzem erst angefangen hab mir python beizubringen und allgemein relativ unerfahren bin was programmieren angeht.
Grüße Jonas
Code: https://pastebin.com/FFvVkezE
PW: 0ZA4LK7iie
2 Antworten
Ich habe mal ein paar Fragen neu Formatiert und angeordnet. Zudem hab ich ein paar Fehler/Verbesserungsvorschläge eingebracht.
Da dein Programm schon sehr umfangreich ist habe ich nur ein Teil neu formatiert, aber du kannst dort bestimmt ein Muster sehen, welches du in deinem Code verbessern kannst
Wenn du Fragen hast, dann kannst du einfach fragen
(Könnte das ein fehler des IDE sein?)
Die IDE ist nur der Editor ... Im Hintergrund wird das "normale" Python aufgerufen, das eben auf dem System zu finden ist.
Wenn also etwas bei dir nicht funktioniert, wird es wohl ein Problem im Code geben
Der Code ist richtig und müsste theoretisch auch funktionieren..
Das ist immer das, was man zuerst hört - bis man den Code dann sieht und dutzende Fehler und Probleme erkennt. Aber ohne Code lässt sich das nicht bewerten. Lade diesen doch bei z.B. pastebin / hastebin / github hoch und teile ihn
Funktion 1 führt zu einer der Funktionen 1.1 bis 1.5 welche wiederum entweder zu Funktion 1 zurück oder zu Funktion 2 führen.
Funktion 1 ist der Start und Funktion 2 das Ende die Funktionen 1.1 bis 1.5 sind zwischenschritte die entweder zum Ende (Funktion 2) oder zurück zum Anfang (Funktion 1) führt.
Wie genau handhabst du das? Mit Funktionsaufrufen von 1.1-1.5 auf 1 / 2 oder per "return"? Ersteres könnte zu Problemen führen und auch bei Zweiterem sollte korrekt mit umgegangen werden
Ich dachte eig das es ein übersichtliche lösung wäre in dem Main code jeweils nur einzelne Funktionen auszuführen die ich dann weiter unten definier.
Ist es auch. Wiederholender Code sollte - wenn möglich - in Funktionen ausgelagert werden, damit nicht alles in main steht und der Programmabluaf übersichtlicher ist
Hast du eigentlich wirklich eine "main"-Funktion oder meinst du mit "Main Code" eben Code, welcher einzeln - ohne Funktion - darsteht? Wenn letzeres, würde ich dir bei Python folgendes Konstrukt empfehlen:
def main():
# Programmablauf
if __name__ == "__main__":
main()
das ganze lässt sich natürlich noch weiter anpassen, aber damit ist jeglicher Code dann - bis auf den initialen Aufruf der Main-Methode - in einer Funktion und es kommt auch nicht zu ungewollten Nebeneffekten, wenn man das Skript importiert
hat das ein grund das dass nicht funktioniert?
Fehler in der Programmierung
Ich kenne mich mit dem ganzen leider noch nicht so gut aus da ich vor kurzem erst angefangen hab mir python beizubringen und allgemein relativ unerfahren bin was programmieren angeht.
Siehe mein Kommentar weiter oben zu "Der Code ist richtig und müsste theoretisch auch funktionieren". Gerade als Anfänger mit einer unbekannten Sprache denkt man, dass etwas funktionieren sollte, aber es funktioniert in der Sprache oder allgemein in der Logik eben nicht so, wie du es erwartest
Ich habs doch gleich gemacht aber nichts gekürzt (ich dachte das wäre besser für die verständlichkeit) aber sag bescheid wenn ichs noch machen soll
ok ;) vielen dank für deine Antwort. Ich würde den code aufs wesentliche kürzen und hochladen. Ich muss schauen wann ich neben uni usw dazukomme