Vereinfachung arbeiten mit Listen
Verfasst: Dienstag 17. Oktober 2023, 20:29
Hallo,
eine Frage an die Runde zum lernen für mich.
Zum weitern lernen habe ich eine kleines Programm mit Gui für den Gewichtsverlauf gebastelt. Unten ein Ausschnitt.
Ich habe den Eindruck das das ganze nicht besondern Python-konform ist. Ich denke irgendwie das ich das viel zu umständlich gemacht habe. Ich glaube ich bin da noch zu sehr im alten Delphi-Muster wo ich vor 15 Jahren ca. mal reingeschnuppert habe.
Geht das besser, kürzer und wenn ja wie? Also insbesondere der Bereich mit den Listen und dem auslesen daraus.
Codeausschnitt:
Auswerten tue ich das Ergebnis dann zum Beispiel so: (was irgendwie mit den nummern recht unübersichtlich ist
eine Frage an die Runde zum lernen für mich.
Zum weitern lernen habe ich eine kleines Programm mit Gui für den Gewichtsverlauf gebastelt. Unten ein Ausschnitt.
Ich habe den Eindruck das das ganze nicht besondern Python-konform ist. Ich denke irgendwie das ich das viel zu umständlich gemacht habe. Ich glaube ich bin da noch zu sehr im alten Delphi-Muster wo ich vor 15 Jahren ca. mal reingeschnuppert habe.
Geht das besser, kürzer und wenn ja wie? Also insbesondere der Bereich mit den Listen und dem auslesen daraus.
Codeausschnitt:
Code: Alles auswählen
def statistik_laden():
...
...
sql_search = 'Select Datum, Gewicht from Gewicht where Gewicht = (select max(Gewicht) from Gewicht)'
zeiger.execute(sql_search)
fetch3 = zeiger.fetchall()
jetzt = "now"
siebentage = "-7 days"
sql_search = f"select Datum, Gewicht from Gewicht where Datum > datetime('{jetzt}', '{siebentage}')"
zeiger.execute(sql_search)
fetch4 = zeiger.fetchall()
# nur Gewichtswerte
liste = []
for werte in fetch4: # alle Werte der letzten 7 Tage in eine Liste packen
liste.append(werte[1]) # [1] = Gewicht, [0] wäre das Datum
anzahl = len(liste)
if anzahl < 2: # wenn keine 2 Werte vorhanden sind, heißt das das in den letzten tagen maximal 1 Eintrag erzeugt wurde und damit kann kein Vergleich stattfinden
liste = [0, 0]
else:
liste = [liste[0], liste[-1]] # nur den letzten Wert und den ersten Wert in die Liste übernehmen
print(liste)
ergebnis = fetch + fetch1 + fetch2 + fetch3 + liste # alle Abfragen zusammenfügen
print(ergebnis)
zeiger.close()
verbindung.commit()
verbindung.close()
return ergebnis
Code: Alles auswählen
daten = statistik_laden()
...
...
label_statistik_erster_wert.config(text=str(daten[2][0]) + " " + "(" + str(daten[2][1]) + ")")
label_statistik_letzter_wert.config(text=str(daten[3][0]) + " " + "(" + str(daten[3][1]) + ")")