Nummer wird nicht anerkannt python was tun?
Ich habe Python geschrieben und mein Programm soll Nummern erkennen. Wenn ich aber 6 eingebe wird es nicht anerkannt, es heißt, es wäre keine. Umgekehrt habe ich es probiert, damit liefert es mir den Fehler, dass ich nicht Wörter mit nummern verrechnen kann. Hilfe :=-(
Anfangspreis = 4.80
Kilometer = input("Bitte Kilometer angeben")
Kosten = 2.10
if Kilometer == int():
print ("Deine Kosten sind", Anfangspreis + Kosten * Kilometer)
else:
print ("Du musst eine Nummer eingeben!")
Es sieht so aus, als hätte guterfrager5 Recht. Mein Programm hat selbst eine Zahl als String gezählt. Das ging nicht, weil ich rechnen wollte. Sein Kommentar hat geholfen.
kannst du mal probieren, ob es geht, wenn du es so schreibst?
Kilometer = int(input("Butte Kilometer angeben"))
hab aber mit Python eigentlich nix am Hut sorry :D
Gute Idee. Ich hätte eigentlich lieber eine Fehlermeldung, die man versteht, aber ok.
3 Antworten
print(type(kilometer))
Ausgabe ist <str>, da input() dir einen String zurückliefert.
An dieser Stelle musst du nach float oder double casten, ValueError auslösen und abfangen, wenn du Exception-Handling betreiben möchtest.
try:
anfangspreis = 4.80
kilometer = float(input("Bitte Kilometer angeben: "))
kosten = 2.10
print ("Deine Kosten sind", anfangspreis + kosten * kilometer)
except ValueError:
print ("Du musst eine Nummer eingeben!")
So kann man nicht prüfen ob eine Variable eine Zahl ist
if Kilometer == int():
Du kannst z.b. mit
Kilomenter.isDigit()
prüfen ob der String eine Zahl ist. Das geht dann aber nur für Ganzzahlige positive Zahlen.
Besser wäre ein regulärer Ausdruck
import re
pattern = r'^-?\d+(\.\d+)?$'
if re.match(pattern, Kilometer):
Übrigens solltest du deine Variablen nicht mit einem Großbuchstaben am Anfang benennen, sondern nur in Kleinbuchstaben oder "dromedar case". Namen mit Großbuchstaben am Anfang werden für Klassen verwendet.
Weil du es noch in int umwandeln musst, ohne Umwandlung ist es ein String und den kannst du nicht einfach mit einer Zahl multiplizeren
Kilometer = int(Kilometer)
Input liefert in Python immer einen String zurück.
Willst du diesen String für Berechnungen verwenden, wirst du um eine Umwandlung von String in deinen benötigten Zahlentypen nicht herum kommen.
if Kilometer == int():
Kilometer ist an dieser Stelle kein Int, sondern String.
Sinniger wäre also
if int(kilometer):
womit True zurückgegeben wird, wenn Kilometer als Integer zurückgegeben werden kann und False, wenn Kilometer Zeichen enthält, die nicht als Zahl interpretierbar sind.
Und unmittelbar danach solltest du dann das Typecasting einfügen, damit in der anschliessenden Berechnung auch tatsächlich eine Zahl in Kilometer vorhanden ist. Multiplikation mit Strings wird lustige Ergebnisse erzielen.
int(Kilometer) wird einen Typecast versuchen und innerhalb der Kontrollstruktur True oder False zurückgeben.
Wie gesagt, int() von einem String der keine Zahl repräsentiert wirft einen Fehler aus. Probier es selber
https://www.w3schools.com/python/trypython.asp?filename=demo_ref_int2
It still doesn't work and gives this error: