Seite 1 von 1

Sehr einfaches Skript - aber ich kriegs nicht hin.

Verfasst: Sonntag 20. Mai 2007, 12:18
von Bamba
Hallo,

ich habe folgendes Skript:

Code: Alles auswählen

class WORD(object):
    def __init__ (self,word):
        self.word = word

def new_word():
    word = "hallo"
    return word

def eingabe():
    eingabe = raw_input("Bitte geben sie einen Buchstaben ein: ")
    print "Sie haben gewaehlt: " + eingabe
    if len(eingabe) <2:
        word = list(A.word)
        for x in word:
            if x==eingabe:
                for x in word:
                    print "Eintrag gefunden!"
                    word.remove(x)
                    
            else:
                print "Leider kein Eintrag gefunden!"
    else:
        print "Sie duerfen nur einen Buchstaben eingeben!"
    print word

if __name__ ==  "__main__":
    A=WORD(new_word())
    eingabe()

Wenn ich h eingebe, löscht der aus "word" alle Einträge bis auf "a"und"l" warum?

Danke.

Bamba

Verfasst: Sonntag 20. Mai 2007, 12:34
von Leonidas
Dein Code ist sehr seltsam. Du willst wissen, ob eine eingabe aus einem Zeichen besteht und schreibst ``if len(eingabe) <2``? ``if len(eingabe) != 1`` wäre klarer. Klassennamen schriebt man nicht All-Caps. Und das Problem mit dem Löschen kommt daher, weil du durch eine Liste iterierst und *gleichzeitig* aus dieser Liste löscht. Da kommt der Zähler durcheinander und produziert schwer vorhersehbaren Schwachsinn.

Verfasst: Sonntag 20. Mai 2007, 12:37
von Bamba
Danke für die Antwort. Zwei Frage:

1. Was heißt All-Caps?
2. Wo iterier ich durch eine Liste?

Und die Sache mit iflen(eingabe)<2...uups^^

Bamba

Verfasst: Sonntag 20. Mai 2007, 12:45
von Leonidas
Bamba hat geschrieben:1. Was heißt All-Caps?
``WORD`` ist All-Caps, ``Word`` hingegen nicht.
Bamba hat geschrieben:2. Wo iterier ich durch eine Liste?

Code: Alles auswählen

for element in liste:
    print element

Verfasst: Sonntag 20. Mai 2007, 12:52
von thelittlebug
Es war auch irgendwie alles andere als eine Klasse, vermutlich wolltest du soetwas ähnliches.

Code: Alles auswählen

class Word(object):
    def __init__ (self, theword):
        self.word = theword

    def print_word(self):
        print self.word

    def del_something(self):
        eingabe = raw_input("Bitte geben sie einen Buchstaben ein: ")
        print "Sie haben gewaehlt: " + eingabe
        if len(eingabe) == 1:
            self.word = self.word.replace(eingabe, '')
        else:
            print "Sie duerfen nur einen Buchstaben eingeben!"

if __name__ ==  "__main__":
    myword = Word('hallo')
    myword.del_something()
    myword.print_word()
Wie du nun unschwer erkennen kannst sind auch die Funktionen eingerückt und werden nun zu Methoden ( ich hoffe die Begriffe sind in Python auch so :) ). Abgesehen davon gehts nun auch :)

lgherby

Verfasst: Sonntag 20. Mai 2007, 13:10
von Bamba
Vielen Dank, jetzt funktioniert es.

Bamba