Problem einer Status abfrage

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin ich habe folgendes Problem.

    Ich habe ein Modul das eine Liste von 32Felder präsentiert jeweils mit dem Status 1 oder 0 ausliest (bstatus).

    Die Funktion gibt eine Liste mit 32 Statis zurück .

    Code
    def bstatus():
        ...
    return field

    bis hier hin noch alles easy

    Jetzt will ich aktiv werden wenn sich etwas ändert und meine Idee ist:

    Code
    element = bstatus()
    
    
    while kill == 1 :
        newelement = bstatus()
        if element != newelemet :
            bla bla bla
        time.sleep(0.2)


    Die Idee ist also element und newelement zu vergleichen und aktiv zu werden wenn newelement sich verändert hat.

    Leider kommt es nie dazu, da in dem Moment wo sich newelement = bstatus() einen stauts holt automatisch "element" mit geändert wurde udn beider wieder gleich sind :/.

    Wo ist mein Denkfehler, warum ändert sich element einfach mit?

    LG

    2 Mal editiert, zuletzt von Parlue (11. Dezember 2021 um 20:23)

  • Beitrag von hyle (11. Dezember 2021 um 20:38)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Was kommt raus, wenn Du es mal so probierst:

    PS: Ja, die Schleife bricht sofort ab. Ist ja nur ein Testlauf.

    PPS: Deine Funktion bstatus() sieht irgendwie merkwürdig aus...

    PPPS: bstatus()ist vermutlich fehlerhaft. Es gibt nur einen Wert zurück. Und der ist fix (immer dieselbe id())

  • Hier das Ergebnis

    1986481320

    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

    <class 'list'>

    1986481320

  • Der Rückgabewert der Funktion ist voll in Ordnung... ich kann auch ios verändern und die werden alle richtig zurück gegeben... Das Problem das sich Variable 1 automatisch mitverändert bleibt

    Vermutlich meinst Du es so: ???

    Python
    def bstatus():
        return [readrow(i) for i in range(0,8)]
  • Beitrag von hyle (11. Dezember 2021 um 21:17)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hier das Ergebnis

    1986481320

    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

    <class 'list'>

    1986481320

    Beide id(s) oben sind gleich.

    Das bedeutet, dass es beide Male dasselbe Objekt (die Liste) ist, nur unter zwei verschiedenen Namen (element und newelement).

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!