【问题标题】:How to simplify this code and make it much easier?如何简化此代码并使其更容易?
【发布时间】:2021-03-10 15:17:25
【问题描述】:

嘿,所有程序员,我有一个非常有趣且非常简单的问题。我正在使用 esp32,并且正在使用 2 个多路复用 7 段显示器。我已经创建了我的代码,它也可以工作,但我想让我们说一种更漂亮的方式来编码这些行。我已将我的号码分成 2 个数字(例如 34 --> [3,4]),然后我正在查看这个 if-elif 并附加正确的行(用于 GPIO 上的输出),因此 3 将是 0000110。你有什么想法可以让这段代码更简单吗?

             if number == 0:
                 dcd_input_list.append([0,0,0,0,0,0,1])
             elif number == 1:
                 dcd_input_list.append([1,0,0,1,1,1,1])
             elif number == 2:
                 dcd_input_list.append([0,0,1,0,0,1,0])
             elif number == 3:
                 dcd_input_list.append([0,0,0,0,1,1,0])
             elif number == 4:
                 dcd_input_list.append([1,0,0,1,1,0,0])
             elif number == 5:
                 dcd_input_list.append([0,1,0,0,1,0,0])
             elif number == 6:
                 dcd_input_list.append([0,1,0,0,0,0,0])
             elif number == 7:
                 dcd_input_list.append([0,0,0,1,1,1,1])
             elif number == 8:
                 dcd_input_list.append([0,0,0,0,0,0,0])
             elif number == 9:
                 dcd_input_list.append([0,0,0,0,1,0,0])

非常感谢您的帮助!如果我必须发送更多信息,请询问。

Ps:这是一个 Python 代码,但应该很清楚。

最好的问候

【问题讨论】:

  • 那个数字是二进制转换吗?因为如果是这样的话,转换就大错特错了。
  • 制作一个 7 段显示列表的列表,以便您可以使用 number 作为该列表的索引。
  • @Sagitario 不,这不是直接的二进制转换。所以我们正在使用 open_drains,为此我们当然需要所有位的反转。但我现在有很多解决方案,它们对我和我的应用程序都非常有用。
  • @ScottHunter 非常感谢您的帮助!

标签: python simplify


【解决方案1】:

你可以把它压缩成一个字典:

lookup = {
    0: [0,0,0,0,0,0,1],
    1: ...and so on
}
dcd_input_list.append(lookup[number])

...或列表:

lookup = [
  [0,0,0,0,0,0,1],
  [1,0,0,1,1,1,1],  # ...and so on
]
dcd_input_list.append(lookup[number])

【讨论】:

  • 列表与dict 一样有效。
  • 是的,补充说。
【解决方案2】:

您可以将所有可能的值放在一个列表中,然后只需使用number 选择相关索引:

values = [[0,0,0,0,0,0,1][1,0,0,1,1,1,1],[0,0,1,0,0,1,0],[0,0,0,0,1,1,0],[1,0,0,1,1,0,0],[0,1,0,0,1,0,0],[0,1,0,0,0,0,0],[0,0,0,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,1,0,0]]
dcd_input_list.append(values[number])

【讨论】:

    【解决方案3】:

    您可以简化此操作的一种方法是将所有这些列表放入另一个列表中,然后使用一个使用number 的值作为列表列表索引的衬垫附加。它看起来像这样:

    nums_lists = [
        [0,0,0,0,0,0,1],
        [1,0,0,1,1,1,1],
        [0,0,1,0,0,1,0],
        [0,0,0,0,1,1,0],
        [1,0,0,1,1,0,0],
        [0,1,0,0,1,0,0],
        [0,1,0,0,0,0,0],
        [0,0,0,1,1,1,1],
        [0,0,0,0,0,0,0],
        [0,0,0,0,1,0,0]
        ]
    dcd_input_list.append(nums_lists[number])
    
    

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 2020-05-29
      • 2017-12-19
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多