2016-11-15 98 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

可能的重复[Replacement for switch statement in Python?](http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python) – Billy

+0

你可以** 1。**修复您的缩进** 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