Python while-/ if-Schleifen?
Also ich versuche, eine Schleife aufzusetzen, damit es an einem Punkt aufhört.
Demonl = 15
Deinl = 15
Deins = 10
if Deinl <= 0:
break print("Du wirst von einem Räuber überfallen vor deinem Haus deine Familie ist auch da")
wahl = input("[1] Du verfolgst ihn und lässt deine Familie zurück\n [2] Du bleibst bei deiner Familie um sie zu beschützen.")
if wahl == "1":
print("Du hast es versucht und warst zu langsam jetzt kehrst du zurück nachhause.")
elif wahl == "2":
print("Du hörst geräusche zuhause und gehst raus um alle zu beschützen.")
if wahl == "2":
wal = input("Was nimmst du mit? \n [1] Einen Dolch. \n [2] Ein mysteriöses Schwert.")
if wahl == "1":
print("Zuhause angekommen ist keiner mehr da.")
wa = input("Wohin gehst du?:[1] Du gehst in den Keller \n [2] Du gehst in den Dachboden in dem es Nach Blut riecht.")
if wa == "1":
print("Der Keller ist leer...")
if wa == "2":
print("Ein mysteriöses etwas hat dich gefressen du bist tot...")
Deinl -= 16
Was ist daran falsch? Ich versuche nach Ein mysterioses etwas hat dich gefressen aufzuhören mit dem.
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.
ich bin das auf meinem Handy Account vielen dank für die Gute erklärung konnte das so nirgends finden/ deinl sollte Deinleben bedeuten