首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IF语句格式化Python

IF语句格式化Python
EN

Stack Overflow用户
提问于 2018-05-02 12:57:08
回答 2查看 108关注 0票数 1

我正在尝试创建一个多层次的IF语句,并且我不确定下面的语句是否被正确地格式化。

我在阅读下面嵌套的IF语句时遇到了困难,是否有可能以更高效的方式编写这段代码?

代码语言:javascript
复制
 if (a>= gT) and (cLow> rBT):
            print("Alpha 1")


            if (a_high> c_high) and (c_low < d_low):
                if (a> abc) and (a< c_low):
                    print("Final Count")

                    if (min(a, b) > min(c, d)) and \
                            (max(e,f) > max(g, h)): print("All Memory Deleted")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-02 13:03:14

除了使缩进更加统一,去掉多余的括号外,结合第2和第3 if测试,您没有什么可以改进的。

代码语言:javascript
复制
if a >= gT and cLow > rBT:
    print("Alpha 1")
    if a_high > c_high and c_low < d_low and a > abc and a < c_low:
        print("Final Count")
        if min(a, b) > min(c, d) and max(e,f) > max(g, h):
            print("All Memory Deleted")

将第二次和第三次if测试组合在一起是安全的,原因是and操作符“短路”,也就是说,在expression_1 and expression_2中,如果expression_1是假的,那么expression_2就不会被评估。有关此主题的更多信息,请参阅我的答案这里,并提供示例(在Python2中)。

顺便说一句,如果可能的话,最好避免反斜杠的继续:它太脆弱了。反斜杠后的任何空格都会中断继续。相反,如果长表达式尚未使用某种形式的括号,则通常可以将其封装在括号中。例如,

代码语言:javascript
复制
if (min(a, b) > min(c, d) and 
    max(e,f) > max(g, h)):

有关更多细节,请参见Python指南佩普-0008

票数 5
EN

Stack Overflow用户

发布于 2018-05-02 13:10:58

虽然不这样做可能有几个原因,但是如果嵌套的if语句的可读性对您非常重要,那么执行时间就会出现在脑海中,类似的情况也是如此。

代码语言:javascript
复制
case_1 = case_2 = case_3 = False

try:
    case_1 = a >= gT and cLow > rBT
    case_2 = a_high > c_high and c_low < d_low and a > abc and a < c_low
    case_3 = min(a, b) > min(c, d) and max(e, f) > max(g, h)
except NameError:
   pass

if case_1:
    print("Alpha 1")
    if case_2:
        print("Final Count")
        if case_3:
            print("All Memory Deleted")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50135227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档