Mastermind-Löser Exception Problem

Code-Stücke können hier veröffentlicht werden.
Antworten
mccom
User
Beiträge: 7
Registriert: Mittwoch 1. Dezember 2010, 14:07

*gelöscht*
Zuletzt geändert von mccom am Dienstag 28. Juni 2011, 09:56, insgesamt 4-mal geändert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Da wir momentan alle keine funktionierenden Glaskugeln besitzen ist die wichtigste Frage: Welche Exception wird eigentlich geworfen? Zeige am besten den gesamten Traceback, dann kann man dir helfen. Und wenn du eine Datei verlinks, dann solltest du auch dafür sorgen, dass man auch an den Code kommt ;-)
Das Leben ist wie ein Tennisball.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

und nutze bitte das Wort Python und nicht Phyton, welches du dreimal verwendet hast :mrgreen:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
mccom
User
Beiträge: 7
Registriert: Mittwoch 1. Dezember 2010, 14:07

*gelöscht*
Zuletzt geändert von mccom am Dienstag 28. Juni 2011, 09:56, insgesamt 1-mal geändert.
lunar

@mccom: Dir sollte auch klar sein, dass Du diese Arbeit möglicherweise nicht einfach so von Deiner Website verbreiten darfst. Eine Matura-Arbeit ist jetzt vielleicht nicht die Welt, unterliegt aber trotzdem urheberrechtlichem Schutz.

Davon abgesehen sollte es mit ein bisschen Eigenengagement auch problemlos möglich sein, die „Emailaddy“ des Autoren herauszufinden oder eine anderweitige Kontaktmöglichkeit zu erlangen. Die Schule, an der diese Arbeit geschrieben wurde, hat bestimmt ein Sekretariat mit entsprechender Kontaktadresse, an die man eine Bitte um Kontakt zum Schüler oder zumindest zum Betreuer bitten kann.

Um die eigentliche Fehlermeldung zu erhalten, musst Du den "except"-Block und die "try"-Anweisung entfernen, und das Programm nochmals ausführen. Ob das allerdings zielführend ist, sei dahingestellt. Die Qualität des gesamten Quelltexts ist so unterirdisch, dass ich persönlich nicht die geringste Lust habe, diesen zu lesen, geschweige denn zu korrigieren, und vielen anderen wird es da wahrscheinlich ganz genauso gehen.
mccom
User
Beiträge: 7
Registriert: Mittwoch 1. Dezember 2010, 14:07

*gelöscht*
Zuletzt geändert von mccom am Dienstag 28. Juni 2011, 09:57, insgesamt 1-mal geändert.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

lunar hat geschrieben:Die Qualität des gesamten Quelltexts ist so unterirdisch, dass ich persönlich nicht die geringste Lust habe, diesen zu lesen, geschweige denn zu korrigieren, und vielen anderen wird es da wahrscheinlich ganz genauso gehen.
Ich kann mir überhaupt niemanden vorstellen, der Lust hat, sich mit diesem Quelltext länger als 10 s zu beschäftigen, denn die reichen, um sich mit Entsetzen von ihm abzuwenden.

@mccom: Beschäftigung mit Python ist ganz gewiss eine lohnende Sache, das Master-Mind-Problem ebenfalls. Aber tu dir diesen Quelltext nicht an. Da kannst du nur lernen, wie man es nicht macht!
mccom
User
Beiträge: 7
Registriert: Mittwoch 1. Dezember 2010, 14:07

*gelöscht*
Zuletzt geändert von mccom am Dienstag 28. Juni 2011, 09:57, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

mccom hat geschrieben:Quellcode von ihm ist schlimm? Gut zu wissen, also wenn dann nach diesem Vorbild sauber neu-interpretieren...
Ja sehr schlimm - wenn der gezeigte Ausschnitt repraesentativ ist. Ich fuerchte als Vorbild ist das nicht sonderlich hilfreich. Versuche den Algorithmus wenn moeglich aus der Arbeit - nicht dem Code - herauszuholen oder such dir eine einfachere Mine. Sonst bleibt nur noch die Empfehlung einer guten Nervenheilanstalt ... ;)
lunar

@mccom: Die Schule gibt die Adresse sicherlich nicht heraus, doch sie kann über den Betreuer der Arbeit Kontakt mit diesem Schüler aufnehmen, und Deine Adresse an diesen Schüler weiterleiten, so dass dieser Schüler von sich aus Kontakt mit Dir aufnehmen kann. Das hat nichts mit Kanonen und Spatzen zu tun, eine E-Mail ist schnell geschrieben. Das wäre mein erster Ansatz gewesen, weit vor einer Suche auf Facebook, zumal mir nicht ganz klar ist, warum in Teufels Namen der Autor dieser Arbeit Fan des FC Bayern sein sollte ...

