条件が真であるように見えるのにブロックが入力されていないのにPythonがなぜですか?

martin_bluetooth_sig

私はPythonにとても慣れていません...それは好きですが、奇妙な問題を抱えています。ここにいくつかのコードがあります:

    def run(self):
        print("receiver starting")
        while self.receiving:
            print("RX loop")
            try:
                print("RX: waiting for PDU from peer")
                data, addr = self.rx_socket.recvfrom(32)
                print("RX: received %d bytes"%(len(data)))
                print("RX: self.receiving=%d"%(self.receiving))
                print("XXXX RX: 0x%s"%(data.hex()))

                # condition seems to be true but block not entered
                if self.receiving == 1 & len(data) > 0:
                    my_pdu = 0
                    print("ZZZZ RX: 0x%s"%(data.hex()))

ご覧のとおり、ソケットから読み取るスレッドでループが実行されています。次に、このテスト出力を見てください。

RX loop
RX: waiting for PDU from peer
RX: received 3 bytes
RX: self.receiving=1
XXXX RX: 0x022000
ZZZZ RX: 0x022000
RX loop
RX: waiting for PDU from peer
RX: received 8 bytes
RX: self.receiving=1
XXXX RX: 0x100100ffff020028
RX loop
RX: waiting for PDU from peer

私の最初の読み取りは3バイトを返し、予想どおり、ifブロックの外側にXXXXプレフィックス付きのprintステートメントと、ifブロック内のZZZZプレフィックス付きステートメントの両方が表示されます。

2回目の読み取りは8バイトを返し、XXXXプレフィックス行を出力しますが、条件(self.receiveing == 1&len(data)> 0)がXXXXより前の出力値に従って両方とも真であるにもかかわらず、ifブロックには入りません。ライン。

私のスレッドは終了していません。そうでないと、「RXループ」の行が再び表示されません。

経験豊富なPythonの人の誰かが、私がここで間違ったことを教えてくれますか?

ありがとうございました

SpoonMeiser

問題は、それ&ビット単位であり論理積が必要ことです。これはand次のとおりです

if self.receiving == 1 and len(data) > 0:

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

条件が真であっても、他にブロックが実行されるのはなぜですか?

分類Dev

Promise が実行をブロックしているように見えるのはなぜですか

分類Dev

ManualResetEventSlim.Wait が待機時間いっぱいまでブロックされないように見えるのはなぜですか?

分類Dev

両方の条件が真になるまで条件があればロックするにはどうすればよいですか?

分類Dev

PHPコア関数に空のブロックがあるように見えるのはなぜですか?

分類Dev

Explorerが「デッドロック」しているように見えるのはなぜですか?

分類Dev

以下の本文のPythonプロットの例では、値が追加されていないように見えるのにサブプロットを使用するのはなぜですか?

分類Dev

JavaScript関数が呼び出されていないように見えるのはなぜですか?

分類Dev

同期されたコードブロックが、同じオブジェクトで待機している別の同期ブロックを無視しているように見えるのはなぜですか?

分類Dev

属性が元に戻されているように見えるのはなぜですか?

分類Dev

背景画像がbgsize "contain"で引き伸ばされているように見えるのはなぜですか?

分類Dev

一連の数値がソートされているように見えるのはなぜですか?

分類Dev

Vizio TVがLANをプローブしているように見えるのはなぜですか?

分類Dev

入力アクティビティが1分以内に表示されないのに、画面が真っ暗になるのはなぜですか?

分類Dev

hrefがブロック内に表示されているのに、pharaがブロック内にあるのはなぜですか?

分類Dev

ポジティブボタンがクリックされ、条件が真でない場合にダイアログが閉じないようにする

分類Dev

macOSのダイナミックリンクライブラリでASLRが無効になっているように見えるのはなぜですか?

分類Dev

`compile:`が正常に機能しているように見えるのに、なぜ$ compileが必要なのですか

分類Dev

この同期されたブロックがロックを取得するのに長い時間がかかるように見えるのはなぜですか?

