Corni hat geschrieben:Hallo,
kann mir jemand sagen, warum folgendes nicht funktioniert bzw. Teil 2 funktioniert. Bereite mich gerade auf meine mdl. Prüfung vor und wäre für eure Hilfe sehr dankbar
Sehr gerne...
Code: Alles auswählen
x = int(raw_input("Eingabe: ")) # funktioniert nur bei Eingabe eines integers, Fehler bei z.B. 4.0
x = '4.0' # type(x) = str
x = int(x) # FEHLER
x = float(x) # OK
x= '4' # type(x) = str
x= float(x) # OK
Gehen wir das mal einzeln durch:
Code: Alles auswählen
x = int(raw_input("Eingabe: ")) # funktioniert nur bei Eingabe eines integers, Fehler bei z.B. 4.0
Klar. Denn 'int()' wandelt immer in eine Ganzzahl um.
Der Traceback sagt es eigentlich schon ganz gut:
Code: Alles auswählen
>>> x = "4.02"
>>> x = int(x)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
x = int(x)
ValueError: invalid literal for int() with base 10: '4.02'
Allerdings würde folgendes klappen:
Das sieht mir aber nicht nach einer guten Lösung aus... weiß nur grad nichts anderes
Hast du etwas anderes erwartet?
In Python werden Strings durch einzelne Hochkommata oder doppelte begrenzt. Daher ist ist '4.0' folglich ein waschechter String.
Schau dir mal den Fehler an

Dann weißt du, warum

Ist exakt das gleiche wie oben mit dem '' int(raw_input("Eingabe:")) ''
Weil... 4.0 ein Float ist.
Aber so wie es mir ausschaut, kommt die Funktion 'int' nicht mit Strings klar. Float kann ja die zahlen wunderbar aus Strings konvertieren... Bug oder Feature?
Klar... ersteres ham wa ja schon geklärt.
Und das darunter würde auch mit '' int(x) '' klappen.
Jede ganze Zahl ist ohne Einschränkungen in eine Kommazahl (float) umwandelbar. Daher klappt das ebenfalls wunderbar.
Ich hoffe, ich rede nicht zu viel Stuss bzw. konnte dir ein wenig Helfen.
Vielen Dank vorab. Gruß, Cornelius
Gruß zurück!