Phyton script funtzt net (einsteiger)

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
Fusionbreak
User
Beiträge: 6
Registriert: Sonntag 29. Mai 2011, 19:09

Hallo erstmal,
ich habe vor kurzen angefangen mich mit Phyton zu beschäftigen und komme bei dem vollgenden script nicht weiter:

Code: Alles auswählen

secred = 64
eingabe = 0
zähler = 0

while eingabe != secred:
    eingabe = input("Rate mal")
    if eingabe < secred:
        print ("zu klein!")

    if eingabe > secred:
        print ("zu gross")

    zähler = zähler + 1

print ("du hast es in :", zähler, "versuchen geschafft!")

Mein Editor zeigt mir dauern eine Fehlermeldung an, und ich weiß nicht so ganz wo der Fehler ist...
BlackJack

@Fusionbreak: Was ist das denn für eine Fehlermeldung?
Fusionbreak
User
Beiträge: 6
Registriert: Sonntag 29. Mai 2011, 19:09

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

Ich benutze phyton 3.2 wenn das weiterhilft.
problembär

Na, ich schätze mal, dann gibt input() wohl als "eingabe" einen String zurück, was?
Fusionbreak
User
Beiträge: 6
Registriert: Sonntag 29. Mai 2011, 19:09

Was genau war nochmal ein "string" :?:
problembär

Code: Alles auswählen

>>> a = "Hallo"
>>> type(a)
<type 'str'>

>>> a = 15
>>> type(a)
<type 'int'>
Fusionbreak
User
Beiträge: 6
Registriert: Sonntag 29. Mai 2011, 19:09

"eingabe" ist vom typ : 'int'
BlackJack

@Fusionbreak: Nein ist es nicht. Du kannst da der Dokumentation zu `input()` und der Fehlermeldung ruhig glauben.
Fusionbreak
User
Beiträge: 6
Registriert: Sonntag 29. Mai 2011, 19:09

Wenn ich mit meinen mauszeiger im meinen editor (physcripter) etwas länger auf eine variable zeige, sagt es mir welchen typ diese hat.
Jedes mal sagt mir der editor das "eingabe" vom typ int ist ist :S
Fusionbreak
User
Beiträge: 6
Registriert: Sonntag 29. Mai 2011, 19:09

habe auf die Phyton version 2.5 gewechselt. Jetzt klappt es ohne probleme!

Danke,
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Fusionbreak hat geschrieben:Wenn ich mit meinen mauszeiger im meinen editor (physcripter) etwas länger auf eine variable zeige, sagt es mir welchen typ diese hat.
Jedes mal sagt mir der editor das "eingabe" vom typ int ist ist :S
Python! Mensch so schwer is das doch nich :(

Und Python ist eben so dynamisch, dass Tools es schwer haben guten Support zu leisten, darum kann man sich darauf nicht verlassen.

`input` in Python 2.x macht etwas anderes als `input` in Python 3.x, darum ist es auch _keine_ Loesung. In Python 2.x willst du stattdessen `raw_input` nutzen[1].

Wenn dein Tool dir sagt, dass `eingabe` ein Int ist, kann es sein, das es auf Python 2 eingestellt ist?

[1] Ja du _willst_, es sei denn du kannst Eingaben wie __import__('sys').exit() ausschliessen.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Bitte korrigiert mich, aber 2.7 ist die aktuelle Version.

Code: Alles auswählen

import random

geheimnis = random.randint(1,100)
eingabe = 0
zähler = 0

print('Rateprogramm: Rate eine Zahl zwischen 1 und 100!')

while eingabe != geheimnis:
    eingabe = int(input("Rate mal: "))
    if eingabe < geheimnis:
        print("Zu klein!")

    if eingabe > geheimnis:
        print("Zu groß.")

    zähler = zähler + 1

print("Super! Richtig!\nDu hast es in", zähler, "Versuchen geschafft!")
Schau mal über den Quellcode (3.2). Möglicherweise gefällt dir das auch...
--
Änderungswünsche, siehe unten, umgesetzt.
Zuletzt geändert von pixewakb am Sonntag 29. Mai 2011, 23:24, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

pixewakb hat geschrieben:Bitte korrigiert mich, aber 2.7 ist die aktuelle Version.
Das kann man so sehen, aber spaetestens mit Python3.3 ist das nur mit dem Nachsatz "für Python 2.x" gueltig.

Zum Code: Was du loswerden solltest ist das denglisch, halte alle Namen in _einer_ natuerlichen Sprache. Es reicht, dass man sich mit (mindestens) 2 Sprachen beschaeftigen muss.
Daneben solltest du `print` wie eine normale Funktion schreiben: mit den Klammern am Namen und die Umwandlung der Eingabe ist IMHO auch besser in einer Zeile lesbar.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Können wir bitte ganz schnell noch "secred" entweder in "secret" ändern oder, weil ja die anderen Variablen auch alle Deutsch sind, das gleich "geheimnis" nennen? :) Dann würde ich noch vorschlagen ``eingabe = int(input("Rate..."))`` zu schreiben, um ein und die selbe Variable nicht zweimal zu benutzen und die Regel von cofi zu beherzigen empfehlen, das Leerzeichen bei print zu entfernen und das ist das Programm prima. Variablen kann man natürlich problemlos mehrfach verwenden, aber es ist so ein stilistisches Ding. Eine Variable sollte immer nur Dinge eines Typs enthalten, also nicht erst ein String und dann eine Zahl.

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

unr bei Python 2.x ``raw_input`` statt ``input`` verwenden. Dann macht das ``int()`` drumrum auf einmal sogar sinn.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten