typeError: unsupported operand type

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
michi-monster
User
Beiträge: 48
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

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)
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@michi-monster: die Fehlermeldung ist doch eindeutig. `input` liefert einen String, somit ist `einkaufspreis` ein String und kann nicht von einer Zahl abgezogen werden.
Benutzeravatar
michi-monster
User
Beiträge: 48
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

Ja, ok. - aber wie löse ich das Problem ?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
michi-monster
User
Beiträge: 48
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

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)
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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())
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

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: "))
When we say computer, we mean the electronic computer.
Antworten