Seite 1 von 1

True etwas zuweisen!

Verfasst: Mittwoch 27. Dezember 2006, 18:20
von pantoffeltierchen
Hi, meine LETZTE FRAGE für heute!!!

Und zwar hab ich folgendes Problem:

Code: Alles auswählen

def suchebuchstabe(text, buchstabe):
    for i in text:
        if i == buchstabe:
            return True
    return False

Er spuckt mir immer 0 oder 1 aus aber ich möchte True bzw. False einen richtigen Text/Wert zuweisen, zb: Fals True rauskommt = Vorhanden oder so.

ABER es geht nicht True = 'Richtig'

Verfasst: Mittwoch 27. Dezember 2006, 18:32
von sape
Hi.

Code: Alles auswählen

def is_char_in_text(text, buchstabe):
    return buchstabe[0] in text

print is_char_in_text("test", "a") # False
print is_char_in_text("test", "e") # True

if is_char_in_text("test", "e"):
    print "Vorhanden"
lg

Verfasst: Mittwoch 27. Dezember 2006, 18:43
von pantoffeltierchen
dit verstehe ick nicht, geht das nicht einfacher?

Verfasst: Mittwoch 27. Dezember 2006, 18:52
von sape
Was genau verstehst du nicht?

Verfasst: Mittwoch 27. Dezember 2006, 18:54
von pantoffeltierchen
na ich möchte einfach anstatt der Ausgabe 0 oder 1, einen Text dafür returnen lassen.

Verfasst: Mittwoch 27. Dezember 2006, 19:05
von sape
Warum den das??

...

Der Ausdruck buchstabe[0] in text schaut nach ob das erste Zeichen `[0]` von `buchstabe` in `text`vorhanden ist. Wenn es vorhanden ist wird ``True`` zurückgegeben mit ``return``, wenn nicht dann ``False``.

``is`` schaut also nach ob X in Y ist und gibt dann entsprechend einen Wahrheitswert zurück.

Noch einfacher gehts nicht. Das ist schon die einfachste Form.

...

Du hast jetzt eine Funktion geschrieben die dir per True, False zurückgibt ob ein bestimmtes Zeichen in dem übergebenen Text vorhanden ist. Warum möchtest du diese Funktion nun Zerstören und in grunde unbrauchbar (nicht Allgemein einsetzbar) machen in dem du die einen Text returnene lässt?

Das was du willst würde so gehen:

Code: Alles auswählen

def is_char_in_text(text, buchstabe):
    if buchstabe[0] in text:
        return "vorhanden"
    else:
        return "nicht vorhanden"
Total Sinnfrei.

Mach es so:

Code: Alles auswählen

def is_char_in_text(text, buchstabe):
    return buchstabe[0] in text
Damit hast du eine Funktion die Allgemein Einsetzbar ist, weil amn dann nur auf True, oder False testen muss ;)

beispiel Aufruf (Wenn e in test vorhanden ist wird "vorhanden angezeigt":

Code: Alles auswählen

if is_char_in_text("test", "e"):
    print "Vorhanden"
Das ist viel Besser als wenn die Funktion den Text zurückgibt.

...

Das `if is_char_in_text("test", "e")` ist das gleiche wie `if is_char_in_text("test", "e") == True`. Man macht das aber nicht so.

True:
Guter Stil:

Code: Alles auswählen

if is_char_in_text("test", "e")
Schlechter Stil:

Code: Alles auswählen

if is_char_in_text("test", "e") == True
False:
Guter Stil:

Code: Alles auswählen

if not is_char_in_text("test", "e")
Schlechter Stil:

Code: Alles auswählen

if is_char_in_text("test", "e") == False
lg

Verfasst: Mittwoch 27. Dezember 2006, 19:07
von pantoffeltierchen
ok, danke jetzt gehts!!!!!!!!!!!!!!

Verfasst: Mittwoch 27. Dezember 2006, 19:14
von sape
pantoffeltierchen hat geschrieben:ok, danke jetzt gehts!!!!!!!!!!!!!!
Sag mir bitte das du aber nicht das hier meinst: ;)

