我试图根据另一个变量为变量分配不同的值。我使用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,我期望{{1} } stat
或Voltage Dropout
变为4我希望alarm
为stat
答案 0 :(得分: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,更清晰。