TypeError: unorderable types: str() <= int()

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:

So wie ich den Fehler verstehe,, meckert er, da kein Typ der Variablen erkannt werden kann (?)
Ich hab das Allerdings ganz simple aus nem Buch abgeschrieben. Kann / muss ich irgenwo / irgendwie den Typ angeben oder weshalb meckert er? Ich habe zum Test einfach nen String statt einer Zahl eigeben. Dennoch kommt der Fehler...

Code: Alles auswählen

alter = input("Alter: ")
if (alter <= 12) or (alter >= 65):
    eintritt = 3
else:
    eintritt = 5
print("Der Eintrittspreis beträgt für Sie", eintritt, "Euro.")

Code: Alles auswählen

fridolin@localhost ~/python $ python3 kapitel5-1.py 
Alter: 12
Traceback (most recent call last):
  File "kapitel5-1.py", line 2, in <module>
    if (alter <= 12) or (alter >= 65):
TypeError: unorderable types: str() <= int()
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du benutzt Python 3. Das Buch Python 2. Das ist ein Unterschied. input in 3 ist wie raw_input in 2: es konvertiert nicht. Was auch besser so ist. Damit ist deine Eingabe “12”, also ein STRING. Du vergleichst mit einer ZAHL, und das geht halt nicht.

Wandle die Eingabe vorher mit int(Eingabe) in eine Zahl um, dann geht’s.
Benutzeravatar
michi-monster
User
Beiträge: 48
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

ok , danke. Ich habe jetzt einfach int('alter") hinzugefügt. Jetzt meckert er immernoch. Ich habe aber keine andere Formatierung gefudnden. Wie muss ich das angeben? :-(

Code: Alles auswählen

alter=int('')
alter = input("Alter: ")

if (alter <= 12) or (alter >= 65):
    eintritt = 3
else:
    eintritt = 5
print("Der Eintrittspreis beträgt für Sie", eintritt, "Euro.")

fridolin@localhost ~/python $ python3 kapitel5-1.py
Traceback (most recent call last):
  File "kapitel5-1.py", line 1, in <module>
    alter=int('')
ValueError: invalid literal for int() with base 10: ''

__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das gehört ja auch NACH die Eingabeaufforderung. Anweisungen werden doch der Reihe nach ausgeführt. Und natürlich musst du auch den String der eingegeben wurde wandeln, nicht irgendeine Konstante. Sonst braucht man ja nichts abfragen, wenn die Werte fest sind.
Antworten