问题描述
嘿所有程序员,我有一个很有趣而且很简单的问题。我正在使用 esp32,在那里我正在使用 2 个多路复用 7 段显示器。我已经创建了我的代码,它也可以工作,但我想让我们说一种更漂亮的方式来编码这些行。我已将我的数字分成 2 个数字(例如 34 --> [3,4]),然后我正在查看此 if-elif 并附加正确的行(用于 GPIO 上的输出),因此 3 将是 0000110。你有什么想法可以让这段代码更容易吗?
if number == 0:
dcd_input_list.append([0,1])
elif number == 1:
dcd_input_list.append([1,1,1])
elif number == 2:
dcd_input_list.append([0,0])
elif number == 3:
dcd_input_list.append([0,0])
elif number == 4:
dcd_input_list.append([1,0])
elif number == 5:
dcd_input_list.append([0,0])
elif number == 6:
dcd_input_list.append([0,0])
elif number == 7:
dcd_input_list.append([0,1])
elif number == 8:
dcd_input_list.append([0,0])
elif number == 9:
dcd_input_list.append([0,0])
非常感谢您的帮助!如果我必须发送更多信息,请询问。
最好的问候
解决方法
你可以把它压缩成一个字典:
lookup = {
0: [0,1],1: ...and so on
}
dcd_input_list.append(lookup[number])
...或一个列表:
lookup = [
[0,[1,1,# ...and so on
]
dcd_input_list.append(lookup[number])
,
您可以将所有可能的值放在一个列表中,只需使用 number
选择相关索引:
values = [[0,1][1,[0,0],0]]
dcd_input_list.append(values[number])
,
可以简化此操作的一种方法是将所有这些列表放入另一个列表中,然后使用使用 number
的值作为列表列表索引的单行进行追加。它看起来像这样:
nums_lists = [
[0,0]
]
dcd_input_list.append(nums_lists[number])