【问题标题】:python if statement too long and ugly, is there a way to shorten it [duplicate]python if语句太长太丑,有没有办法缩短它[重复]
【发布时间】:2014-10-19 20:07:16
【问题描述】:

我在python中有这个又长又丑的else if语句,有没有办法把它压缩成一个较短的代码块,如果可能的话,可能在一两行,因为似乎有一种方法可以缩短一段像这样的代码

if p == "A": y = 10        
elif p == "B": y = 11
elif p == "C": y = 12
elif p == "D": y = 13
elif p == "E": y = 14
elif p == "F": y = 15

【问题讨论】:

标签: python if-statement


【解决方案1】:

有一个字典,其中包含给定 p 的 y 值

p={"A":10,.....}
y=dict[p]

【讨论】:

  • 你最好使用.get(p, None),因为你可以提供一个可选的默认参数来避免抛出异常。
  • 或者更好地使用DefaultDict 这样您就不必使用.get(key, defaultValue) 表单。
【解决方案2】:

使用字典:

choice = {
    "A": 10,        
    "B": 11,
    "C": 12,
    "D": 13,
    "E": 14,
    "F": 15
}[selected]

即。

selected = "A"
choice = {
    "A": 10,        
    "B": 11,
    "C": 12,
    "D": 13,
    "E": 14,
    "F": 15
}[selected]

print choice
>>> 10

通过在字典的末尾立即添加[selected] 可以很容易地得到一个表现得像控制流语句的字典。使用这种模式,它将始终评估案例。

【讨论】:

    【解决方案3】:

    不可能缩短这段代码。您可能已经注意到,python 不提供任何 switch-case 语句。

    根据您的使用情况,您可以将其更改为字典或按值重新计算:

    values = { "A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15 }
    y = values[p]
    

    y = ord(p) - ord("A") + 10
    

    【讨论】:

    • 我对 y= ord()... 解决方案也有同样的想法。
    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    相关资源
    最近更新 更多