Programmieren funktioniert nicht mittels Raten, du musst schon wissen was du machst. Was soll denn passieren, wenn du Listen von Listen subtrahierst, das ist doch ein wenig unsinnig. Die list-Aufrufe in den Zeilen 18, 20 und 21 deuten auch auf geraten hin. Die sind nämlich total überflüssig. Du suchst wahrscheinlich Mengen (sets). Zeilen 24 bis Ende sind wahrscheinlich auch nicht so gemeint, wie sie dort stehen. Da werden nämlich Tupel mit Integern in einer Liste vermischt. Verschiedene Datentypen in einer Liste möchte man normalerweise vermeiden.
Und dann noch ein wertvoller Hinweise: Schreibe Code niemals blind runter, sondern teste die Zwischenschritte. Bei dir schmiert das Programm ja schon relativ früh ab, der ganze Rest danach baut dann auf falschen Annahmen auf. Lasse deinen Code also zwischendurch mal laufen. Und wenn er irgendwo nicht durchläuft, dann behebe erst den Fehler und programmiere anschließen dahinter weiter.
Python Zufallsgenerator: bestimmte Zahlen ausgrenzen
-
- User
- Beiträge: 21
- Registriert: Sonntag 14. September 2014, 09:42
Hi,
ich mach das normalerweise schon so. Auch heute. Nur bin ich bei dem Problem mit den Listen hängen geblieben, hab aber den restlichen Code schonmal eingetippt, sodass ich später nur noch Details ändern muss.
Btw: Das mit dem Listen voneinander subtrahieren hat im letzten Programm bereits funktioniert, wenn du dir die paar Nachrichten vor deiner mal durchliest. Das hat wirklich wunderbar funktioniert. Aber jetzt mit den Tupeln war das nicht mehr so leicht. Mir ist aufgefallen, dass es bei zs eine Liste mit [] ergibt und bei chosen eine mit {}. Ich hab vermutet, dass dort das Problem liegt, bin aber noch zu unerfahren um sowas zu lösen. Daher hab ich auch das aktuell fehlerhafte Programm online gestellt, damit mir bei eben diesem Problem geholfen werden kann.
ich mach das normalerweise schon so. Auch heute. Nur bin ich bei dem Problem mit den Listen hängen geblieben, hab aber den restlichen Code schonmal eingetippt, sodass ich später nur noch Details ändern muss.
Btw: Das mit dem Listen voneinander subtrahieren hat im letzten Programm bereits funktioniert, wenn du dir die paar Nachrichten vor deiner mal durchliest. Das hat wirklich wunderbar funktioniert. Aber jetzt mit den Tupeln war das nicht mehr so leicht. Mir ist aufgefallen, dass es bei zs eine Liste mit [] ergibt und bei chosen eine mit {}. Ich hab vermutet, dass dort das Problem liegt, bin aber noch zu unerfahren um sowas zu lösen. Daher hab ich auch das aktuell fehlerhafte Programm online gestellt, damit mir bei eben diesem Problem geholfen werden kann.
@qEagleStrikerp: Der Unterschied zwischen [] und {} ist der, dass ersteres eine Liste und zweiteres ein Set erzeugt. Wenn Dir soetwas unklar ist, solltest Du es in der Python-Dokumentation nachlesen, statt es unverstanden zu verwenden.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Vor allem sollte man solche Dinge sofort ad hoc in einer interaktiven Shell (aka REPL) austesten und damit experimentieren
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- User
- Beiträge: 21
- Registriert: Sonntag 14. September 2014, 09:42
Hi zusammen,
hab mich letztens mal wieder hingesetzt und das Programm komplett neu geschrieben, diesmal mit Dictionarys. Hab es dann in einem 2. Python Programm über "exec" in einer Schleife aufgerufen und schon kamen erwartete Werte raus.
Danke für eure Bemühungen!
hab mich letztens mal wieder hingesetzt und das Programm komplett neu geschrieben, diesmal mit Dictionarys. Hab es dann in einem 2. Python Programm über "exec" in einer Schleife aufgerufen und schon kamen erwartete Werte raus.
Danke für eure Bemühungen!
@qEagleStrikerp: Warum um Himmels willen mit `exec`‽ Das ist mit Sicherheit nicht das richtige Werkzeug für so eine Aufgabe.
-
- User
- Beiträge: 21
- Registriert: Sonntag 14. September 2014, 09:42
Erstaunlicherweise habe ich aber mit folgendem Code (ist nur ein Ausschnitt) genau die Werte bekommen, die ich zuvor theoretisch berechnet habe. Daher eignet es sich scheinbar doch.BlackJack hat geschrieben:@qEagleStrikerp: Warum um Himmels willen mit `exec`‽ Das ist mit Sicherheit nicht das richtige Werkzeug für so eine Aufgabe.
Code: Alles auswählen
for i in range(1000000):
exec(open("dv core ohne fatumknoten.py").read())
Edit 2: Ich habe es gerade nochmal probiert, es geht doch ^^. Bei dem alten Programm hat also generell irgendwas wohl nicht so ganz gestimmt.
@qEagleStrikerp: Nur weil etwas funktioniert eignet es sich nicht automatisch. Man kann auch Nägel mit dem Griff eines Schraubendrehers in die Wand kloppen, das macht den Schraubendreher aber nicht zum richtigen Werkzeug für diese Aufgabe.
-
- User
- Beiträge: 21
- Registriert: Sonntag 14. September 2014, 09:42
^^ Da hast du natürlich vollkommen recht. Wie ich ja nachträglich noch geschrieben habe, funktioniert das Programm ja auch mit Schleife, was exec überflüssig macht.BlackJack hat geschrieben:@qEagleStrikerp: Nur weil etwas funktioniert eignet es sich nicht automatisch. Man kann auch Nägel mit dem Griff eines Schraubendrehers in die Wand kloppen, das macht den Schraubendreher aber nicht zum richtigen Werkzeug für diese Aufgabe.