Programmbeispiel funzt nicht

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.
Lord
User
Beiträge: 5
Registriert: Samstag 5. Juli 2008, 17:52

Programmbeispiel funzt nicht

Beitragvon Lord » Samstag 5. Juli 2008, 17:59

Hallo Community ...

Ich bin ein Absoluter Anfänger..
Und lerne gerade aus dem Buch " Python, das Umfasende Hanbuch" von Galileo Computing.
Dort ist ein Script zur Datenaufrufe beschrieben .... Ich habe den Code 1:1 abgetippt und es läuft nicht, es kommt immer ein Fehler der Besagt:

Traceback (most recent call last):
line 7, in <module>
woerter[zuordnung[0]] = zuordnung[1]
IndexError: list index out of range


Hier der Code:

Code: Alles auswählen

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 = raw_input('Geben Sie ein Wort ein: ')
  if wort in woerter:
    print 'Das Deutsche Wort lautet: ', woerter[wort]
else:
  print 'Das Wort ist unbekannt!'


Sieht einer den Fehler? :cry:
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Samstag 5. Juli 2008, 18:04

Lass dir mal hinter

Code: Alles auswählen

zuordnung = line.split(" ")

den Inhalt von "zuordnung" ausgeben, dann kommst du sicher selber drauf.
DasIch
User
Beiträge: 2423
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Re: Programmbeispiel funzt nicht

Beitragvon DasIch » Samstag 5. Juli 2008, 18:05

Lord hat geschrieben:Sieht einer den Fehler? :cry:

Lord hat geschrieben:Python, das Umfasende Hanbuch" von Galileo Computing.

Ja ;)

Ohne woerterbuch.txt zu kennen schwer zu sagen aber könnte es sein das in der entsprechenden Zeile einfach nichts steht?

Beispiel:

Code: Alles auswählen

>>> text = '''Hallo
...
... hallo'''
>>> for line in text:
...     words = line.split(' ')
...     print len(words)
...
1
1
1
1
1
0
0
1
1
1
1
1
>>> example_list = []
>>> len(example_list)
0
>>> example_list[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
Lord
User
Beiträge: 5
Registriert: Samstag 5. Juli 2008, 17:52

Beitragvon Lord » Samstag 5. Juli 2008, 18:35

Spain Spanien
Germany Deutschland
France Frankreich
Italy Italien



Das ist der Inhalt... halt Übungszwecke nech...
Lord
User
Beiträge: 5
Registriert: Samstag 5. Juli 2008, 17:52

Beitragvon Lord » Samstag 5. Juli 2008, 18:58

@ EyDu:

Das ist die Ausgabe:

['{\\rtf1\\ansi\\ansicpg1252\\cocoartf949\\cocoasubrtf330']
['{\\fonttbl\\f0\\fswiss\\fcharset0', 'Helvetica;}']
['{\\colortbl;\\red255\\green255\\blue255;}']
['\\paperw11900\\paperh16840\\margl1440\\margr1440\\vieww9000\\viewh8400\\viewkind0']
['\\pard\\tx566\\tx1133\\tx1700\\tx2267\\tx2834\\tx3401\\tx3968\\tx4535\\tx5102\\tx5669\\tx6236\\tx6803\\ql\\qnatural\\pardirnatural']
['']
['\\f0\\fs24', '\\cf0', 'Spain', 'Spanien\\']
['Germany', 'Deutschland', '\\']
['France', 'Frankreich\\']
['Italy', 'Italien}']


Woran liegt das??? Solange mache ich es nicht um zu kapieren, warum Python sowas macht oder es so sieht...
BlackJack

Beitragvon BlackJack » Samstag 5. Juli 2008, 21:59

Das hat nichts mit Python zu tun, sondern dass Deine Textdatei keinen reinen Text enthält, sondern offenbar eine RTF-Datei ist.

Die Datei solltest Du mit einem Texteditor erstellen und nicht mit einer Textverarbeitung.
Lord
User
Beiträge: 5
Registriert: Samstag 5. Juli 2008, 17:52

Beitragvon Lord » Samstag 5. Juli 2008, 22:01

Also ich habe jetzt mal die CD zum Buch eingelegt und mir den Quellcode angeguckt und dabei mit meinem Zeile für Zeile veglichen.

Ich habe nicht einen Fehler gefunden, beide sind 100% identisch!

Troztdem läuft das Programm von dem Autor und meins nicht!
Ich habe sogar den Quellcode kopiert und neu eingefügt!

Selber Fehler!

Obwohl der Quellcode vom Autor vorher noch lief, sagt dann den selben Fehler an!


Wie ist das den Möglich???
Bin voll am Verzweifeln!

----------------------------------------------------------------------------------

@Black Jack:

Ja das kann sein, ich habe einen Mac und er hat eine rtf Datei raus gemacht welche ich dann in txt unbenannt habe...

Habe es aber auch als rtf beuzuhaten und den Quellcode darauf abgeändert, selber Fehler!

Selber Grund?

Weiss jetzt nicht mehr weiter!
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Samstag 5. Juli 2008, 22:07

Der Text sollte nicht in einer Datei im RichtText-Format stehen, sondern einfach so in einer Datei.

Da du anscheind nen Mac hast, mal ein Tip:

Code: Alles auswählen

cat woerter.txt

In der Shell (Im Finder das "Terminal" aufrufen) sollte exakt den Text ausgeben, nicht mehr.
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Samstag 5. Juli 2008, 22:53

Hallo Lord,

was in Deiner Ausgabe vor den ersten Dict-Einträgen ausgegeben wird, ist der "Header" der Datei, der der sie öffnenden Textverarbeitungsanwendung die Einstellungen vorgibt. Wenn Du schon eine Textverarbeitung verwendest, achte darauf, dass beim "Save As" auch als Format "txt" eingestellt ist.

Womit schreibst Du denn Deine Pyhon-Skripte? Nimm doch genau diesen Texteditor, um die Datei zu speichern.

Gruß,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Re: Programmbeispiel funzt nicht

Beitragvon Michael Schneider » Samstag 5. Juli 2008, 22:58

Hallo Lord,

wenn Du ganz sicher gehen willst, sollte es so gehen (nur zum Test):

Code: Alles auswählen

woerter = {}

filename = "woerterbuch.txt"
text = """Spain Spanien
Germany Deutschland
France Frankreich
Italy Italien"""

fobj = open(filename, "w")
fobj.write(text)
fobj.close()

fobj = open(filename, "r")
for line in fobj:
    line = line.strip()
    zuordnung = line.split(" ")
    woerter[zuordnung[0]] = zuordnung[1]
fobj.close()

while True:
  wort = raw_input('Geben Sie ein Wort ein: ')
  if wort in woerter:
    print 'Das Deutsche Wort lautet: ', woerter[wort]
else:
  print 'Das Wort ist unbekannt!'

Ungetestet...

Grüße,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Lord
User
Beiträge: 5
Registriert: Samstag 5. Juli 2008, 17:52

Beitragvon Lord » Samstag 5. Juli 2008, 23:02

Also meine Python Scripte schreibe ich mit Eclipse (Gute Wahl?)

Danke für den Tip mit den Coden in dem Standard Texverarbeitungsprogramm durchzuführen ;-)

