Seite 1 von 1

Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 15:33
von Kotelettklopfer
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

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 16:00
von Sirius3
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'))

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 16:19
von pillmuncher
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

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 16:52
von Kotelettklopfer
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 :-)

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 16:56
von Kotelettklopfer
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.

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 17:57
von pillmuncher
Wie Sirius3 schon schrieb: Da fehlt ein print().

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 18:55
von Sirius3
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"?

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Mittwoch 2. März 2022, 21:39
von Kotelettklopfer
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

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Donnerstag 3. März 2022, 07:12
von Dennis89
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

Re: Fehler im Code oder Betriebsblindheit?

Verfasst: Donnerstag 3. März 2022, 09:40
von Kotelettklopfer
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.