@__blackJack__
ich gehe mal die Änderungen im Code von oben nach unten durch:
1) Reihenfolge der Importe
Danke für den Hinweis (unter
https://pep8.org/#imports ... da steht's ja auch, wie es sein sollte)
Hier hatte ich mich ein wenig drauf verlassen, das PyCharm mir eine "falsche" Reihenfolge anzeigt. Dies ist aber nicht der Fall.
Ich habe das nun korrigiert.
2) Logging, Formatieren der Zeichenketten
Hab ich auch übernommen. Hier muss ich (morgen) mal (aus Neugier) messen, was das performance-technisch ausmacht. Bei großen Logs kann das ja ein Unterschied machen. Und dann wäre das gut, im Hinterkopf zu haben.
Oder habe ich da jetzt was missverstanden?
3) extend
es sieht jetzt pythonischer aus, da kompakter.

Mangels täglicher Übung kriege ich bei den Generatoren leider immer noch einen Knoten ins Hirn.

Hier muss ich mich im Urlaub nochmal dran setzen, um das _richtig_ zu verstehen.
4) Reime
Die letzten Einträge sind gar nicht ”gespielgelt”.
stimmt. Ich fürchte das liegt daran, dass es sich "nur" um ein Mock handelt und ich beim Tippen irgendwann gemerkt habe, dass ich hierfür eine generische Lösung brauche, wenn ich mir nicht das Fleisch von den Fingern tippen will.
Des Weiteren ist es ja eine n:m-Zuordnung. Daher war ich auch etwas unschlüssig, ob ich mit "Wort-Pärchen" gut beraten bin. Das Endergebnis meiner Überlegung war jedenfalls, dass es hier evtl. schon was Fertiges geben könnte, denn allein dieses Thema dürfte ja durchaus ein größeres Projekt sein.
Am Rande:
Code: Alles auswählen
rhymes.update((word_b, word_a) for word_a, word_b in rhymes.items())
wird leider mit folgender Meldung quittiert:
Code: Alles auswählen
Traceback (most recent call last):
File "C:/Users/buchfink/PycharmProjects/pyQT_3/beispielWortspielGenerator_4.py", line 114, in <module>
main()
File "C:/Users/buchfink/PycharmProjects/pyQT_3/beispielWortspielGenerator_4.py", line 110, in main
show_sayings(substituted)
File "C:/Users/buchfink/PycharmProjects/pyQT_3/beispielWortspielGenerator_4.py", line 101, in show_sayings
for saying in sayings:
File "C:/Users/buchfink/PycharmProjects/pyQT_3/beispielWortspielGenerator_4.py", line 95, in substitute_with_rhymes
substituted_word = get_rhyme(word)
File "C:/Users/buchfink/PycharmProjects/pyQT_3/beispielWortspielGenerator_4.py", line 87, in get_rhyme
rhymes.update((word_b, word_a) for word_a, word_b in rhymes.items())
File "C:/Users/buchfink/PycharmProjects/pyQT_3/beispielWortspielGenerator_4.py", line 87, in <genexpr>
rhymes.update((word_b, word_a) for word_a, word_b in rhymes.items())
RuntimeError: dictionary changed size during iteration
Process finished with exit code 1
ich hatte zunächst vermutet, dass dieser Fehler entstanden ist, weil ich den Diff sukzessive übernommen habe und evtl. was vergessen oder falsch übertragen habe, aber wenn ich den Code so wie er oben steht, ausprobiere, erhalte ich auch diesen Fehler.
So wie ich die Meldung verstehe, stört er sich daran, dass er innerhalb eines Generators die Dict-Größe ändert.
Stimmt meine Vermutung?
5) Namen `key` und `value` zu generisch
Asche auf mein Haupt. Das kommt mir bekannt vor. Ich glaube, das hattest Du bereits in einem der Beiträge im November angemerkt. Augenscheinlich habe ich das vergessen

Das war nicht beabsichtigt.
mit "saying" und "words" ist es jedenfalls besser zu lesen
6) Main
Mir ist aufgefallen, dass Du "__main__" statt '__main__' schreibst.
Leider komme ich da manchmal durcheinander und schreibe mal doppelte Anführungszeichen und mal einfach Hochkommata. So wie ich das verstehe, ist beides erlaubt. Aber gibt's denn diesbezüglich Favoriten? Oder ist es egal?
Vielen lieben Dank für Deine Anmerkungen!
LG