True etwas zuweisen!

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
pantoffeltierchen
User
Beiträge: 16
Registriert: Donnerstag 30. November 2006, 17:48
Wohnort: Berlin
Kontaktdaten:

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'
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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
pantoffeltierchen
User
Beiträge: 16
Registriert: Donnerstag 30. November 2006, 17:48
Wohnort: Berlin
Kontaktdaten:

dit verstehe ick nicht, geht das nicht einfacher?
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Was genau verstehst du nicht?
pantoffeltierchen
User
Beiträge: 16
Registriert: Donnerstag 30. November 2006, 17:48
Wohnort: Berlin
Kontaktdaten:

na ich möchte einfach anstatt der Ausgabe 0 oder 1, einen Text dafür returnen lassen.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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
pantoffeltierchen
User
Beiträge: 16
Registriert: Donnerstag 30. November 2006, 17:48
Wohnort: Berlin
Kontaktdaten:

ok, danke jetzt gehts!!!!!!!!!!!!!!
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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
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 ;)
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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
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...
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

lunar hat geschrieben:[...]
Klar! Ich dachte, der Smilie wäre deutlich genug...
Jepp, stimmt eigentlich :)

lg
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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...
Antworten