s = ''
if value & 1:
s += "lights on"
else:
s += "lights off"
if value & 2:
s += ", fan on"
else:
s += ", fan off"
if value & 4:
s += ", alarm on"
else:
s += ", alarm off"
if value & 8:
s += ", door on" #? "door open"?
else:
s += ", door off"
bits = 0x0a # or whatever your input value was
currently_on = [status_lookup[i] for i in status_lookup if i & bits]
如果要将它们连接成一个字符串:
print("; ".join(currently_on))
另外,如果您使用的是Python 3.4+,则可以使用新的enum模块执行类似的操作:
from enum import IntEnum
class Status(IntEnum):
Lights = 0b00000001
Fan = 0b00000010
Alarm = 0b00000100
Door = 0b00001000
bits = 0x0a
currently_on = [x for x in Status if x & bits]
有更优雅的方法,但这会让你走:
对于这些类型的任务,我喜欢用映射到nice文本表示的位建立一个字典。因为Python支持二进制文本,所以它可以很好地自我记录。。。你知道吗
比如:
如果您想要当前“开启”状态的列表:
如果要将它们连接成一个字符串:
另外,如果您使用的是Python 3.4+,则可以使用新的enum模块执行类似的操作:
相关问题 更多 >
编程相关推荐