Seite 1 von 1

nur False wird ausgegeben : Was mache ich Falsch

Verfasst: Freitag 26. Juni 2015, 17:10
von Rosemiller
Hallo ich schreibe ein Python Skript, indem ich herausfinden möchte ob ein Buchstabe zu dem Wort 'Hello' gehört.
Allerdings erhalte ich bei der Ausführung entweder nur den Wert False ( selbst wenn es ein richtiger Buchstabe war ).

Mein Skript :

Code: Alles auswählen

def letter_in_word(s):
 n= "Hhelo"
 word= "Hello"
 for letter in s:  # bei der Schleife bin ich mir eh nicht sicher 
 s = "Hello"

n=str(raw_input("letter_in_word"))

if  "Hhelo" in "Hello":  # 'Hhelo' wurde versuchshalber durch gerade striche getrennte oder einfach jedes Item für sich = hat nichts gebracht
 print True 
else:
 print False

Re: nur False wird ausgegeben : Was mache ich Falsch

Verfasst: Freitag 26. Juni 2015, 18:50
von Kebap
Willkommen Rosemiller. Hast du jetzt einen neuen Thread aufgemacht, weil in deinem ersten seit knapp 1 Stunde niemand geantwortet hat? Obwohl es immer noch um das gleiche Problem geht?

Dein Code sieht recht seltsam aus. Das liegt unter anderem daran, dass du ihn nicht in einen Code-Block hier im Forum eingestellt hast. Dafür gibt es einen Knopf beim Schreiben des Beitrags.. :wink:

Re: nur False wird ausgegeben : Was mache ich Falsch

Verfasst: Samstag 27. Juni 2015, 10:18
von Rosemiller
nein mittlerweile geht es nicht mehr um das gleiche problem, sondern um ein neues aber die gleiche Aufgabe betreffend
und daher habe ich einen neuen aufgemacht

Re: nur False wird ausgegeben : Was mache ich Falsch

Verfasst: Samstag 27. Juni 2015, 10:57
von cofi
Fuer mich sieht das noch nach genau dem gleichen Problem aus.

1. Du hast einen Aufruf gegeben der funktionieren muss, deine Loesung (d.h. die Funktion `letter_in_words`) haelt sich nicht daran: Du bekommst 2 Argumente und musst einen bestimmten Rueckgabewert haben.

2. Starte den interaktiven Interpreter und mach dich damit vertraut wie der `in` Operator und wie `for` Schleifen ueber Strings funktionieren.

Re: nur False wird ausgegeben : Was mache ich Falsch

Verfasst: Samstag 27. Juni 2015, 15:17
von qupfer

Code: Alles auswählen

def Buchstabentest(meinWort, meinBuchstabe):
    for letter in meinWort:
        if meinBuchstabe == letter:
            return True
    return False


def eingabe():
    meinWort = input ("Gebe Wort ein: ")  # für python 2.7 raw_input()
    meinBuchstabe = input ("Gebe Buchstabe ein: ")  # für python 2.7 raw_input()
    return meinWort, meinBuchstabe


def ausgabe(vorhanden):
    if vorhanden:  # gleichbedeutend mit "if vorhanden == True" 
        print ("Buchstabe vorhanden")
    else:
        print ("Buchstabe nicht vorhanden")


def main():
    wort, buchstabe = eingabe()  # eingabe
    Ergebnis = Buchstabentest(wort, buchstabe)  # test
    ausgabe(Ergebnis)  # ausgabe

if __name__ == "__main__":
    main() 
bestimmt nicht perfekt, aber für ne Hausaufgabe dürfte es reichen *duck*

Re: nur False wird ausgegeben : Was mache ich Falsch

Verfasst: Samstag 27. Juni 2015, 21:50
von qupfer
Edit geht nicht mehr...die For-Schleife kann man sich tatsächlich schenken *wieder-was-gelernt*

Edit: Danke Blackjack, so ist es sogar noch schöner :D

Code: Alles auswählen

def Buchstabentest(meinWort, meinBuchstabe):
    return meinBuchstabe in meinWort
mein altes "unschönes" Beispiel:

Code: Alles auswählen

def Buchstabentest(meinWort, meinBuchstabe):
    if meinBuchstabe in meinWort:
        return True

Re: nur False wird ausgegeben : Was mache ich Falsch

Verfasst: Samstag 27. Juni 2015, 22:08
von BlackJack
@qupfer: Ist nicht besonders schön das die Funktion `True` oder `None` liefert statt `True` oder `False`. Und das Ergebnis des ``in``-Operators ist ja schon `True` oder `False`:

Code: Alles auswählen

def enthaelt(wort, buchstabe):
    return buchstabe in wort