Seite 1 von 1

TypeError bei Ratespiel

Verfasst: Donnerstag 22. September 2011, 14:07
von alektron
Hi Leute,
Ich habe mich heute das erste Mal mit Phyton beschäftigt und arbeite nach diesem Tutorial:
http://openbook.galileocomputing.de/pyt ... 05_002.htm

Im Moment bin ich auf der Seite, auf die euch auch der Link bringt.
Ich benutze IDLE und habe damit einfach den Code von der Seite abgeschrieben.
Dabei hab ich auch beachtet, dass bei Python 3

Code: Alles auswählen

print 1.2
Nicht mehr funktioniert und ich stattdessen

Code: Alles auswählen

print (1.2)
einsetzen muss.

Jetzt zu meinem Problem:
Wenn ich den Code

Code: Alles auswählen

secret = 1337
guess = 0
i = 0
while guess != secret:
    guess = input("Raten Sie: ")

    if guess < secret:
        print ("Zu klein")

    if guess > secret:
        print ("Zu gross")

    i = i + i

print ("Super, Sie haben es in", i, "Versuchen geschafft!")
ausführe, bekomme ich folgenden Error

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\Spiel", line 7, in <module>
    if guess < secret:
TypeError: unorderable types: str() < int()
sobald ich die erste Zahl eingegeben habe.
Woran liegt das denn?
Wie schon gesagt; Ich befasse mich seit gerade mal 2 Stunden mit Phyton und weiß wirklich nicht was ich falsch mache.

Re: TypeError bei Ratespiel

Verfasst: Donnerstag 22. September 2011, 14:14
von JonasR
Es wird wohl von irgendwem hier kommen dass das Tutorial von Galileo nicht besonders gut ist :D Ich habe damit keine Erfahrungen wollte dich aber schon mal drauf vorbereiten :P

Zum Thema:

du versuchst einen string mit einem integer zu vergleichen was nicht funktioniert ;)
Von input kommt immer ein string zurück du musst diesen dann also erstmal in einen integer umwandeln. Dabei aber auch drauf achten dass falls ein Buchstabe eingegeben wurde ein error geworfen wird wenn du versuchst diesen in einen integer umzuwandeln.

Re: TypeError bei Ratespiel

Verfasst: Donnerstag 22. September 2011, 14:18
von deets
Du bist da einem weiteren Unterschied zwischen Python 2 und 3 aufgesessen.

Frueher hat input den eingetippten Wert "evaluiert". Wer also "10" eingabe (einen String aus Zeichen) bekam die Zahl 10 heraus.

Das ist nicht mehr so. Stattdessen bekommt man nun immer einen String. Womit deine zweite Fehlermeldung folgt: in Python 3 sind Zeichenketten und Zahlen nicht mehr vergleichbar.

Was solltest du tun?

- int(string) wandelt einen String in eine ganze Zahl um (wenn der String diesbezueglich wohlgeformt ist). Probier das mal im Interpreter selbst aus, wie das geht, und vor allem auch, was passiert wenn der String *nicht* wohlgeformt ist.
- das galileo buch ist allgemein bekannt dafuer, besch...eiden zu sein. Lass es also links liegen, und suche dir lieber Tutorials, die auch gleich Python 3 benutzen.

Re: TypeError bei Ratespiel

Verfasst: Donnerstag 22. September 2011, 14:26
von alektron
Vielen Dank für die schnellen antworten, die ich nur mäßig verstanden habe :D
Ich werde auf jeden Fall mal euren Rat beherzigen und mir ein anderes Tutorial suchen.

Re: TypeError bei Ratespiel

Verfasst: Donnerstag 22. September 2011, 14:31
von JonasR
Was ein integer und ein string ist weißt du aber oder?
Btw das sieht doch ganz gut aus :D http://tutorial.pocoo.org/

Re: TypeError bei Ratespiel

Verfasst: Donnerstag 22. September 2011, 14:33
von alektron
Das Tut hab ich auch gerade gefunden.
Und "Nein", wusste ich nicht :shock:

Re: TypeError bei Ratespiel

Verfasst: Donnerstag 22. September 2011, 14:40
von JonasR
Die Datentypen sind ein grundlegendes Element in der Programmierung... Du solltest dich mit so etwas unbedingt vorher befassen bevor du versuchst Programme zu schreiben.