Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Wörterbuch Python Wort erkennen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Wörterbuch Python Wort erkennen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Wörterbuch Python Wort erkennen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo. Ich hätte da noch eine Frage ,ich fürchte zwar das das ganze Problem recht banal ist,aber ich habe jetzt stunden daran rumprobiert ohne Erfolg und frag deshalb einfach mal hier nach.

Also zunächst sollte man eine Datei mit dem Namen "woerterbuch.txt" anlegen.
Der Inhalt der Datei ist eine Auflistung von Englisch-Deutschen Namen für Länder.

Zitat:

Spain Spanien
Germany Deutschland
Sweden Schweden
France Frankreich
Italy Italien


Ich habe das ganze als Textdokument geschrieben und im Pythonordner unter dem Namen " woerterbuch"gespeichert.

In einer Pythondatei habe ich dann entsprechend folgendes geschrieben.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
woerter = {}

fobj=open("woerterbuch.txt", "r")
for line in fobj:
    line = line.strip()
    zuordnung = line.split(" ")
    woerter[zuordnung[0]] = zuordnung[1]
    fobj.close()
    
    while True:
        wort = input("Geben Sie ein Wort ein: ")
        if wort in woerter:
            print("Das deutsche Wort lautet:", woerter[wort])
        else:
            print("Das Wort ist unbekannt")


Dann habe ich das ganze in der Shell importiert ,es war zunächst auch alles richtig,bis es zu Ungereimtheiten kam . Es sollte so eigentlich so aussehen :

code:
1:
2:
3:
4:
5:
6:
7:
8:
Geben Sie ein Wort ein: Germany
Das deutsche Wort lautet: Deutschland
Geben Sie ein Wort ein Italy:
Das deutsche Wort lautet Italien
Geben Sie ein Wort ein: Greece
Das Wort ist unbekannt


Ich musste dann aber feststellen das ich das Programm zu laufen bringen und auch was eingeben kann, er aber nur immer die obersten Namen lesen konnte. Wenn ich also Spain Spanien oben hatte,in der Datei, konnte er das übersetzen ,den Rest erkannte er nicht,wenn ich Deutschland Germany ganz oben in der "woerterbuch.txt "Datei einsetzte konnte er nur das lesen. Das sah dann so aus :

code:
1:
2:
3:
4:
5:
6:
7:
8:
Geben Sie ein Wort ein: Spain
Das deutsche Wort lautet: Spanien
Geben Sie ein Wort ein Italy:
Das Wort ist unbekannt
Geben Sie ein Wort ein: Germany
Das Wort ist unbekannt


Ich habe schon die Dateien mehrmals neu geschrieben ,den Shell neugestartet ,verschiedene Namen probiert und den Text im Dokument herumgeschoben ,es ergab sich immer das selbe Problem oder ist gar nicht mehr gestartet.

Könnte mir vielleicht jemand sagen wo mein (Denk-)Fehler ist? Danke schon mal dafür.

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

16.04.2016 19:22 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es ist die Einrückung
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
woerter = {}

fobj=open("woerterbuch.txt", "r")
for line in fobj:
	zuordnung = line.strip().split(" ")
	woerter[zuordnung[0]] = zuordnung[1]
fobj.close() #erst zumachen, wenn alles eingelesen ist

while True:
	wort = input("Geben Sie ein Wort ein: ")
	if wort in woerter:
		print("Das deutsche Wort lautet:", woerter[wort])
	else:
		print("Das Wort ist unbekannt")


__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 16.04.2016 19:39.

16.04.2016 19:39 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Tatsächlich? Schon wieder, ich dachte eigentlich den Code ausführlich untersucht und extra auf die Einrückung geachtet zu haben. Danke für die Antwort,auf jeden Fall.
Aber es scheint immer noch nicht zu funktionieren. Ich habe mal deine Version der Datei übernommen und das ganze versucht in der Shell zu importieren, es kam aber nur eine Fehlermeldung.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
import woerterbuch

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import woerterbuch
  File "C:\Users\Name\AppData\Local\Programs\Python\Python35-32\woerterbuch.py", line 6, in <module>
    woerter[zuordnung[0]] = zuordnung[1]
IndexError: list index out of range


lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Dr.Java: 16.04.2016 20:01.

16.04.2016 19:58 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hast du eine leere Zeile am Ende des Wörterbuchs?
Dann gibt es beim split auch keine 2 Wörter.

__________________
Syntax Highlighting fürs Board (Link)
16.04.2016 20:01 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Mit Wörterbuch meinst du die Textdatei nehme ich an?
Also ich habe da einfach im Textdokument direkt in der ersten Zeile Spain Spanien stehen,mit einer Leertaste Abstand,dann direkt darunter das nächste,usw.
Aber ansonsten ist das Dokument leer. Meintest du das in etwa mit leerer Zeile?

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

16.04.2016 20:08 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich wette, das Wörterbuch sieht so aus:
code:
1:
2:
3:
4:
5:
6:
Spain Spanien
Germany Deutschland
Sweden Schweden
France Frankreich
Italy Italien

Man beachte Zeile 6.

Lösche die Zeile oder fixe den Code:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
woerter = {}

fobj=open("woerterbuch.txt", "r")
for line in fobj:
	zuordnung = line.strip().split(" ")
	if len(zuordnung) == 2:
		woerter[zuordnung[0]] = zuordnung[1]
fobj.close() #erst zumachen, wenn alles eingelesen ist

while True:
	wort = input("Geben Sie ein Wort ein: ")
	if wort in woerter:
		print("Das deutsche Wort lautet:", woerter[wort])
	else:
		print("Das Wort ist unbekannt")


__________________
Syntax Highlighting fürs Board (Link)
16.04.2016 20:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ah mit dem neuen Code klappt es einwandfrei,danke dir.
Aber ein paar Fragen hätte ich noch.
Zitat:
Lösche die Zeile [...]

Ja,ich glaube meine Datei sieht genauso aus,aber mal blöd gefragt,wie lösche ich denn in einem Textdokument die leere Zeile? Und was genau hast du gemacht damit das Programm funktioniert?Ich meine ich hab gesehen das du " if len(zuordnung) == 2:" ergänzt hast, aber warum ,wie funktioniert das?

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

16.04.2016 20:58 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Leerzeile kannst du löschen, indem du in der Zeile darüber ans Ende gehst und die ENTF Taste drückst. Wenn das nicht geht, such dir einen besseren Editor.

Die leere Zeile enthält kein Leerzeichen. Deshalb entsteht beim Split auch eine Liste mit Länge 1.
Der Code greift aber auf den 2. Eintrag zu. Daher auch der Fehler.
Also liegt es nahe zu prüfen, ob es auch wirklich 2 Einträge gibt. Das mache ich mit len == 2.

__________________
Syntax Highlighting fürs Board (Link)
16.04.2016 21:21 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ach so ,jetzt funktioniert das auch ohne die if Zeile. Vielen Dank nochmal für deine Hilfe.

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

17.04.2016 10:07 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Wörterbuch Python Wort erkennen