Hallo noisefloor,
ich will keine Battle vom Zaun brechen, aber so ganz ohne Widerspruch kann ich's nicht stehen lassen. Damit ich nicht gleich am Anfang die Lust verliere, mich in dieses Forum einzubringen, muss ich für meinen Seelenfrieden (und andere die das vielleicht verfolgen) klarstellen, dass ich mir bei meinem Vorschlag durchaus etwas gedacht habe und dass dieser seine Berechtigung hat.
Es ging mir nicht darum, Zottel ein fertiges Programm zu liefern das er nur noch auf seinem Pi laufen lassen muss. Etwas Eigeninitiative wird hier ja zu recht immer gefordert. Vielmehr ging es um eine Idee, wie er komfortabel die richtigen LEDs ansprechen kann ohne in ein If-Else-Dickicht oder andere Abwege zu geraten. Dazu habe ich einen Vorschlag gemacht, wohl wissend dass das nur eine von vielen anderen Lösungsalternativen ist. Aber genau darin sehe ich den Sinn eines solchen Forums: dass man die Ideen diskutiert. Und ob eine Idee in C oder in Python ausgedrückt wird, ist für mich dabei zweitrangig und keinesfalls abwegig.
Viele Grüße
Dieter
Weil du dich dann nicht implizit darauf verlassen musst, dass die Reihenfolge in deiner Liste / deinem Tupel der Reihenfolge der Zahlen entspricht. Du legst für jede Zahl einen Schlüssel an, der Wert ist, welche Pins dafür auf `high` gesetzt werden müssen.
Klar könnte man die Ziffern in beliebiger Reihenfolge definieren, aber das scheint mir im konkreten Fall ziemlich absurd. Im Sinne von Code-Verständlichkeit finde ich es hier eigentlich zwingend, die Ziffern in der Reihenfolge 0 bis 9 zu definieren. Und so hat der Index seine Berechtigung und ist obendrein performanter als eine Suche über den Schlüssel.
Quote
Am besten gar nicht. Entweder schreibst du idomatisches Python oder idomatisches C. Etwas 1:1 von Programmiersprache A nach Programmiersprache B übertragen zu wollen ist in der Regel irgendwas zwischen schlechte Idee und kapitaler Fehler.
So wie ich versuchen kann, eine Idee auf Englisch oder Deutsch zu erklären, geht das auch mit Python und C. Ich muss mich dabei halt bemühen, Sprachelemente zu verwenden, für die es in der anderen Sprache eine Entsprechung gibt. Und da ist die Liste/ das Tupel dem Array näher als das Dictionary und die Iteration mit Index näher als ein enumerate. Wenn meine Aussprache des "Pythonischen" einen leichten C-Akzent hat, mag das hier sogar von Vorteil sein
Quote
Steht doch im vorherigen Post von mir: das ist ein Anti-Pattern in Python.
Ok, wenn du geschrieben hättest: "Es gibt da ein paar Leute im Internet, die haben sich viel Mühe gegeben, einen guten Programmierstil für Python zu beschreiben. Die empfehlen an dieser Stelle ein enumerate zu verwenden. Und das Tolle dabei: das enumerate liefert dir sogar den Index den du im nächsten Statement zum Ansteuern der GPIO-Pins benötigst". Ich glaube, wenn du so geschrieben hättest, dann hätte ich mich ganz schnell mit dem enumerate angefreundet. (Was dann wiederum Zottel vor ein Problem gestellt hätte falls er nicht auf C++ und eine Klassenbibliothek umsteigen will...)
Quote
Ja, natürlich. Weil: dann hast du den Fehler auch ausgebaut...
Es ging um die Idee und nicht um ein gebrauchsfertiges Programm.
Quote
Der eigentliche Punkt: jemand hat eine Frage zu C und sagt, er muss / will C benutzen - da brauchst du nicht mit Python anfangen und dann auch noch suboptimalen Python-Code in den Thread werfen. Das ist in keinster Weise hilfreich noch zielführend.
Wie gesagt, das sehe ich anders.
Vielleicht können wir es bei dieser Gegenrede dann auch belassen, was meinst du? We agree that we disagree und begegnen uns bei anderer Gelegenheit gerne wieder?