【发布时间】: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,我希望 stat 为 Voltage Dropout 或者如果alarm 变为 4 我希望 stat 变为 Cashbox Removed
【问题讨论】:
-
使用字典:
{0: 'Voltage Dropout', 1: 'Voltage Restored', ...}. -
您也可以使用列表
['Voltage Dropout', 'Voltage Restored', ...]。 -
与其添加一个新的答案,还必须有一个体面的骗局来详细说明这个问题?我可以找到一些,但他们没有详细介绍它
-
如果你发现了骗子,请告诉我。就像你说的,我能找到的不是很详细。另外,不太确定要搜索什么。
-
只需将所有
if和elif替换为stat = my_dict.get(alarm, "not found")的一行,并像我在第一条评论中所做的那样预先定义my_dict,例如my_dict = {0: 'Voltage Dropout', 1: 'Voltage Restored', ...}。我只是在寻找典型的骗子。
标签: python variables if-statement variable-assignment