【问题标题】:correct way to write if statement:if语句的正确写法:
【发布时间】:2022-01-06 06:26:32
【问题描述】:

这似乎是一个非常基本的问题...但由于某种原因我无法直接思考...

如何在不复制“else”语句两次的情况下编写以下内容? (并且无需将其放入函数中)

我写了 print("a") 和 print("b"),但它原来有 4-6 个语句。

    if os.path.exists(new_output_folder) and os.path.exists(prev_output_folder):
        subdirs_lastrun = [os.path.basename(x[0]) for x in os.walk(new_output_folder)]
        subdirs_prevrun = [os.path.basename(x[0]) for x in os.walk(prev_output_folder)]
        
        if not "ref" in subdirs_lastrun and "ref" in subdirs_prevrun:
            print("a")
        else:
            print("b")

    else:
        print("b")

【问题讨论】:

标签: python if-statement


【解决方案1】:

可以只使用一个布尔值来决定最后必须发生的复杂事情,例如:

do_a = os.path.exists(new_output_folder) and os.path.exists(prev_output_folder)
if do_a:
    subdirs_lastrun = [os.path.basename(x[0]) for x in os.walk(new_output_folder)]
    subdirs_prevrun = [os.path.basename(x[0]) for x in os.walk(prev_output_folder)]
        
    do_a = not "ref" in subdirs_lastrun and "ref" in subdirs_prevrun

if do_a:
    print("a")
else:
    print("b")

如果(如您所说)a/b 路径比简单的打印更复杂,这显然会变得有利。

【讨论】:

    【解决方案2】:
    while(True):
        if os.path.exists(new_output_folder) and os.path.exists(prev_output_folder):
                subdirs_lastrun = [os.path.basename(x[0]) for x in os.walk(new_output_folder)]
                subdirs_prevrun = [os.path.basename(x[0]) for x in os.walk(prev_output_folder)]
                
                if not "ref" in subdirs_lastrun and "ref" in subdirs_prevrun:
                    print("a")
                    break
        # else case
        print("b")
        break
    

    【讨论】:

    • 我想你忘记了 "print ("b") "末尾的 "break"。
    • 非常感谢,Urie!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多