分類Dev

ADBがネットワークを使用しているように見えるのはなぜですか?

分類Dev

Pythonでの連結が遅くなっているように見えるのはなぜですか?

分類Dev

Pythonでの連結が遅くなっているように見えるのはなぜですか?

分類Dev

このget-or-create関数が挿入されていないように見えるのはなぜですか?

分類Dev

SELECTINTOの前にDROPTABLEが有効になっていないように見えるのはなぜですか?

分類Dev

なぜangularJSの無効な入力フィールドによってフォーム送信がブロックされないのですか?

分類Dev

defer stmnt.Close()がhttp.Redirectをブロックしているように見えるのはなぜですか?

分類Dev

'operator double * `が機能しているように見えるのに、なぜ` operator []'が必要なのですか

分類Dev

ある関数では「使用」が拒否されたように見えるのに、別の関数では問題ないのはなぜですか。

分類Dev

入力に値があるのにスタイルが適用されないのはなぜですか?

Related 関連記事

  1. 1

    条件が真であっても、他にブロックが実行されるのはなぜですか?

  2. 2

    Promise が実行をブロックしているように見えるのはなぜですか

  3. 3

    ManualResetEventSlim.Wait が待機時間いっぱいまでブロックされないように見えるのはなぜですか?

  4. 4

    両方の条件が真になるまで条件があればロックするにはどうすればよいですか?

  5. 5

    PHPコア関数に空のブロックがあるように見えるのはなぜですか?

  6. 6

    Explorerが「デッドロック」しているように見えるのはなぜですか?

  7. 7

    以下の本文のPythonプロットの例では、値が追加されていないように見えるのにサブプロットを使用するのはなぜですか?

  8. 8

    JavaScript関数が呼び出されていないように見えるのはなぜですか?

  9. 9

    同期されたコードブロックが、同じオブジェクトで待機している別の同期ブロックを無視しているように見えるのはなぜですか?

  10. 10

    属性が元に戻されているように見えるのはなぜですか?

  11. 11

    背景画像がbgsize "contain"で引き伸ばされているように見えるのはなぜですか?

  12. 12

    一連の数値がソートされているように見えるのはなぜですか?

  13. 13

    Vizio TVがLANをプローブしているように見えるのはなぜですか?

  14. 14

    入力アクティビティが1分以内に表示されないのに、画面が真っ暗になるのはなぜですか?

  15. 15

    hrefがブロック内に表示されているのに、pharaがブロック内にあるのはなぜですか?

  16. 16

    ポジティブボタンがクリックされ、条件が真でない場合にダイアログが閉じないようにする

  17. 17

    macOSのダイナミックリンクライブラリでASLRが無効になっているように見えるのはなぜですか?

  18. 18

    `compile:`が正常に機能しているように見えるのに、なぜ$ compileが必要なのですか

  19. 19

    この同期されたブロックがロックを取得するのに長い時間がかかるように見えるのはなぜですか?

  20. 20

    ADBがネットワークを使用しているように見えるのはなぜですか?

  21. 21

    Pythonでの連結が遅くなっているように見えるのはなぜですか?

  22. 22

    Pythonでの連結が遅くなっているように見えるのはなぜですか?

  23. 23

    このget-or-create関数が挿入されていないように見えるのはなぜですか?

  24. 24

    SELECTINTOの前にDROPTABLEが有効になっていないように見えるのはなぜですか?

  25. 25

    なぜangularJSの無効な入力フィールドによってフォーム送信がブロックされないのですか?

  26. 26

    defer stmnt.Close()がhttp.Redirectをブロックしているように見えるのはなぜですか?

  27. 27

    'operator double * `が機能しているように見えるのに、なぜ` operator []'が必要なのですか

  28. 28

    ある関数では「使用」が拒否されたように見えるのに、別の関数では問題ないのはなぜですか。

  29. 29

    入力に値があるのにスタイルが適用されないのはなぜですか?

ホットタグ

アーカイブ