Python while-/ if-Schleifen?

1 Antwort

Dein Code ist seltsam. Wenn ich nur einmal diesen Abschnitt nehme:

Deinl = 15
Deins = 10

if Deinl <= 0:
  break
  print("D...")
  • Die Bedingung wird nie zutreffen, da die Variable Deinl zuvor explizit auf einen positiven Wert gesetzt wird.
  • Die meisten deiner Variablen haben einen Namen, mit dem man nicht viel anfangen kann. Was bspw. Deinl bedeuten soll, ist nicht ersichtlich.
  • Du verwendest ein break innerhalb des if-Körpers. Nun kann man vermuten, dass der gesamte Code innerhalb einer Schleife liegt. Das würde dann allerdings bedeuten, dass der Code nach break (aufgrund seiner Einrückung) nie ausgeführt werden würde. Egal, ob die Bedingung jemals erfüllt wird oder nicht.
(...) ich versuche nach Ein mysterioses etwas hat dich gefressen aufzuhören mit dem (...)

Du kannst jederzeit via break aus einer Schleife ausbrechen.

Für ein Textadventure würde ich mir eigentlich eher einen Graph basteln. Die einzelnen Knoten kann man miteinander verknüpfen, so wie man es braucht.

class waypoint:
  def __init__(self, text, choices = None):
    self.text = text
    self.choices = choices

  def walk_on(self):
    if self.choices:
      choice = int(input(self.text))

      if 0 <= choice and choice < len(self.choices):
        self.choices[choice].walk_on()
    else:
      print(self.text)

# usage:
at_home = waypoint("You arrived home.")
at_school = waypoint("You arrived school.")
start = waypoint("Go to home [0] or school [1].", [ at_home, at_school ])
start.walk_on()

Statt mit einer Klasse, wie im obigen Beispiel, könnte man so ein Programm auch mit einer Liste an Tupels lösen.

waypoints = [
  ("Go to Home [1] or School [2].", [ 1, 2 ]),
  ("Home", []),
  ("School", [])
]

Der erste Wert im Tupel beinhaltet die Nachricht, der zweite Wert eine Liste der möglichen Zielindizes. Du bräuchtest nun nur eine Funktion, die wie die obige walk_on die gewählten Wege abklappert. Der Startpunkt wäre natürlich der erste Eintrag der Liste.

PS. (bezüglich deines Fragetitels): Der Ausdruck if eröffnet eine Verzweigung, keine Schleife. Daher gibt es auch keine if-Schleifen.


xXThomas2005Xx  14.03.2022, 07:21

ich bin das auf meinem Handy Account vielen dank für die Gute erklärung konnte das so nirgends finden/ deinl sollte Deinleben bedeuten