当前位置: 首页 > 知识库问答 >
问题:

python if语句太长太难看,有没有办法缩短它[重复]

薛华奥
2023-03-14

我在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

共有3个答案

井旺
2023-03-14

使用口述:

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

ie.

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

print choice
>>> 10

通过在dict末尾立即添加[selected],可以很容易地获得一个字典,使其行为类似于控制流语句。使用此模式,它将始终根据案例进行评估。

万俟铭
2023-03-14

不可能缩短这段代码。正如您可能已经注意到的,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
孙凌龙
2023-03-14

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

p={"A":10,.....}
y=dict[p]
 类似资料:
  • 我正在使用AWS创建一个签名URL,以便我可以安全地将此URL传递给另一个API以供临时使用。签名URL指向S3资源。问题是其他API不接受如此长的链接。因此我正在尝试缩短它。我尝试使用goo.gl或bit.ly之类的缩短器,但无济于事,因为URL对他们来说太长了。我甚至使用AWS构建了自己的私人缩短器(AWS url缩短器),但它有同样的问题:“网站重定向位置的长度不能超过2,048个字符。”。

  • 我有一些话题要讨论。我有一个24s/s的代码片段。是我自己的类,它表示类似于的功能。 这是一段代码: 我从可读性的角度考虑。是否最好将其更改为24个类并使用多态性?我不相信它会使我的代码可维护。。。一方面,那些if很清楚,应该不难理解,另一方面,if太多了。 我的问题相当笼统,但是我用Python编写代码,所以我不能使用像switch这样的构造。 你觉得呢? 更新: 一件重要的事情是、和是构造函数

  • 下面的代码确实可以按照我需要的方式工作,但是它很难看、太多或者其他一些事情。我看过一些公式,并试图写出一些解决方案,但最终得到的是类似数量的语句。 在这种情况下,有没有一种数学公式对我有利,或者16个if语句是可以接受的? 解释一下代码,这是一种同时回合制游戏。两个玩家各有四个动作按钮,结果来自一个数组(0-3),但如果这有帮助,变量'one'和'two'可以赋值任何值。结果是,0=两个都不赢,1

  • 我正在使用Apache的OpenNLP编写一个命令解析器。问题是OpenNLP将一些命令视为名词短语。例如,如果我解析像“open door”这样的东西,OpenNLP会给我。换句话说,它认为这个短语是“打开的门”,而不是“打开的门”。我希望它解析为。如果我解析“开门”,它会生成一个VP,但我不能指望有人使用限定词。 我目前正试图找出如何在错误的解析树上执行手术,但API文档严重缺乏。

  • 腾讯前端2面,20多分钟速挂,面试官没怎么问前端的,问我一堆后端题目,什么项目的CICD,工厂模式数据库什么的,八股没专门背过,麻了。问部门业务说是全栈开发,可能是我太蔡了

  • 有没有办法删除字符串中重复和连续的单词/短语?例如。 [输入]: [out]: 我试过这个: 当它变得更复杂,我想删除短语(假设短语最多由5个单词组成)时会发生什么?怎样才能做到呢?例如。 [输入]: [out]: 另一个例子: [in]: 这是一个短语重复的句子。句子不是短语。