Ich habe für Mac jetzt AlienConverter... Der hat aus der rft -Datei eine reine txt -Datei gemacht und es funktionierte!

Nebenbei, ich habe manchmal das Gefühl mich fest zu fahren bzw. mir den Code nicht merken zu können... Gibt es dagegen ein Rezept? Wie habt ihr es am besten gelernt? womit schreibt ihr eure Python-Programme?

Danke nochmal für eure Hilfe! :D
DasIch
User
Beiträge: 2423
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Samstag 5. Juli 2008, 23:09

Lord hat geschrieben:Nebenbei, ich habe manchmal das Gefühl mich fest zu fahren bzw. mir den Code nicht merken zu können... Gibt es dagegen ein Rezept? Wie habt ihr es am besten gelernt? womit schreibt ihr eure Python-Programme?

Zum schreiben ganz simpel mit (g)vim oder auch gerne mal gedit(mit Plugins).
Das wirkliche lernen von einzelnen Dingen klappt am besten dadurch das man es einfach einsetzt. Mach irgendwas und was du ständig brauchst weisst du dann automatisch, den Rest kannst du sowieso vergessen :lol: .
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Beitragvon Darii » Sonntag 6. Juli 2008, 08:44

Lord hat geschrieben:Ja das kann sein, ich habe einen Mac und er hat eine rtf Datei raus gemacht welche ich dann in txt unbenannt habe...
Auch wenn dein Problem schon gelöst ist, Datei umbenennen bringt nie was, das ist so als würdest du auf ein Auto Bus schreiben um einen Bus zu bekommen.

Für die Zukunft: Ich vermute du arbeitest mit TextEdit. Darstellung->in reinen Text umwandeln
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Sonntag 6. Juli 2008, 09:26

Hallo Darii!

Darii hat geschrieben:Auch wenn dein Problem schon gelöst ist, Datei umbenennen bringt nie was, das ist so als würdest du auf ein Auto Bus schreiben um einen Bus zu bekommen.

So pauschal kann man das auch wieder nicht sagen. Ich muss mit einem (französischen) Tool arbeiten, bei dem es einfach nicht möglich ist, Dateien mit der Endung "jpg" oder "gif" anzuhängen. Sobald man aber "jpg" in "jpeg" umwandelt, kann man dieses Bild anhängen und sogar als JPEG öffnen.
Andererseits kann man jenes Tool auch nicht als Maß aller Dinge ansehen. ;-)

Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
BlackJack

Beitragvon BlackJack » Sonntag 6. Juli 2008, 09:50

@Michael: Doch so pauschal kann man das sagen: Durch Umbenennen ändert sich der Inhalt der Datei nicht. Das ein Programm bestimmte Endungen erwartet, hat damit nichts zu tun.

Wer ist online?

Mitglieder in diesem Forum: Baidu [Spider], Bing [Bot], jan.b