2016-11-15 8 views
1

私はpythonスクリプトのcase文をクリーナーにするようにしようとしていますが、私の知る限りはそういうことはありません。だから私はたくさんのif/elseを作りましたステートメント。このクリーナーを作る方法はありますか?Pythonでcaseステートメントを作成する

if (config.dutCardTypes[0] in [6, 7]) and (config.isPrimary) and (config.measPwr):  ### Power Measurement for 28nm on Primary Only 
    if dsppif[dutDevId].pifReadData(0x1e800) == 0x1 : 
    print "Link Up, Measuring SteadyState Power..." 
    if (("Sahara Validation" in dsppif[dutDevId].board.description)) : 
     v, i, pwr = getOnBoardPwr(dsppif[dutDevId],"Sahara Validation") 
     vdd21A_pwr = pwr["P2V1"] 
     vdd12A_pwr = pwr["P1V2"] 
     vdd_pwr = pwr["VDD"] 
     vdd3v3_pwr = pwr["P3V3"] 
    elif "Athena" in dsppif[dutDevId].board.description: 
     if (("Quad A" in dsppif[dutDevId].board.description)) : 
      v, i, pwr = getOnBoardPwr(dsppif[dutDevId],"Athena Quad A") 
      vdd21A_pwr = pwr["P2V1_A"] + pwr["P2V1_B"] + pwr["P2V1_C"] + pwr["P2V1_D"] + pwr["P2V1_E"] 
      vdd12A_pwr = pwr["P1V2_A"] + pwr["P1V2_B"] 
      vdd_pwr = pwr["VDD"] 
     elif (("Quad B" in dsppif[dutDevId].board.description)) : 
      v, i, pwr = getOnBoardPwr(dsppif[dutDevId],"Athena Quad B") 
      vdd21A_pwr = pwr["P2V1_A"] + pwr["P2V1_B"] + pwr["P2V1_C"] + pwr["P2V1_D"] + pwr["P2V1_E"] 
      vdd12A_pwr = pwr["P1V2_A"] + pwr["P1V2_B"] 
      vdd_pwr = pwr["VDD"] 
     elif (("Quad C" in dsppif[dutDevId].board.description)) : 
      v, i, pwr = getOnBoardPwr(dsppif[dutDevId],"Athena Quad C") 
      vdd21A_pwr = pwr["P2V1_A"] + pwr["P2V1_E"] 
      vdd12A_pwr = pwr["P1V2_A"] 
      vdd_pwr = pwr["VDD"]  
+1

[switch文の置き換えはPythonで可能でしょうか?](http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python) – Billy

+0

** ** **修正インデント** ** 2。不要な括弧を削除します。 –

+1

辞書。ここをチェックしてください。 http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python –

答えて

3

高水準では、pythonはこの種のものに辞書を試してみることを提案しています。 私は試してみて、あなたの例を翻訳し、それは少し冗長なので、本質的に代わりのようなので、case文を使用しません。

function(argument){ 
    switch(argument) { 
     case 0: 
      return "zero"; 
     case 1: 
      return "one"; 
     case 2: 
      return "two"; 
     default: 
      return "nothing"; 
    }; 
}; 

あなたがそう

def numbers_to_strings(argument): 
    switcher = { 
     0: "zero", 
     1: "one", 
     2: "two", 
    } 
    return switcher.get(argument, "nothing") 
のような可能性の辞書を使用することができます

また、スイッチャークラスを作成し、あなたの行動をあなたの条件にマッピングすることもできます。全体として、Pythonのやり方は読みやすくすることです。

+0

申し訳ありませんが、スニペットから例として1件だけを行うことができますか?私はちょうど何をするのに悩んでいるのですか? – VisualExstasy

関連する問題