如何在以下代码中为每个while循环取不同的r值?

时间:2018-11-24 02:32:37

标签: python loops class while-loop

import random
class check_error:
def __init__(self,firstbyte=bytearray(b'\x15\x04\xA5')) :
    r=random.choice (firstbyte)
    self.r=r

def pocket_data(self):


    print("I am sending request for NBP/SpO2 datas")
    r=self.r

    while True:    
        print("blala")
        r=self.r
        print(r)

        try: 
            if int("{:02x}".format(r))==15:
                print("Negative Acknowledgment.Error occured during data transmission to device.I am sending the datas again... ")
                continue

            elif r==4:
                print("Host does not have the capability to respond to the request,it only supports a subset of the protocol")
                continue

        except:
            print("done")
            break   

s=check_error()
print(s.pocket_data())

如果选择的元素是x15或x04,循环将变得无穷无尽,但是我想做的是选择字节数组的另一个元素,直到选择的元素是xA5。

1 个答案:

答案 0 :(得分:0)

初始化类时,r被设置为random.choice (firstbyte)。注意,这是永远不会改变的。您设置r的值,然后分配self.r = r,然后就再也不会更改self.r

如果希望r继续滚动随机数,则需要做的是将firstbyte保存到类中的变量中,例如:

def __init__(self,firstbyte=bytearray(b'\x15\x04\xA5')) :
    self.firstbyte = firstbyte
    r=random.choice (firstbyte)
    self.r=r

然后,在循环内部,继续以与构造函数相同的方式生成随机数:

while True:    
    self.r = random.choice(self.firstbyte)
    ...