Wie sage ich es in Python ? (Einsteigerfragen)

  • Hallo

    ich habe mittels suche im Internet und lesen versciedener Abhandlungen und Beispielen es mit viel probioeren geschafft ein Script zu erstellen mit dem ich mit 2 Temperatur sensoren die Temperaturen einlesen kann. z. zeit auf der Steckplatine.

    Ich möchte es nutzen um z.b. die Vorlauf und Rücklauf Temperaturen der Heizung bzw. der H_Körper zu erfassen.

    Nun mein Problem ich bekomme die Werte gedruckt, möchte diese aber über eine im Programm vorgegebene Zeit " Schleifen Anzahl, Schleifen pause" erfassen.

    Am besten mit CSV geht aber auch mit text file die ich mit EXel lesen kann.

    Derzeit kann ich einen Wert in eine datei schreiben .

    Schaut euch bitte mal das Script an und gebt mir Hinweise Tipps ob ich nicht zu kompliziert gedacht habe ?

    Was ich besser machen könnte und wie ich es schaffe alle daten über einen bestimmten Zeitraum zu erfassen.

  • Guten Tag,

    ich besitze folgenden String:
    time_str = '13:55'

    Wenn man nun davon ausgeht, dass der String eine UTC Zeit ist (NICHT die aktuelle UTC Zeit), würde ich den gerne in MEZ umwandeln.
    Wie stelle ich das in Python an ?
    ich möchte halt aus der 13:55 entweder 14:55 oder 15:55 machen, je nachdem ob Winter- oder Sommerzeit ist.


    ich habe mir schon datetime und pytz angeschaut und die sehen mir recht komplex aus und ich habe ja auch kein Datum.

    Code
    #das habe ich bisher
    time_str = '13:55'
    time_object = datetime.strptime(time_str, '%H:%M').time()
    print(time_object)
    print(type(time_object))
    OUTPUT:
    13:55:00
    <class 'datetime.time'>

    Gibt es vllt ein Code, um sich die +1 oder +2 Unterschied zur UTC als Zahl zu besorgen. Dann könnte ich die Umrechnung selbst vornehmen.


    Gruß

    Danjin

    Edited once, last by Danjin ().

  • Hallo,

    für Zeitzonen würde ich pytz verwenden

    soweit war ich auch schon.

    Allerdings habe ich kein Datum. Ich möchte nur die Uhrzeit umrechnen.


    Ich habe schon viel rumprobiert und durchgelesen, kann aber keine Lösung finden...

  • Code
    from datetime import datetime
    import pytz
    from pytz import timezone
    europe = timezone('Europe/Amsterdam')
    utc = pytz.utc
    fmt = '%H:%M:%S %Z%z'
    utc_dt = datetime(2000, 10, 27, 13,55, 0, tzinfo=utc)
    loc_dt = utc_dt.astimezone(europe)
    print(loc_dt.strftime(fmt))

    ich habe nun soweit weiter rumprobiert und er ändert mir nun zumindest die Zeitzone aktuell richtig (fügt 2h zu den 13:55 hinzu)

    <15:55:00 CEST+0200>


    wird dies auch nach der Zeitumstellungen noch sauber funktionieren ? also ändert es dann auf nur noch 1h ? ich verstehe die Dokumentation von pytz leider nicht gut genug... Hofei

  • Wenn Du die Zeit abhängig davon, ob gerade Sommerzeit ist oder nicht, umrechnen willst, hast Du durchaus ein Datum: Das heutige.

    also vergleiche ich "einfach" das heutige Datum mit dem UTC Datum, hol mir daraus die Differenz und rechne mit der Differenz meine strings um ? :)

  • also vergleiche ich "einfach" das heutige Datum mit dem UTC Datum, hol mir daraus die Differenz und rechne mit der Differenz meine strings um ? :)

    Das wäre natürlich eine Möglichkeit, die ohne weitere Module auskommt:

    Code
    offset=datetime.timedelta(seconds=round((datetime.datetime.now()-datetime.datetime.utcnow()).total_seconds()))

    Schön finde ich das allerdings persönlich nicht. Ich würde, wie von Hofei und noisefloor vorgeschlagen, lieber eine Bibliothek wählen, die selbst weiß, wann Sommer- und wann Winterzeit ist, und dafür nicht die Systemuhr bemühen muß.

  • Hallo,


    noch besser als pytz ist IMHO arrows.


    Gruß, noisefloor

    VIELEN DANK !!!!!! Genau so etwas habe ich gesucht.


    Code
    import arrow
    utc = arrow.utcnow()
    mesz = utc.to('Europe/Berlin').format('ZZ')
    difference = int(mesz[:-3])

    ein übersichtlicher kurzer Code schnipsel gibt mir die Differenz von UTC zu meiner Zeitzone.


    danke nochmals ! :)

  • bootsmann: Funktioniert bei mir nicht:

    Code
    >>> print(int(datetime.datetime.now().astimezone().strftime("%z")[2]))
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ValueError: astimezone() cannot be applied to a naive datetime
  • Hallo,

    ggf. wenn man in der Doku rumwühlt ginge es auch ohne slice. Gibt sicherlich einen Weg, direkt an die Stunden zu kommen...

    Nope, gibt's nicht. Mit datetime.datetime.now().astimezone().utcoffset().seconds bekommt man die Sekunden als Integer. Aber timedelta-Objekte kennen ootb keine Methode für Stunden. Die nächste Einheit sind Tage.


    Gruß, noisefloor

  • Hallo.


    Ich habe eine kleine Frage. Und zwar, habe ich in Python versucht einen kleinen (nicht AI) Chatbot zu programmieren.

    BIs jetzt hat alles wunderbar geklappt, doch nun habe ich ein Problem.

    Ich habe if Funktionen erstellt, dass falls der folgende Text eingegeben wird, eine zufällige Antwort (aus einer Liste ausgewählt) zurück geschrieben wird.



    if input() in ["Hi", "Hallo", "Guten Morgen", "Guten Mittag", "Guten Abend", "Hey", "Yo", "Wie geht's?"]:

    greetings = ["Hallo Mensch.", "Hi, wie geht's?", "Schön dich kennen zu lernen", "Hallo!"]

    print(random.choice(greetings))



    Das funktioniert auch, aber ich habe mehrere Male den gleichen Code (mit abgeänderten Fragen und Listennamen) erstellt und wenn man das Programm ausführt, muss man die Eingaben (zuerst Hi und dann was bei dem nächsten Code steht) in genau der gleichen Reihenfolge eingeben, damit etwas zurückgeschrieben wird.

    Ich würde es aber gerne so haben, dass man es nicht in der Reihenfolge schreiben muss, sondern dass man zuerst z.B. Tschüss schreibt und man dann auch eine Antwort bekommt. Nur weiß ich nicht wie ich das machen soll.


    Über Hilfe würde ich mich sehr freuen.

    Danke.

  • 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))
  • 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))

    Ja genau, halt nur, dass das Programm nicht schon nach einer Eingabe abbricht, sodass man dann noch andere Sachen reinschreiben kann. Müsste man dann einfach weitere elif befehle machen?

    Danke