@danbui: Das lässt sich nicht übersetzen -- da fehlt die Einrückung.
Dateien die man öffnet sollte man auch wieder schliessen.
Zeilen bitte nicht so lang werden lassen. Insbesondere könnte man die Anzahl der `replace()`\es entweder durch eine Schleife verringern oder mal die `translate()`-Methode auf Zeichenketten anschauen. Den Punkt braucht man auch nur einmal ersetzen. Eventuell wäre auch ein regulärer Ausruck, der auf "Worte" passt, nützlich. Dann braucht man keine Negativliste von allen "Sonderzeichen". '%' hast Du zum Beispiel nicht, es gibt aber 100%ig Texte in denen das Zeichen vorkommt.
`Lesen` ist kein guter Name für eine Liste. `word` ist kein guter Name für eine Zahl. `myLesen` ist kein guter Funktionsname. Und ob `count` ein guter Name für eine Liste ist…
Erklär doch mal in Worten was die Bedingung bei dem ``if`` beschreibt, und wann die wohl mal `False` ergibt.
Was Du "falsch" machst, hängt ganz davon ab was Du machen willst. Wenn das was da ausgegeben wird, dass ist was Du haben willst, dann machst Du alles richtig. Wenn nicht, dann solltest Du mal formulieren was Du von dem Quelltext erwartet hättest und wie das vom beobachteten Ergebnis abweicht.
Neuling :)
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Und wie schon zig mal erwähnt ist genau dieser Vergleich Dein algorithmisches Hauptproblem! Das Vergleichen über alle Wörter hinweg ist dann eher trivial.danbui hat geschrieben:........wenn das Programm mal laufen sollte, dass folgendes steht :
1. kein, mein
2. taler, maler
usw.
-------Ich möchte alle Wörter aus dem Text extrahieren, und zwar
mit der besten Übereinstimmung.--------
http://paste.pocoo.org/show/188820/
Hyperion: Die Funktion rhymes_with nimmt eine beliebige Anzahl an Parametern, es werden aber exakt 2 davon genutzt. Werden also weniger als 2 übergeben, gibt es einen IndexError; bei mehr als 2 übergebenen Argumenten gibt es gar keine Exception. Nicht das Verhalten, das ich von dieser Funktion erwarte. Warum nimmt sie nicht einfach zwei Argumente entegegen?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo danbui!danbui hat geschrieben:auf ähnliche Worte überprüfen
http://pypi.python.org/pypi?%3Aaction=s ... mit=search
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
"Ähnliche Worte" bei einem Rap-Text beziehen sich allerdings nicht (nur) auf die Zeichendistanz zwischen zwei Strings. Das Beispiel von numerix ganz am Anfang ist da sehr anschaulich.gerold hat geschrieben:Hallo danbui!danbui hat geschrieben:auf ähnliche Worte überprüfen
http://pypi.python.org/pypi?%3Aaction=s ... mit=search
Ich werfe hier noch einmal das Stichwort "Kölner Phonetik" in den Raum. Hier gibts eine Implementierung:
http://www.python-forum.de/viewtopic.ph ... eef5787654
Ob das allerdings besser ist bei Rap-Texten als die Levenshtein-Distanz kann ich auch nicht beurteilen...
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
http://tutorial.pocoo.org/controlflow.h ... -auspackendanbui hat geschrieben:was macht (*args)?
Du meinst `sys.argv`: http://docs.python.org/library/sys.htmldanbui hat geschrieben:Ich habe gedacht args[0] bedeutet Programm args[1]bedeutet erstes Argument.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Ist
read().strip().replace(".", "").replace(",", "").replace("!", "").replace("?", "").replace(":", "").replace(".", "").replace("\"", "").replace("\'", "").replace(";", "").replace("\n", " ").lower().split()
das gleiche wie = read().strip(".,!?:\\n;usw")
??
Danke :Ö)
read().strip().replace(".", "").replace(",", "").replace("!", "").replace("?", "").replace(":", "").replace(".", "").replace("\"", "").replace("\'", "").replace(";", "").replace("\n", " ").lower().split()
das gleiche wie = read().strip(".,!?:\\n;usw")
??
Danke :Ö)
1. Setze Code doch bitte in entsprechende Tags.
2. Ist eine der schönen Seiten von Python, daß man im Interpreter solche Dinge innerhalb von Sekunden selber testen kann.
3. Gibt man in der Regel Funktionen beschreibende Namen (siehe BlackJacks Post): Also, was meinst Du ist der Unterschied zwischen 'strip' und 'replace'?
2. Ist eine der schönen Seiten von Python, daß man im Interpreter solche Dinge innerhalb von Sekunden selber testen kann.
3. Gibt man in der Regel Funktionen beschreibende Namen (siehe BlackJacks Post): Also, was meinst Du ist der Unterschied zwischen 'strip' und 'replace'?
das mit dem zeiger tut weh
Das ist genau der Grund, warum ich Python und nicht C verwende...
zu deinem Problem:
lern erstmal die Grundlagen und mach dir dann klar, dass 'Wörter' wie "Ich" und "Ihh" für fast jeden algorithmus als "ähnlich" durchgehen, aber nie als Reim druchgehen würden...
um Phonetik kommst du nicht herum...
Das ist genau der Grund, warum ich Python und nicht C verwende...
zu deinem Problem:
lern erstmal die Grundlagen und mach dir dann klar, dass 'Wörter' wie "Ich" und "Ihh" für fast jeden algorithmus als "ähnlich" durchgehen, aber nie als Reim druchgehen würden...
um Phonetik kommst du nicht herum...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wofür denn? Für das Vergleichen aller Elemente miteinander habe ich Dir etwas gepostet.danbui hat geschrieben: hmmm..... ich habe immernoch keine wirkliche Lösung.
Wie schon ZIG MAL erwähnt, ist Dein Hauptproblem ja eben grad die "Ähnlichkeits"- / "Reim"-Funktion. Das ist aber ein von Python unabhängiges Problem! Dir wurden ja schon Tipps in div. Richtungen diesbezüglich gegeben.