Was bedeutet ValueError: invalid literal for int() with base 10: '1,80'?
Hallo, ich code gerade einen BMI-Rechner und es klappt einfach nicht.
4 Antworten
Der Fehler kommt, weil du versuchst eine Fließkommazahl (die größe, 1,80) in einem Integer abzuspeichern, der nur für ganze Zahlen ist... Du hast zwei Möglichkeiten das zu beheben:
1. Du lässt die Angabe nicht in Metern sondern in cm machen, erhältst also 180
2. Du erstellst die Variable nicht vom typ int, sondern vom Typ float oder double, wobei float für diesen Zahlenbereich ausreichen sollte. Du schreibst also nicht
Körpergröße = int(input("Wie groß sind sie? Bitte in m angeben"))
Sondern:
Körpergröße = float(input("Wie groß sind sie? Bitte in m angeben"))
Hallo!
Zunächst einmal: Ich bin ebenfalls noch "Lehrling" in Sachen Python...
Du hast als Eingabe "1,80" getätigt.
Diesen String kann man nicht sinnvoll nach Integer wandeln.
Außerdem arbeitet Python bei Zahlen mit dem Dezimalpunkt und nicht mit dem Dezimalkomma.
Also, wenn/dann: "1.80".
Und das kann man per float() in eine Fließkommazahl wandeln und damit Berechnungen anstellen.
Nur wenn Du eine "ganze Zahl" (ohne Nachkommastellen) eingibst, kann man diese Eingabe per int() als Integer-Wert definieren. Dazu müsstest Du das Körpermaß in Zentimeter eingeben.
Man kann das aber als "Sonderfall" behandeln. Z.B. indem man das "," im String durch einen "." ersetzt.
https://www.python-lernen.de/string-replace.htm
Und dann wieder mit float() weiter machen.
Weitere "Spielereien" mit Strings:
https://www.python-lernen.de/string-methoden-uebersicht-is.htm
https://draeger-it.blog/python-4-umwandeln-von-zahlen-strings-und-listen/
(Eingabe-)Fehler als "Ausnahmefälle" abfangen und "behandeln" (try ... exept):
https://www.python-kurs.eu/ausnahmebehandlung.php
https://wiki.pythonde.pysv.org/try...except
Das ist vor allem bei Eingaben (zumindest "später") nahezu ein Muss. Man weiß nie, welcher "Blödsinn" hier eingegeben werden könnte...
Und den Print-Befehl könnte man hier auch ganz schlicht formulieren:
print("Ihr BMI-Wert: ", BMI_Wert)
https://www.python-kurs.eu/python3_print.php
(Diese Formatierungs-Variante mit den "f-Strings" war mir bis eben neu...)
https://zetcode.com/python/fstring/
Und so ganz nebenbei habe ich Dir die URLs zu diversen Python-Kursen, bzw. Nachschlagewerken genannt.
Ich hoffe, ich habe hier keinen Blödsinn geschrieben...
Gruß
Martin
Na weil das keinen Sinn macht?
Weißt du überhaupt was ein int ist?
Ints sind ganze zahlen, bedeutet du kannst dort nur ganze Meter angeben. 1 oder 2. Wäre sehr stark gerundet.
Du könntest mit Gleitkommazahlen arbeiten, oder du nimmst centimeter oder so.
Du wandelst in Zeile 3, den Wert in einen "int" um. Int sind ganze Zahlen. Allerdings gibst du dann "1,80" ein.
Mach die Angabe lieber in cm.