Posts by Hofei

    Danke für deinen Hinweis, werd ich im Hinterkopf behalten.

    3 Jahre hat er schonmal geschafft, wurde nämlich von der alten Platine mit genommen. Sollte es mal Probleme geben, weiß ich wo ich ansetzen muss. Aktuell hängt auf dem ULN eh nur eine RGB und ein Relais.

    Wenn ihr jedoch Kritik und Verbesserungen zum Programmierstill habt, dann wäre ich euch auch sehr dankbar. Würde es gerne von Anfang an richtig lernen.

    Vorweg gleich, auf deine konkrete Frage kann ich nicht antworten. GUI Programmierung liegt mir auch nicht wirklich. Jedoch möchte ich deinem Wunsch nach Konstruktive Kritik nachkommen


    Zeile 1:

    Vermeide * Imports, die müllen zum einen den globalen Namespace zu, und bewirkt dass man die Übersicht verliert, welche Funktion/Klasse/Objekt zu welchen Modul zugehörig ist.

    Also besser: import tkinter


    Womit Zeile 2 überflüssig wird.


    Zeile 8 + 9:

    Konstanten schreibt man GROß, Variablen und Funktionsnamen dafür durchgehend klein (siehe Zeile 34, 37, 40). Klassennamen werden in CamelCase geschrieben.


    Zeile 10, url ist keine Konstante, da du sie ja im Verlauf des Programmes verändern willst, womit sie auch nicht mehr im globalen Namensraum sein soll. Ebenso Zeile 11 - 15


    Verwende gleich einen Editor(mit IDE am besten) so hast du gleich eine Syntaxhighlighting und der Editor bekritelt (so wie ich gerade) die Verstöße gegen PEP 8

    ann ist die Antwort hier nun verboten und SPAM?

    nö, meinte nur wegen : "Bei neuen Problemen ist es besser einen neuen Thread zu eröffnen"



    Ich bastel gerade mit matplotlib und stelle fest, dass es einfacher wäre ich hätte Datum und Zeit als einen kompletten String in der Datenbank ... Fand das im Februar so eben übersichtlicher ..

    am besten einfach als timestamp abspeichern



    Und ja, Grafana hab ich schon mal gehört und gesehen, mich aber noch nicht damit beschäftigt. Ich hab mich damals für matplotlib entschieden ..

    würd ich überdenken ;)

    https://kuehltest.linus.dev

    Stromzähler mit Raspberry Pi und ModBus auslesen

    Wetterstation inkl. Abgleich mit Vorhersagen


    Hier ein paar Links von meinen Dashboards^^

    Aber ganz unrecht hab ich damit nicht, dass der speicher außerhalb vom Aufruf definiert werden muss


    Mein Tipp an dich, mach die ganz grundsätzlich mal mit folgenden Punkten vertraut, bevor du bei deinem Projekt weiter arbeitest:

    Gültigkeitsraum einer Variable (Scope)

    (:;)



    Aber dann selbst was machen, da hapert es mit der Umsetzung, weil ichs wohl doch nicht so kapiert oder verinnerlicht hab.

    Das ist ja kein Problem, kannst ja gerne immer hier nachfragen (also im Forum, nicht im selben Thread :lol:)



    Meine Datenbank speichert Zeit und Datum separat ab. Ich kann da auch Werte nach Datum usw. abrufen und verarbeiten.

    Das ist ja umständlich, warum nicht in einem Rutsch.


    Das mit der Liste oben ist für mich ein kleines Progrämmchen zum rumprobieren und verstehen wie alles funktioniert und zusammenhängt. Immer kleine Schritte gehen ...

    Aber ja, wenn es erstmal nur zum lernen dient alles ok.


    Du schriebst, du willst das ganze Visualisieren....kennst du Grafana (:https://grafana.com/

    wenn man immer alles herumreicht funktioniert das Beispiel von Hofei aber nur 1 Mal. In einer Endlosschleife würde der Speicher bei jedem Aufruf von main() wieder "genullt" werden. Sowas muss ich doch irgendwo "außerhalb" definieren, dass es eine Liste namens Speicher gibt in die Werte geschrieben werden Können.

    Nein


    ->

    Code
    def main():
    speicher = {"a": [], "b": []}
        while True:
        speicher = messwert_hinzufuegen(speicher, "a", 1)
        speicher = messwert_hinzufuegen(speicher, "b", 2)
        speicher = messwert_hinzufuegen(speicher, "a", 3)
    main()

    ;)



    Mir fehlt wohl noch sehr viel zum richtigen Verständnis in Python. Zb. die Listen die du in main() definierst ("speicher_a = []")... das ist doch auch sowas wie ne globale Variable?

    Nein ist keine globale Variable, denn du musst diese explizit in die Funktion mit übergeben.


    Mein Tipp an dich, mach die ganz grundsätzlich mal mit folgenden Punkten vertraut, bevor du bei deinem Projekt weiter arbeitest:

    • Gültigkeitsraum einer Variable (Scope)
    • Verwendung von Funktionen
    • Funktionsweisen von Klassen
    • Verwendung von for und while Schleifen
    • Iteration
    • Listen
    • Dictionarys
    • Sets
    • Mutable - Immutable


    Da ich für jeden Messwert eine eigene Liste haben möchte ist die Reihenfolge für den Mittelwert eigentlich egal. Die Werte kommen später in die Sqlite Datebank und lassen sich hier ja jederzeit abrufen um damit neue Listen zu bilden.

    Dann wäre es aber gleich von Vorteil, wenn du dir den Zeitstempel mit speicherst in die Liste

    Grundsätzlich bitte neuer Thread bei neuem Problem.


    Zum einen ja, könntest du das über eine Klasse machen, musst aber nicht.

    Deine Funktion oben funktioniert nur, weil du schon wieder mit globalen Variablen arbeitest!


    oder



    EDIT: Am besten aber du beschreibst mal die Gesamtanforderung / Ziel.

    Hallo,


    grundsätzlich würde ich dir empfehlen, wenn du ernsthaft Python lernen willst auf ein Buch zurück zugreifen. Da mir deutschsprachige Bücher lieber sind, empfehle ich dieses hier: https://www.rheinwerk-verlag.de/python-3_4467/

    Bevorzugt die PDF Variante, da sich damit leichter nach Schlagwörtern suchen lässt.


    Auch so glaube ich, ist das Verständnis von Klassen bei dir noch etwas falsch (ich kann mich natürlich auch irren). Deshalb hier mal ein vereinfachtes Beispiel:


    So zunächst eine vereinfachte Darstellung:

    Da man Code aber nicht wiederholen soll (DRY = Dont repeat yourself), hier auch nochmals eine Funktionalisierte Version:


    Zum besseren Verständnis empfiehlt es sich, wenn du dir den Programmablauf in einem Debugger ansiehst.


    EDIT: Natürlich lassen sich die Funktionen noch variabler gestalten, aber zur Veranschaulichung wollte ich es nicht zu komplex gestalten.

    Hallo und Herzlich Willkommen im Forum,

    bin mir jetzt nicht ganz sicher ob ich dich richtig verstanden habe, aber du willst sowas hier?!

    Python
    import random
    eingabe = input("Eingabe: ")
    if eingabe in ["Hi", "Hallo", "Guten Morgen", "Guten Mittag", "Guten Abend", "Hey", "Yo", "Wie geht's?"]:
    ausgabe = ["Hallo Mensch.", "Hi, wie geht's?", "Schön dich kennen zu lernen", "Hallo!"]
    elif eingabe in ["Tschüss", "Auf Widersehen"]:
    ausgabe = ["Bye!", "Tschau"]
    else:
    ausgabe = ["Habe dich nicht verstanden"]
    print(random.choice(ausgabe))