首页 > 解决方案 > 如何将“ON/OFF”字符串数据变为0/1?

问题描述

我正在从我的仪表板(用户界面仪表板)监视和控制一个智能灯泡,每次我打开或关闭灯泡时,它都会发回显示灯泡打开或关闭的数据,我想做的是改变这个“开/关”数据字符串转换为 1/0 的二进制文件,无论如何我可以得到 1 或 0 而不是“开/关”。

这是我用来控制灯泡的一些 API 代码

 def identifyDevice(self):
    identifyDeviceResult = False
    print(" {0}Agent for {1} is identifying itself by doing colorloop. Please observe your lights"
          .format(self.variables.get('agent_id', None), self.variables.get('model', None)))
    try:
        devicewasoff = 0
        if self.get_variable('status') == "OFF":
            devicewasoff = 1
            self.setDeviceStatus({"status": "ON"})
        elif self.only_white_bulb:
            self.setDeviceStatus({"status": "OFF"})
        if self.only_white_bulb is False:
            self.setDeviceStatus({"effect": "colorloop"})
        if self.only_white_bulb:
            time_iden = 3
        else:
            time_iden = 10  # time to do identification
        t0 = time.time()
        self.seconds = time_iden
        while time.time() - t0 <= time_iden:
            self.seconds = self.seconds - 1
            print("wait: {} sec".format(self.seconds))
            time.sleep(1)
        self.setDeviceStatus({"effect": "none"})
        if devicewasoff == 1:
            self.setDeviceStatus({"status": "OFF"})
        else:
            self.setDeviceStatus({"status": "ON"})
        identifyDeviceResult = True
    except:
        print("ERROR: classAPI_PhilipsHue connection failure! @ identifyDevice")
    return identifyDeviceResult

标签: pythonapi

解决方案


如果您可以保证返回的值始终是“ON”或“OFF”之一,则可以使用True1可以互换的事实

result = state == 'ON'

如果您需要一些错误处理,这样的事情可能会起作用。

if state in {'ON', 'OFF'}:
    result = state == 'ON'
else:
    # handle error state

如果您需要int序列化,请int使用结果调用

>>> state_on = 'ON'
>>> state_off = 'OFF'
>>> int(state_on == 'ON')
1
>>> int(state_off == 'ON')
0

推荐阅读