【问题标题】:Python3.x: Variable Assignment for Different CasesPython3.x:不同情况下的变量赋值
【发布时间】:2017-08-02 21:08:16
【问题描述】:

我试图根据另一个变量为一个变量分配不同的值。我已经使用if...else 语句来做到这一点。我想知道是否有更有效/更简单的方法来实现这一点。

我排除了很多我的代码。我正在逐行分析数据集,其中column[3] 可以是任意数字。

我的代码:

byte_3 = format(column[3], 'b').zfill(8)
alarm = int(byte_3[1:8], 2)
if byte_3[0] == '1':
    print_string += 'Alarm '
        if alarm == 0:
            stat = 'Voltage Dropout'
        elif alarm == 1:
            stat = 'Voltage Restored'
        elif alarm == 2:
            stat = 'Probe Started'
        elif alarm == 3:
            stat = 'Probe Completed'
        elif alarm == 4:
            stat = 'Cashbox Removed'
        elif alarm == 5:
            stat = 'Cashbox Restored'
    print(print_string + stat)

我希望 stat 根据分配给 alarm 的值进行更改。是否有可能以不同的方式实现这一目标?分配给 alarm 的大多数值将是 1-26 中的整数,其中每个单独的整数都会改变 stat 的分配,即如果 alarm 为 0,我希望 statVoltage Dropout 或者如果alarm 变为 4 我希望 stat 变为 Cashbox Removed

【问题讨论】:

  • 使用字典:{0: 'Voltage Dropout', 1: 'Voltage Restored', ...}.
  • 您也可以使用列表['Voltage Dropout', 'Voltage Restored', ...]
  • 与其添加一个新的答案,还必须有一个体面的骗局来详细说明这个问题?我可以找到一些,但他们没有详细介绍它
  • 如果你发现了骗子,请告诉我。就像你说的,我能找到的不是很详细。另外,不太确定要搜索什么。
  • 只需将所有ifelif 替换为stat = my_dict.get(alarm, "not found") 的一行,并像我在第一条评论中所做的那样预先定义my_dict,例如my_dict = {0: 'Voltage Dropout', 1: 'Voltage Restored', ...}。我只是在寻找典型的骗子。

标签: python variables if-statement variable-assignment


【解决方案1】:

一些答案​​带来了字典,但听起来你想要更深入的解释,希望我能提供。字典类似于列表,不同之处在于您为字典中的每个元素定义一个键和一个值。然后您可以检索给定键的值。在你的情况下,它看起来像

alarm = int(byte_3[1:8], 2)
stat_dictionary = {0:'Voltage Dropout',1:'Voltage Restored',2:'Probe Started',3:'Probe Completed',4:'Cashbox Removed',5:'Cashbox Restored'}
if byte_3[0] == '1':
    print_string += 'Alarm '
    print(print_string+stat_dictionary[alarm]

您可以将 stat_dictionary 替换为列表并具有相同的功能,但在 imo 中,字典更清晰。

【讨论】:

    猜你喜欢
    • 2013-08-04
    • 2014-05-16
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多