python - 如何将“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
解决方案
如果您可以保证返回的值始终是“ON”或“OFF”之一,则可以使用True
和1
可以互换的事实
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
推荐阅读
- javascript - 在 html 文件 Flutter 中使用 js 文件
- java - 复杂的 SQL 查询在数据库上需要 2 秒,但在 Java 应用程序中需要 80 秒
- c++ - 重新运行程序和字符串流?
- django - 基于 Django 分类的视图 __init__() 缺少 1 个必需的位置参数
- java - 构建 monad 时 Java 泛型的问题
- regex - 正则表达式仅使用正则表达式提取静态文本和数字
- azure-autoscaling-block - 用于 EventGrid、逻辑应用、azure 函数和 Cosmos DB 的 Azure 备份和自动缩放
- php - 数据库密码无法识别 wamp
- python-3.x - 是否可以定义一个新的随机变量,如 scipy.stats 中列出的那些?
- javascript - 下拉菜单,当您单击选项时,将下载文件