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.
Es wäre gut, wenn Du auch verraten würdest, was denn nicht funktioniert, also z.B. den SyntaxError, dass man `return` nicht außerhalb von Funktionen benutzen kann, was dann auch schon die Lösung für diesen Fehler wäre.
Dann solltest Du nie nakte excepts benutzen, weil die potentielle Programmierfehler verdecken könnten und nur die nichtsagende Meldung "Falsche Eingabe" ausgeben, die aber nie zutrifft, weil man alles eingeben kann, ohne dass eine Exception geworfen wird.
Sirius3 hat geschrieben: ↑Freitag 6. Juli 2018, 14:35
Es wäre gut, wenn Du auch verraten würdest, was denn nicht funktioniert, also z.B. den SyntaxError, dass man `return` nicht außerhalb von Funktionen benutzen kann, was dann auch schon die Lösung für diesen Fehler wäre.
Dann solltest Du nie nakte excepts benutzen, weil die potentielle Programmierfehler verdecken könnten und nur die nichtsagende Meldung "Falsche Eingabe" ausgeben, die aber nie zutrifft, weil man alles eingeben kann, ohne dass eine Exception geworfen wird.
Danke für die Antwort, kannst du mir villeicht auch sagen wie das Programm jetzt umgeschrieben werden muss?
Sirius3 hat geschrieben: ↑Freitag 6. Juli 2018, 14:53
Was willst Du denn mit den `return` bewirken?
Das ich zum Beispiel die 0 von Addieren mit der 1 überschreibe, sodas es nicht nur in der Schleife ist. Habe ich die Funktion von return falsch verstanden?
Was Du erreichen willst, habe ich nicht wirklich verstanden, aber ``return`` ist, wie die Fehlermeldung ja schon sagt, eine Anweisung die nur innerhalb von Funktionen (und Methoden) stehen darf. Dort beendet sie die Abarbeitung der Funktion und gibt den Wert den man dahinter angibt an den Aufrufer der Funktion zurück.
Statt 0 und 1 zu verwenden und dazu zu kommentieren das 0 Nein und 1 Ja bedeuten soll, verwendet man `True` und `False`. Da ist dem Leser dann auch klar was davon was bedeutet und man weiss auch sofort das es sich nicht um Zahlen handelt.
In den letzten ``else``-Zweig in dem Quelltext wolltest Du bestimmt keinen `NameError` schreiben, denn `none` wird nirgends definiert, sondern den das ``else`` einfach komplett weg lassen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Schleifen bilden keinen eigenen Namespace, das heißt, werde, die man einer Variable zuweist, sind auch außerhalb der Schleife bekannt. Also `return` weglassen und gut ist's.
Was noch nicht so gut ist, sind neben den 0 und 1 auch die Variablennamen. `FallsAllesFalschSchleife` ist ja keine Schleife und auch keine Bedingung, sondern der Zustand `soll_scheife_wiederholt_werden_weil_keine_rechenoperation_ausgewaehlt_wurde` oder kurz `nichts_gewaehlt`. Die ganzen Frage-Variablen enthalten keine Frage, sondern die Antwort. Man braucht auch nicht für jeden Abschnitt eine andere Variable, weil ziemlich klar ist, auf was sich die Antwort bezieht. Bei den ganzen Antwortmöglichkeiten fehlt jeweils noch der Fall, dass Werte mit »Ja« noch mit »Nein« geantwortet wurde.