Seite 1 von 1

typeError: unsupported operand type

Verfasst: Sonntag 22. April 2018, 17:56
von michi-monster
Halli, ich bin am üben und bekomme einen Fehler bei mir nicht gelöst.
Ich erhalte die Meldung:

Code: Alles auswählen

[Traceback (most recent call last):
  File "/home/fridolin/python/abschreibung.py", line 6, in <module>
    gesamt= einkaufspreis - abschreibung
TypeError: unsupported operand type(s) for -: 'str' and 'int'
Ich will die Abschreibung mit 10 % berechnen. Daher habe ich einfach gedacht, ich nehme die Division mit 10. Irgendwo hab ich noch nen Denkfehler. Bitte helft mir mal.

Code: Alles auswählen

print ("Bitte geben Sie den Einkaufswert ein")
einkaufspreis=input()
print ("Bitte geben Sie die Laufzeit an")
laufzeit=input()
abschreibung=int(einkaufspreis) / 10
gesamt= einkaufspreis - abschreibung
print (gesamt)

Re: typeError: unsupported operand type

Verfasst: Sonntag 22. April 2018, 18:20
von Sirius3
@michi-monster: die Fehlermeldung ist doch eindeutig. `input` liefert einen String, somit ist `einkaufspreis` ein String und kann nicht von einer Zahl abgezogen werden.

Re: typeError: unsupported operand type

Verfasst: Sonntag 22. April 2018, 19:40
von michi-monster
Ja, ok. - aber wie löse ich das Problem ?

Re: typeError: unsupported operand type

Verfasst: Sonntag 22. April 2018, 19:42
von __deets__
Schau doch in deinen eigenen Code. An einer Stelle machst du das doch schon richtig. Du kannst entweder ueberall int(...) schreiben, oder (besser) die Umwandlung einmal machen, direkt nach der Eingabe. Dann kannst du es spaeter nicht mehr vergessen.

Re: typeError: unsupported operand type

Verfasst: Dienstag 1. Mai 2018, 11:59
von michi-monster
ok danke. Hab es wie folgt gelöst:

Code: Alles auswählen

print ("Bitte geben Sie den Einkaufswert ein")
einkaufspreis=input()
print ("Bitte geben Sie die Laufzeit an")
laufzeit=input()
abschreibung=int(einkaufspreis) / 10
gesamt= int(einkaufspreis) - (abschreibung)
print (gesamt)

Re: typeError: unsupported operand type

Verfasst: Dienstag 1. Mai 2018, 12:33
von __deets__
Gehen tut das, besser ist, die Wandlung EINMAL zu machen. Sonst vergisst du das bei der nächsten Verwendung wieder. Und mehr Arbeit ist es auch, sowie schwerer zu lesen und damit zu verstehen.

Code: Alles auswählen

einkaufspreis = int(input())

Re: typeError: unsupported operand type

Verfasst: Dienstag 1. Mai 2018, 12:41
von sls
Man kann sich auch überlgen, ob man die Abfrage des Einkaufspreises nicht in einem Rutsch erledigt:

Code: Alles auswählen

einkaufspreis = int(input("Bitte geben Sie den Einkaufswert ein: "))