Bei der Fehlermeldung ist für mich persönlich jetzt jedenfalls Schluss. Ein NameError durch eine falsch geschriebene Variable, das wäre noch im Rahmen gewesen, aber die Ursache eines ungültigen Index-Zugriffs herauszufinden, ist mehr, als ich bei diesem Quelltext zu tun gewillt bin.

Soweit ich das Inhaltsverzeichnis dieser Arbeit gesehen habe, sind dort allerdings mögliche Lösungsstrategien beschrieben. Angesichts der Qualität des Quelltexts ist es daher sinnvoller, eine dieser Strategien anhand der Beschreibung in der Arbeit von Grund auf neu zu implementieren.
mccom
User
Beiträge: 7
Registriert: Mittwoch 1. Dezember 2010, 14:07

*gelöscht*
Zuletzt geändert von mccom am Dienstag 28. Juni 2011, 09:57, insgesamt 2-mal geändert.
lunar

@mccom: Es gibt nichts, wofür Du Dich hier entschuldigen müsstest (mal abgesehen von der Wortschöpfung "Emailaddy" ;) ). Ich bin keinesfalls genervt, und entschuldige mich dafür, wenn das so gewirkt hat.

Letztlich wollte ich Dir nur auf eine Kontaktmöglichkeit zum Schüler hinweisen, da die Aussicht auf Hilfe hier aufgrund der geringen Qualität des Quelltexts sehr gering sind. Und das ist – nur um das klarzustellen – selbstverständlich nicht Deine Schuld, es ist ja nicht einmal Dein Quelltext. Es ist nur eine einfache Tatsache.

Auf die Idee, den Autoren über Twitter und Blogspot zu suchen, wäre ich ehrlich gesagt gar nicht gekommen.
BlackJack

Ich wusste das Thema hatten hatte ich schon mal beackert: Hier ist mein Computerspieler von damals: http://paste.pocoo.org/show/38982/
mccom
User
Beiträge: 7
Registriert: Mittwoch 1. Dezember 2010, 14:07

@BlackJack: Danke fürs raussuchen. Hab es mir kopiert um es nachzuvollziehen. Hab die Prints mit () versehen, weil er sonst meckert. Einziges Problem noch, das er ifilter nicht finden kann? Muss man das extra laden?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

mccom hat geschrieben:@BlackJack: Danke fürs raussuchen. Hab es mir kopiert um es nachzuvollziehen. Hab die Prints mit () versehen, weil er sonst meckert. Einziges Problem noch, das er ifilter nicht finden kann? Muss man das extra laden?
Du musst wissen, dass Python2.x und Python3.x nicht kompatibel zueinander sind. Du verwendest anscheinend Python3.x, der Code ist für Version 2.x.

Einige Funktionen des itertools-Moduls wurden in die Standardfunktionen übernommen, da nun auch dort konsequent auf Iteratoren gesetzt wird, anstatt neue Listen zu generieren. http://docs.python.org/py3k/library/functions.html

Die Lösung für das import Problem besteht also darin, dieses einfach wegzulassen und das "i" als Präfix bei den Funktionsaufrufen zu entfernen ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

Ausserdem gibt es in Python 3.x die `next()`-Methode auf Iteratoren nicht mehr -- muss man die also durch die neue `next()`-Funktion ersetzen und `raw_input()` heisst nur noch `input()`.
mccom
User
Beiträge: 7
Registriert: Mittwoch 1. Dezember 2010, 14:07

*kopf gegen tisch*

Da hab ich mir ja ne schöne neue Sprache gesucht. Hab mich damals bei aufstieg von Php2 bis php5 jedes mal aufs neue gefreut wenn funktionen verschwanden oder sich änderten ;-)

Aber vielen dank, werde gleich mal alles umsetzen und schaun ob ich es hinbekomme!
BlackJack

@mccom: Da hast Du ausgerechnet "jetzt" halt den ersten Versionssprung seit einer Ewigkeit erwischt, bei dem mal mit der Rückwärtskompatibilität gebrochen wurde -- dann aber auch richtig.

Bei Python 3.x sollte auch ein Programm namens `2to3` dabei sein, das beim Umschreiben hilft und versucht möglichst viel automatisiert "modernisiert". Bei einigen Sachen muss man trotzdem noch per Hand nachbessern, aber bei dem Mastermind-Löser von mir erwischt das Programm alles.

Ansonsten ist auch die 2.7er-Version ein *aktuelles* Python -- 2.x und 3.x werden momentan noch gleichwertig nebeneinander angeboten. Ich habe bis vor kurzem noch mit und für die 2.5 entwickelt, einfach weil das auf einigen "stabilen" Betriebssystemen immer noch das Standardpython ist, und auch bei manchen alternativen Python-Implementierungen der Stand der Dinge ist.
Antworten