Sehr einfaches Skript - aber ich kriegs nicht hin.

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
Bamba
User
Beiträge: 62
Registriert: Dienstag 31. Oktober 2006, 08:48

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
Bamba
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bamba
User
Beiträge: 62
Registriert: Dienstag 31. Oktober 2006, 08:48

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
Bamba
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

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
Bamba
User
Beiträge: 62
Registriert: Dienstag 31. Oktober 2006, 08:48

Vielen Dank, jetzt funktioniert es.

Bamba
Bamba
Antworten