Element in Liste ersetzen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Das sieht ja zu bescheuert aus:

Code: Alles auswählen

if (kategorie.start_jg) <= (user.jg):
    zeile = (kategorie,(("rot",'-'),  (None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-')))
else:
    zeile = (kategorie,((False,'-'),  (None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-'),(None,'-')))
... Tupel kann man ja nicht ändern, wie kann man das schöner machen?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

So?

Code: Alles auswählen

farbe = 'rot' if kategorie.start_jg <= user.jg else False
zeile = kategorie, ((farbe,'-'), *((None,'-'),) * 8)
In specifications, Murphy's Law supersedes Ohm's.
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Mann, mann, mann, da hätte ich mal wieder selbst drauf kommen können! Danke!
Sirius3
User
Beiträge: 17757
Registriert: Sonntag 21. Oktober 2012, 17:20

Das Tuple im Tuple sieht eher aus wie eine Liste. Ein Wert sollte immer nur von einem Typ sein. Die Farbe ist aber mal ein String und mal ein Wahrheitswert. Warum? Für was wird diese Tupelstruktur gebraucht?
Pitwheazle
User
Beiträge: 873
Registriert: Sonntag 19. September 2021, 09:40

Nun ja, ich erstelle damit eine Liste im Template "uebersicht". Dort wird die Arbeit an allen Aufgabenkategorien aufgezeigt und farbig markiert, was noch zu machen, besser zumachen ist und was gut klappt. Die Tupel sind in eine Liste eingebettet und das sieht etwa so aus:

Code: Alles auswählen

[(<Kategorie: addieren>, (('rot', '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'))),
...
(<Kategorie: bruch-und-kommazahl>, (('gruen', Decimal('63')), (None, 20), ('gelb', '24%'), (None, '2:35'), (None, 112.6), (None, '0/15'), (None, 0), (None, 0), (None, 0))), 
(<Kategorie: bruchrechnung>, (('rot', Decimal('0')), (None, 0), ('unset', '-%'), (None, '-'), (None, '-'), (None, '0/15'), (None, 0), (None, 0), (None, 0))), 
(<Kategorie: zuordnungen>, ((False, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'))), 
(<Kategorie: prozentrechnung>, ((False, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-'), (None, '-')))]
und wird im Template hier ausgelesen:

Code: Alles auswählen

 ...
    {% for style, item in zeile %}
        <td class = "{{style}}">{{item}}</td>
    {% endfor %}...
... besser kann ich es mal wieder nicht. Ist da was gegen zu sagen?
Benutzeravatar
noisefloor
User
Beiträge: 3857
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

willst du das nicht besser als Dict implementieren? Im Moment ist da ja irgendein "Magie" hinter, die jedem Element / Index eine Kategorie zuordnet. Dict wäre explizieter.

Und da, wo die Farbe steht, hast du aktuell 3 1/2 Werte: einen String, None, False und 'unset'. Letzteres ist zwar auch ein String, aber hat vermutlich eine andere Bedeutung als "grün" oder "rot"? Das sollte man vermutlich mal mindestens auf eine Farbe oder None eindampfen.

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 13121
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@noisefloor: "unset" ist ein gültiger Farbwert in CSS. Wobei hier ja eine CSS-Klasse gesetzt wird. Die zu aller Verwirrung noch an den Namen `style` gebunden wird.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten