TypeError bei Ratespiel

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
alektron
User
Beiträge: 3
Registriert: Donnerstag 22. September 2011, 13:56

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.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

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.
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.
alektron
User
Beiträge: 3
Registriert: Donnerstag 22. September 2011, 13:56

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.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Was ein integer und ein string ist weißt du aber oder?
Btw das sieht doch ganz gut aus :D http://tutorial.pocoo.org/
alektron
User
Beiträge: 3
Registriert: Donnerstag 22. September 2011, 13:56

Das Tut hab ich auch gerade gefunden.
Und "Nein", wusste ich nicht :shock:
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Die Datentypen sind ein grundlegendes Element in der Programmierung... Du solltest dich mit so etwas unbedingt vorher befassen bevor du versuchst Programme zu schreiben.
Antworten