2017-08-02 1 views
0

別の変数に応じて変数に異なる値を代入しようとしています。私はif...elseステートメントを使用しています。私はこれを達成するためのより効率的な/簡単な方法があるのだろうかと思っています。Python3.x:異なるケースの変数割り当て

私は多くのコードを除外しています。私は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) 

statalarmに割り当てられた値に応じて変更するために私がしたいと思います。これを別のやり方で達成することは可能ですか? alarmに割り当てられた値の大部分がalarmが0である場合は、各個々の整数、すなわちstatの割り当てを変更します1-26全体整数となり、私はstatVoltage Dropout又はalarm私はstatCashbox Removed

ことを期待4になった場合であることを期待します
+5

辞書を使用してください: '{0: 'Voltage Dropout'、1: 'Voltage Restored'、...}'。 – roganjosh

+1

'['Voltage Dropout'、 'Voltage Restored'、...]'リストを使うこともできます。 –

+1

新しい回答を追加するのではなく、これについて細部まで行き渡っていなければなりませんか?私はいくつか見つけることができますが、彼らは非常に詳細にそれをカバーしていないよ – roganjosh

答えて

1

いくつかの回答は辞書を持ち出しましたが、あなたがもう少し詳細な説明をしたいと思うように聞こえます。辞書はリストに似ていますが、辞書内の各要素のキーと値を定義する点が異なります。次に、キーを与えられた値を取得することができます。あなたのケースでは、それはあなたがリストにstat_dictionaryを交換し、同じ機能を持っていますが、辞書は、芋、より明確である可能性があり

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] 

ようになります。

関連する問題