Py Wirtschaft Programm?
ich verstehe die fehlermeldungen nicht.
import time
import random
immogeldg = 0
geld = 0
jn = "nein"
geldP = 0
immo = 0
immogeld = 0
print("Comannds:")
print("/work Du bekommst geld.")
print("/score Du siehst wie viel geld du besitzt.")
print("/buy Du kaufst Immobilien.")
while True:
com = input("->")
if com == "/work":
geldP = random.randint(20.000,500.000)
geld = geld + geldP
print(f"+{geldP}€")
elif com == "/score":
print(f"Du besitzt {geld}€")
print(f"Du besitzt {immo} Immobilien im wer von {immogeldg}€")
elif com == "/buy":
immogeld = random.randint(200070,1500349)
jn = input(f"Möchtest du die Immobielie für {immogeld} kaufen? j/n")
if jn == "ja":
if geld < immogeld:
print(f"Du hast nur {geld}€, die Immobilie kostet {immogeld}." )
print("Verdiene Geld mit /work")
elif geld >= immogeld:
print(f"Du hast eine Immobilie für {immogeld} gekauft du besitzt noch {geld}€")
immo = immo + 1
immogeldg = immogeldg + immogeld
elif jn == "nein":
print("Der verkauf wurde abgebrochen.")
else:
print("error")
else:
print("Diesen Befehl kenne ich nicht.")
print("Comannds:")
print("/work Du bekommst geld.")
print("/score Du siehst wie viel geld du besitzt.")
print("/buy Du kaufst Immobilien.")
danke schonmal im voraus!
2 Antworten
Die Verschachtelungen deiner If-Abfrage ist falsch, bzw. die Einrückung.
dein elif und dein else stehen nicht in einer Linie mit dem if. Rücke das elif und else etwas mehr ein, sodass es in einer Linie mit dem if steht, dann klappt es.

Definiere okay ;) Er funktioniert und das ist ja schonmal die halbe Miete. Du könntest dir das hier mal angucken:
https://www.freecodecamp.org/news/python-switch-statement-switch-case-example/
Das ist eine sinnvolle Alternative um nicht mit so vielen ifs, elifs, elses zu arbeiten, denn das macht den Code schnell unübersichtlich.
Indent und Unindent
Python arbeitet gerne mit Einrückungen statt Klammern, damit Blöcke gebildet werden. Und dass deine Einrückungen nicht stimmen, sagen die Fehlermeldungen.
Und dieses "Conditional Monster" könntest du vllt umschreiben. Das ist selten, aber unschön :)
Ist etwas bearbeitet. Ich hoffe, es ist verständlich(er) :)
import random
immogeldg = 0
geld_insgesamt = 0
geld_verdient = 0
jn = "nein"
immo = 0
immogeld = 0
print("Commands")
print("/work Du bekommst geld.")
print("/score Du siehst wie viel geld du besitzt.")
print("/buy Du kaufst Immobilien.")
while True:
com = input("-> ")
match com:
case "/work":
geld_verdient = random.randint(500, 5000)
geld_insgesamt = geld_insgesamt + geld_verdient
print(f'Du hast {geld_verdient} € verdient!')
print(f"Du hast insgesamt {geld_insgesamt}€")
case "/score":
print(f"Du besitzt {geld_insgesamt}€")
print(f"Du besitzt {immo} Immobilien im wer von {immogeldg}€")
case "/buy":
immogeld = random.randint(2000, 15000)
jn = input(f"Möchtest du die Immobilie für {immogeld} kaufen? j/n")
if "ja" in jn:
if geld_insgesamt < immogeld:
print(f"Du hast nur {geld_insgesamt}€, die Immobilie kostet {immogeld}.")
print("Verdiene Geld mit /work")
else:
geld_insgesamt -= immogeld
print(f"Du hast eine Immobilie für {immogeld} gekauft du besitzt noch {geld_insgesamt}€")
immo = immo + 1
immogeldg = immogeldg + immogeld
else:
print("Kauf abgebrochen!")
case _:
print("Diesen Befehl kenne ich nicht.")
Danke! War der Code ansonsten ok?