如何在python中打印已评估的条件而不是其布尔值?

时间:2016-04-15 20:06:07

标签: python operators conditional argparse

假设' - run'作为参数提供,我如何在变量中声明'opt.run'条件,而不是使用'或'系列操作声明它的布尔值?

parser = argparse.ArgumentParser()
parser.add_argument("--pre",dest="pre",action="store_true")
parser.add_argument("--run",dest="run",action="store_true")
parser.add_argument("--post",dest="post",action="store_true")
opt = parser.parse_args()

step = opt.pre or opt.run or opt.post

打印'step'会产生'True',但我真正需要的是评估'True'的条件 - 即'opt.run'。

1 个答案:

答案 0 :(得分:2)

您要做的是:

 step = "pre" if opt.pre else "run" if opt.run else "post" if opt.post else "default"
 print(step)

如果您有逻辑,用户必须选择三个中的一个,您可以删除最后一个if:

 step = "pre" if opt.pre else "run" if opt.run else "post"

但我建议将其分解为if / elif:

step = "default"
if opt.run:
    step = "run"
elif opt.pre:
    step = "pre"
elif opt.post:
    step = "post"