Fehler im Code oder Betriebsblindheit?

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
Kotelettklopfer
User
Beiträge: 22
Registriert: Samstag 15. Januar 2022, 13:34

Hallo,

in meinen Lernunterlagen soll folgender Code "true" (es kommen Vokale im Wort vor) oder "false" (es kommen keine Vokale vor) ausgeben.
Der Code ist genau wie im Buch, aber der Output bleibt leer, wenn ich ihn aus dem Editor starte bzw. zeigt eine falsche Syntax an wenn ich es im Prompt teste.

Wurde hier im laufe der Zeit etwas angepasst? Ist das buch eventuell nicht up to Date oder bin ich einfach gerade Blind ?

Code: Alles auswählen


def search_for_vowels(word):
    """Return a boolean based on vowels found."""
    vowels = set('aeiou')
    found = vowels.intersection(set(word))
    return bool(found)
        

search_for_vowels('Hamsterrad')




Danke Euch
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Du gibts auch nichts aus. Da fehlt ein `print`.
Und hier wäre auch `isdisjoint` die richtige Methode:

Code: Alles auswählen

def search_for_vowels(word):
    """Return a boolean based on vowels found."""
    vowels = set('aeiou')
    return not vowels.isdisjoint(word)
        
print(search_for_vowels('Hamsterrad'))
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Ich kann da keinen Fehler finden.

Code: Alles auswählen

>>> def search_for_vowels(word):
...     """Return a boolean based on vowels found."""
...     vowels = set('aeiou')
...     found = vowels.intersection(set(word))
...     return bool(found)
...         
... 
>>> search_for_vowels('Hamsterrad')
True
>>> 
>>> search_for_vowels('Hmstrrd')
False
In specifications, Murphy's Law supersedes Ohm's.
Kotelettklopfer
User
Beiträge: 22
Registriert: Samstag 15. Januar 2022, 13:34

Sirius3 hat geschrieben: Mittwoch 2. März 2022, 16:00 Du gibts auch nichts aus. Da fehlt ein `print`.
Und hier wäre auch `isdisjoint` die richtige Methode:

Code: Alles auswählen

def search_for_vowels(word):
    """Return a boolean based on vowels found."""
    vowels = set('aeiou')
    return not vowels.isdisjoint(word)
        
print(search_for_vowels('Hamsterrad'))
Was wäre der Unterschied zwischen isdisjoint und intersection?


Bleibt die Frage warum der Code im Buch funktioniert (bei dem Kollegen oben drüber auch) und bei mir in IDLE nicht. Das verwirrt mich etwas :-)
Kotelettklopfer
User
Beiträge: 22
Registriert: Samstag 15. Januar 2022, 13:34

pillmuncher hat geschrieben: Mittwoch 2. März 2022, 16:19 Ich kann da keinen Fehler finden.

Code: Alles auswählen

>>> def search_for_vowels(word):
...     """Return a boolean based on vowels found."""
...     vowels = set('aeiou')
...     found = vowels.intersection(set(word))
...     return bool(found)
...         
... 
>>> search_for_vowels('Hamsterrad')
True
>>> 
>>> search_for_vowels('Hmstrrd')
False
Verrückt... Also im Prompt klappt es nach einem Neustart von IDLE jetzt. Der Editor allerdings drückt nach Run nichts aus. Nur die Shell wird neugestartet.
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Wie Sirius3 schon schrieb: Da fehlt ein print().
In specifications, Murphy's Law supersedes Ohm's.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Kotelettklopfer hat geschrieben: Mittwoch 2. März 2022, 16:52Was wäre der Unterschied zwischen isdisjoint und intersection?
Wenn Du gefragt wirst, ob in einem Wortes ein Vokal vorkommt, pickst Du Dir dann erst alle Vokale raus und sagst dann, weil a e und u im Wort sind, muß wohl ein Vokal vorkommen, oder hörst Du beim ersten `a` auf zu suchen und sagst, "ja"?
Kotelettklopfer
User
Beiträge: 22
Registriert: Samstag 15. Januar 2022, 13:34

Sirius3 hat geschrieben: Mittwoch 2. März 2022, 18:55
Kotelettklopfer hat geschrieben: Mittwoch 2. März 2022, 16:52Was wäre der Unterschied zwischen isdisjoint und intersection?
Wenn Du gefragt wirst, ob in einem Wortes ein Vokal vorkommt, pickst Du Dir dann erst alle Vokale raus und sagst dann, weil a e und u im Wort sind, muß wohl ein Vokal vorkommen, oder hörst Du beim ersten `a` auf zu suchen und sagst, "ja"?

Ok verstanden.
Das "intersection" lässt sich aber erklären. Ich erarbeite mir gerade mein Wissen aus einem Buch. Bücher sind so aufgebaut dass sie Stück für Stück das zu lernende vermitteln und nicht direkt das volle Programm.
Der oben angegebene Code war ursprünglich etwas anders und gab die Vokale inkl. ihrer Anzahl im Wort heraus. Jetzt fängt man an mit Funktionen zu arbeiten und der Code wird Stück für Stück angepasst.
Dass das print im Code scheinbar vergessen wurde ist natürlich "witzig" wenn man bedenkt wie lange es das Buch bereits gitb und wie oft es verkauft wurde xD
Benutzeravatar
Dennis89
User
Beiträge: 1562
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,
Kotelettklopfer hat geschrieben: Mittwoch 2. März 2022, 21:39 das Buch bereits gitb und wie oft es verkauft wurde xD
rein interessehalber, um welches Buch handelt es sich denn?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Kotelettklopfer
User
Beiträge: 22
Registriert: Samstag 15. Januar 2022, 13:34

Dennis89 hat geschrieben: Donnerstag 3. März 2022, 07:12 Hallo,
Kotelettklopfer hat geschrieben: Mittwoch 2. März 2022, 21:39 das Buch bereits gitb und wie oft es verkauft wurde xD
rein interessehalber, um welches Buch handelt es sich denn?

Grüße
Dennis
Ich versuche es zur Zeit mit "Python von Kopf bis Fuß" aus dem O´Reilly Verlag.
Antworten