Python: Secret Zahl per Slicing bestimmen

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von firedragon7, 10.04.2009.

  1. #1 firedragon7, 10.04.2009
    firedragon7

    firedragon7 Mühlviertler Linuxer

    Dabei seit:
    16.08.2007
    Beiträge:
    59
    Zustimmungen:
    0
    Ort:
    Wo die schönen Mädchen Wachsen
    Ich habe sozusagen ein kleines Konsolen Game zum lernen. Da ich gerade bei dem Buch Python weitergelesen habe, Oberkapitel Basisdatentypen, ist mir die Idee gekommen, das man die Zahl secret, die was man erraten muss, per Slicing festzulegen und dann raten zu lassen. Hier der Code:

    Es komm folgende Fehlermeldung heraus:
    secret ist die Zahl die man erraten muss.
    guess ist die Zahl die man nachdem secret festgelegt ist, eingeben muss .
    i gibt die Zahl der Versuche an.
    Ze soll die Zahl sein die "geslicd" wird.
    Za soll die erste Zahl für das Slicing sein.
    Zb soll die zweite Zahl für das Slicing sein.

    Liegt es an long? Wie kann ich die Ze als int-Zahl festlegen?
    Ich benutze noch Python 2.5.2.
    Vielen Dank im Vorraus.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 10.04.2009
    Zuletzt bearbeitet: 11.04.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,
    Ich habe mir dein Programm jetzt nicht naeher angesehen, aber das Problem kommt daher, dass du versuchst die Zahl oktal anzugeben. Wahrscheinlich ist dir das noch nicht einmal aufgefallen, aber wenn du eine Null voran stellst, handelt es sich um eine Oktalzahl (Basis 8 ). Die scheint Python nicht automatisch ins long Format konvertieren zu koennen.

    Lass die Null am Anfang weg, und der Syntax Fehler sollte sich in Luft aufloesen. ;)

    Edit:

    Wenn du hier im Board Code einfuegst, solltest du die Code-Tags benutzen, und nicht zitieren. Ansonsten verlierst du, wie hier geschehen, die Einrueckungen.

    Bei genauerem Hinschauen kann ich dir auch direkt sagen wo sich Python als naechstes beschweren wird:
    Code:
    Ze[Za:Zb]
    
    Du definierst Ze als integer, versuchst es aber als String zu behandeln. Ich denke was du tatsaechlich willst ist folgendes:
    Code:
    Ze = "01234567899876543210"
    [...]
    secret = int(Ze[Za:Zb])
    
    Nenbei wuerde ich mir bessere Namen fuer die Variablen aussuchen, und vor allem einheitlich bleiben. Als Anregung koenntest du dir mal den Python Style Guide anschauen: http://www.python.org/dev/peps/pep-0008/

    Edit2:

    Das sind mir doch noch zuviele Fehler, als dass ich dich auf alle einzeln hinweisen wuerde. Im Allgemeinen solltest du dir bewusst machen, dass Python im Gegensatz zu z.B. Perl strongly typed ist, d.h. du kannst einen String nicht wie eine Zahl verwenden, und umgekehrt. Da hast du im Skript einige Probleme mit.

    Edit3:
    Mmh, scheint nicht mein Tag zu sein, ich sehe gerade dass input() anders funktioniert als raw_input(), so dass dein Programm groesstenteils doch ok ist. ;)
    Du musst nur darauf achten, dass input auch ausgefuehrt wird. 'Za = input' ist ein korrektes statement, macht aber nicht das was du vermutest, es muss natuerlich 'Za = input()' heissen.

    mfg,
    bytepool
     
  4. #3 firedragon7, 23.04.2009
    firedragon7

    firedragon7 Mühlviertler Linuxer

    Dabei seit:
    16.08.2007
    Beiträge:
    59
    Zustimmungen:
    0
    Ort:
    Wo die schönen Mädchen Wachsen
    So wie man sieht habe ich einiges an Code getan:

    PHP:
    #! usr/bin/python

    secret 0
    guess 
    0
    0
    Ze 
    0
    Za 
    0
    Zb 
    0
    Zc 


    Ze 
    int
    Ze 
    123456789098765432100123456789
    print "Geben Sie dre Zahlen zwischen 0 und 30 ein."
    Za input ("Geben Sie die erste Zahl ein: ")
    Zb input ("Geben Sie die zweite Zahl ein: ")
    Zc input ("Geben Sie die dritte Zahl ein: ")
    secret int(Ze[Za:Zb:Zc])
    while 
    guess != secret:
        
    guess input ("Raten Sie: ")

        if 
    guess secret:
          print 
    "Zu klein"

        
    if guess secret:
          print 
    "Zu gross"

        
    1

    print "Super, Sie haben es in ",i"Versuchen geschafft!"
    Das Programm fragt auch schon, wie man nachfolgend sieht, die Zahlen ab:

    PHP:
    johannes@localhost PBsp]$ python spiel1v2.py
    Geben Sie dre Zahlen zwischen 0 und 30 ein
    .
    Geben Sie die erste Zahl ein22
    Geben Sie 
    die zweite Zahl ein4
    Geben Sie 
    die dritte Zahl ein9
    Nur dann kommt folgende Fehlermeldung:

    PHP:
    Traceback (most recent call last):
      
    File "spiel1v2.py"line 17in <module>
        
    secret int(Ze[Za:Zb:Zc])
    TypeError'long' object is unsubscriptable
    Weiß jemand hierfür eine Lösung??(
     
  5. #4 bytepool, 23.04.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,
    hast du dir eigentlich mal die Muehe gemacht, zu lesen was ich schrieb?

    mfg,
    bytepool
     
  6. #5 donsimon1991, 16.05.2009
    donsimon1991

    donsimon1991 Eroberer

    Dabei seit:
    23.12.2007
    Beiträge:
    70
    Zustimmungen:
    0
Thema:

Python: Secret Zahl per Slicing bestimmen

Die Seite wird geladen...

Python: Secret Zahl per Slicing bestimmen - Ähnliche Themen

  1. Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse)

    Python Softwareentwickler (Hintergrundentwicklung und Datenanalyse): Stelle : Software-Entwickler Anzahl : 3 Standort : Manila(Die Philippinen) Dezhong Investment LTD. Unser internationales...
  2. Python-Interpreter PyPy 5.0 freigegeben

    Python-Interpreter PyPy 5.0 freigegeben: Der Python-Interpreter PyPy wurde in Version 5.0 veröffentlicht. Die aktuelle Version des Interpreters, der wesentlich schneller als der...
  3. Python-Interpreter PyPy 4.0 freigegeben

    Python-Interpreter PyPy 4.0 freigegeben: Der Python-Interpreter PyPy wurde in Version 4.0 veröffentlicht. Die aktuelle Version des Interpreters, der wesentlich schneller als der...
  4. Python 3.5 ist fertig

    Python 3.5 ist fertig: Über eineinhalb Jahre nach Python 3.4 haben die Entwickler jetzt die nächste Version veröffentlicht. In Python 3.5 gibt es zahlreiche Neuerungen...
  5. Python-Interpreter PyPy 2.6 freigegeben

    Python-Interpreter PyPy 2.6 freigegeben: Der Python-Interpreter PyPy wurde in Version 2.6 veröffentlicht. Der Schwerpunkt der aktuellen Version des Interpreters, der wesentlich schneller...