Seite 1 von 2
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 16:41
von ArtooDetoo
Eigentlich tut mein Code das schon, ich habe nur den Fehler in der print-Funktion übersehen, in der statt
in diesem Fall nur i stehen sollte.
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 16:52
von __deets__
Die Zuordnung der LEDs zu einem Index löst man, indem man eine Liste macht, in der am entsprechenden Index das LED Objekt ist. So wie ich das wiederholt gezeigt habe. Eine Alternative wäre ein Wörterbuch, aber nur dann, wenn man deutlich weniger LEDs als Schalter hat. Hast du nicht. Und zu guter Letzt gibt’s natürlich auch noch die allseits beliebte if-Kaskade. Macht man so nicht, aber was soll’s.
Code: Alles auswählen
if ld[0]:
led_fuer_index_null.on()
if ld[1]:
diese_andere_led.on()
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 17:18
von Manny
Das mit der Kaskade kann ich noch am einfachsten nachvollziehen.
Jetzt schalte ich zwar die LED's dazu an aber so schalte ich doch alle an?
Es sollen aber nur die angehen die den Wert 1 haben, alle Anderen haben den Wert 0 und sollen aus bleiben.
Besteht nicht die Möglichkeit das mir das Programm den Index Wert zurück gibt bei dem eine 1 steht.
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 17:26
von __deets__
Genau das tut das if doch. Einschalten wenn der Wert an de stelle wahr ist. NICHTS machen, wenn er falsch ist. Simpler geht es nicht.
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 17:41
von Manny
hmm, ich habe das jetzt mal getestet:
Code: Alles auswählen
if ld[0]:
led_fuer_index_null.on()
if ld[1]:
diese_andere_led.on()
habe aber anstatt eine LED anzusteuern mir lediglich den wert anzeigen lassen mit print
Leider klappt das so nicht, ich bekomme nur die 1 oder 0 angezeigt nicht aber den Index, das müssten die Zahlen von 0-19 bzw. 1-20 sein
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 17:45
von __deets__
Der Index ist doch 0. Oder 1. Der steht doch in der if-Klausel. Und wozu willst du den Index denn überhaupt? Du kannst doch gar nichts damit anfangen. Du hast doch keine Liste von LEDs.
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 18:12
von Manny
Ich glaube wir reden hier aneinander vorbei?
Lassen wir doch mal die LED ganz außen vor.
Ich habe eine Liste die sieht so aus:
Code: Alles auswählen
Index der Liste: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Inhalt der Listen Position: 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Ergebnis: 4 12
Ich will nun lediglich als Ergebnis die Zahlen 4 und 12 angezeigt bekommen.
Später kann ich dann immer noch eins Zuweisung machen und z.B. sagen: Nr.4 ist jetzt GPIO(17) und Nr.12 ist jetzt GPIO(27)
Ich hoffe ich konnte jetzt klar machen was ich überhaupt will?
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 18:16
von __deets__
indizes = [index for index, value in enumerate(ld) if value]
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 18:26
von Manny
Code: Alles auswählen
indizes = [index for index, value in enumerate(ld) if value]
Muß ich das jetzt irgendwie in eine Schleife einbauen und wo wird das Ergebnis angezeigt?
Bekomme jetzt diese Fehlermeldung:
Exception ignored in: Exception ignored in: Exception ignored in:
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 18:57
von __deets__
Das ist eine Schleife. Und da wird nichts angezeigt, denn da steht kein print. Kannst du doch danach machen. Deine Fehlermeldung kann ich nicht entziffern, bitte die gesamte Fehlermeldung anzeigen.
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 19:05
von Sirius3
@Manny: zeig doch mal den Code den Du ausführst, und die komplette Fehlermeldung. Mit Indizes arbeitet man in Python eigentlich so gut wie nie. Wenn doch, macht man bestimmt etwas falsch.
Re: Listenelement eine Variable zuordnen
Verfasst: Donnerstag 6. Dezember 2018, 19:25
von Manny
Es scheint jetzt zu klappen !
Ich habe den Code mit einem print erweitert, jetzt zeigt er mir auch die richtigen Werte an.
indizes = [index for index, value in enumerate(ld) if value]
print(indizes)
Vielen Dank euch @llen für die Hilfe, ich denke darauf kann ich jetzt weiter aufbauen.
