Seite 1 von 1
can't multiply sequence by non-int of type 'float' Fehler?
Verfasst: Dienstag 29. Januar 2013, 16:29
von informatikking
Hallo,
leider finde ich bei dem simplen Beispiel den Fehler nicht!
Bitte um Hilfe!!
ein = input("Geben Sie eine Zahl ein: ")
c = ein*8.
print ("die Zahl mal 8 ist:"), c
Programm startet, doch dann kommt es zu folgender Fehlermeldung:
Geben Sie eine Zahl ein: 4
Traceback (most recent call last):
File "C:\Users\Me\Desktop\u1 1.1.py", line 5, in <module>
c = ein*8.
TypeError: can't multiply sequence by non-int of type 'float'
>>>
Re: can't multiply sequence by non-int of type 'float' Fehle
Verfasst: Dienstag 29. Januar 2013, 16:43
von JonasR
input gibt in python 3.x einen string zurück, diesen kannst du nicht mit einem float Multiplizieren... wie die Fehlermeldung schon sagt

Sprich, wandle die eingabe in ein int bzw float um.
BTW ist es gewollt das die 8 ein float ist, also ein punkt dahinter ist?
Re: can't multiply sequence by non-int of type 'float' Fehle
Verfasst: Dienstag 29. Januar 2013, 16:47
von /me
informatikking hat geschrieben:TypeError: can't multiply sequence by non-int of type 'float'
Du verwendest Python 3, oder?
input liefert dir dort immer einen String zurück. Mit einem String kannst du aber keine mathematischen Operationen durchführen.
Jetzt hast du allerdings im Code nicht
8 stehen, sondern
8. wodurch die Zahl von einem Integer zu einem Fließkommawert wird.
Code: Alles auswählen
>>> '4' * 8.
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
'4' * 8.
TypeError: can't multiply sequence by non-int of type 'float'
Was du eigentlich möchtest ist aber, dass der eingegebene Wert als Zahl behandelt wird. Dazu musst du ihn von einem String in eine Fließkommazahl konvertieren. Die Eingabe würe demnach so aussehen:
Hier kann es natürlich bei ungültigen Eingaben zu einem ValueError kommen. Diesen kann man dann bei Bedarf mit einem Exception-Handler abfangen.
Re: can't multiply sequence by non-int of type 'float' Fehle
Verfasst: Mittwoch 30. Januar 2013, 13:41
von informatikking
Vielen Dank für die Schnelle Hilfe. Ja, ich benutze Python 3.3.
Leider funktioniert die Ausgabe noch nicht.
Leider wird das Ergebnis nicht angezeigt. Kommt auch keine Fehlermeldung.
Woran liegt das?
Re: can't multiply sequence by non-int of type 'float' Fehle
Verfasst: Mittwoch 30. Januar 2013, 13:45
von informatikking
Alles klar! Habe selber den Fehler gefunden.
Ausgabe wie folgt:
print ("die Zahl mal 8 ist:"), print (c)
Re: can't multiply sequence by non-int of type 'float' Fehle
Verfasst: Mittwoch 30. Januar 2013, 13:50
von pillmuncher
Statt
muss es heißen:
Die erste Variante bedeutet: rufe die Funktion print mit dem Argument "die Zahl mal 8 ist:" auf, und bilde aus dem Egebnis dieses Aufrufs - d.i. None - zusammen mit c ein zwei-elementiges Tupel und dann verwirf dieses Tupel.