Code: Alles auswählen

def is_char_in_text(text, buchstabe):
    if buchstabe[0] in text:
        return "vorhanden"
    else:
        return "nicht vorhanden"
lg

Verfasst: Mittwoch 27. Dezember 2006, 23:38
von lunar
sape hat geschrieben:
pantoffeltierchen hat geschrieben:ok, danke jetzt gehts!!!!!!!!!!!!!!
Sag mir bitte das du aber nicht das hier meinst: ;)

Code: Alles auswählen

def is_char_in_text(text, buchstabe):
    if buchstabe[0] in text:
        return "vorhanden"
    else:
        return "nicht vorhanden"
lg
Na, das sieht doch auch ganz nett aus:

Code: Alles auswählen

if is_char_in_text('blubb', 'b') == 'vorhanden':
    print 'schön'
if is_char_in_text('blubb', 'c') == 'nicht vorhanden':
    print 'nicht so schön'
Ist doch viel besser als ein schnödes "if 'b' in 'blubb'"! Also jedenfalls, wenn man nach KLOC bezahlt wird ;)

Verfasst: Mittwoch 27. Dezember 2006, 23:51
von sape
lunar hat geschrieben:[...]
Ist doch viel besser als ein schnödes "if 'b' in 'blubb'"! Also jedenfalls, wenn man nach KLOC bezahlt wird ;)
Hehe ne ok, weiß was du meinst. Stimmt schon, in Grunde kann man sich die Funktion sparen und gleich...

Code: Alles auswählen

text = "blubb"
if "b" in "blubb":
    print "vorhanden"
...schreiben. :D

Ich gehe mal davon aus das du das nicht ernst gemeint hast mit dem "ist doch schöner" ;) Ein ``is``-Funktion hat nun mal ein ``True`` oder ``False`` zurückzugeben und nichts anderes!

lg

Verfasst: Donnerstag 28. Dezember 2006, 00:05
von lunar
sape hat geschrieben: Ich gehe mal davon aus das du das nicht ernst gemeint hast mit dem "ist doch schöner" ;) Ein ``is``-Funktion hat nun mal ein ``True`` oder ``False`` zurückzugeben und nichts anderes!
Klar! Ich dachte, der Smilie wäre deutlich genug...

Aber das mit den KLOC war zumindest halbwegs ernst gemeint. Zwar keine persönlichen Erfahrungen, aber man hört doch Geschichten...

Verfasst: Donnerstag 28. Dezember 2006, 00:10
von sape
lunar hat geschrieben:[...]
Klar! Ich dachte, der Smilie wäre deutlich genug...
Jepp, stimmt eigentlich :)

lg

Verfasst: Samstag 30. Dezember 2006, 07:18
von Y0Gi
Ich weiß auch nicht so recht, aber die erste Funktion macht nicht nur genau das, was

Code: Alles auswählen

some_char in some_string
ohnehin schon macht, sie enthält sogar genau den Code. Es wird also nur unnützer Overhead herumgepackt.

Verfasst: Samstag 30. Dezember 2006, 17:49
von sape
Y0Gi hat geschrieben:Ich weiß auch nicht so recht, aber die erste Funktion macht nicht nur genau das, was

Code: Alles auswählen

some_char in some_string
ohnehin schon macht, sie enthält sogar genau den Code. Es wird also nur unnützer Overhead herumgepackt.
Jepp ;)

->
sape hat geschrieben:
lunar hat geschrieben:[...]
Ist doch viel besser als ein schnödes "if 'b' in 'blubb'"! Also jedenfalls, wenn man nach KLOC bezahlt wird ;)
Hehe ne ok, weiß was du meinst. Stimmt schon, in Grunde kann man sich die Funktion sparen und gleich...

Code: Alles auswählen

text = "blubb"
if "b" in "blubb":
    print "vorhanden"
...schreiben. :D
Erst bei Komplexeren Einzeilern, die als Funktion fungieren können, ist eine Funktionsdefinition sinnvoll. Ich denke dabei an FP Lösungen oder LCs mit FPs, etc...