Python解析变量Numb

2024-04-24 16:29:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有8个频道,关闭时它们的值为0,打开时:

ch1 = 1
ch2 = 10
ch3 = 100
ch4 = 1000
ch5 = 10000
ch6 = 100000
ch7 = 1000000
ch8 = 10000000

但是当我问哪个频道被打开时,硬件给了我一个像

111 or 10001000

意味着ch1、ch2和ch3 | ch4和ch8分别打开

我想用一种方式来解析它,我可以编写一个类似json的文件,每个通道的状态如下

{
   "ch1": "on",
   "ch2": "off",
   "ch1": "on"
}

我该怎么做?正确的方法是什么?你知道吗


Tags: or文件json硬件on方式频道ch5
1条回答
网友
1楼 · 发布于 2024-04-24 16:29:53

给你:

#!/usr/bin/env python2.7

def chan_values(num):
    """parses int into an array of True/False values for the channels"""
    channels = []

    while num > 0:
        channels.append(num%10==1)
        num /= 10

    channels += [False]*(8-len(channels))

    return channels

print chan_values(111)
print chan_values(10001000)

要使用,只需调用以数字为参数的函数。它将返回一个真/假值列表,您可以遍历该列表以查看哪些通道处于打开状态,或者您可以使用chan_values()检查通道6[5]。你知道吗

现在解释一下…第一个while循环将数字解析为单独的数字。如果数字是1,则返回True,否则返回False。第二个while循环使用False填充列表,如果输入的数字不是8位(例如111)。你知道吗

编辑: 将第二个while循环替换为更快的一行(channels += [False]*(8-len(channels)))。请注意,这两种方法实现相同的目标,并且在结果方面是等效的。你知道吗

相关问题 更多 >