Python If statement mit input() int/bool?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Dein Problem bei deinem Programm ist, dass es die falschen Datentypen verwendet. Bei Geld bietet sich Float am besten an, da es ja auch sein kann, dass es mit einem Komma ist.

Bei der Klimaanlage kann man den Typ bool( ) verwenden, aber ich würde dir eher raten, dass man ein deutsches Wort eingeben kann (und mit .lower( ) kleingeschrieben wird, un groß und Kleinschreibung zu vernachlässigen)

Zudem ist mir bei deinem Code aufgefallen, dass du Klimaanlage== True machst, was unnötig ist, da Klimaanlage schon ein boolean ist.

Wenn man das verbessert würde es so aussehen.

autopreis=float(input("Geben sie den Autopreis an "))

klimaanlage=input("Geben sie an ob eine Klimaanlage verbaut ist(ja/nein)").lower() == "ja"

if autopreis < 20000 and klimaanlage:      
     print("Auto kaufen")

elif autopreis > 20000 and klimaanlage:
    print("Auto wird nicht gekauft weil es zu teuer ist")

elif autopreis < 20000 and not klimaanlage:
   print("Auto wird nicht gekauft weil es keine Klimaanlage besitzt")
else:
   print("Auto wird nicht gekauft weil es zu teuer ist und keine Klimaanlage besitzt")

Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast kannst du sie einfach stellen.

LG

Woher ich das weiß:Hobby
Dennjooooo 
Fragesteller
 25.09.2022, 21:42

Hallo vielen Dank für dein Beispiel, eine Frage hätte ich noch und zwar: woher erkennt das Programm nun das klimaanlage nun ein "bool" ist da es ja nirgens als bool gekennzeichnet wurde und zweitens wie kann man das einstellen das wenn ich "ja" eingebe klimaanlage als wahr und bei "nein" klimaanlage als falsch gekenzeichnet wird?

1
Hanibal545  25.09.2022, 21:46
@Dennjooooo

Bei dem Beispiel ist es so, dass wenn ich nach dem input (der Input ist standartmäßig immer ein String) frage und ihr Kleinschreibe, es geschaut wird ob der input string und der String "ja" identisch ist. Wenn ja wird True und wenn nein False in die Variable geschrieben.

Viele schreiben es auch übersichtshalber so hin:

klimaanlage=input("Geben sie an ob eine Klimaanlage verbaut ist(ja/nein)")
klimaanlage = klimaanlage.lower() == "ja"
1

Dein Problem sind die Datentypen. 20000 ist ein Integer, True ist ein boolean. Deine Variablen autopreis und klimaanlage sind jedoch beides Strings (die zusätzliche Konvertierung mit str kannst du dir sparen, da input schon einen String zurückgibt).

Du solltest also die Eingaben erstmal zu passenden Typen umwandeln

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)