如何在python中打印计算的条件而不是其布尔值?

如何在python中打印计算的条件而不是其布尔值?,python,operators,conditional,argparse,Python,Operators,Conditional,Argparse,假设'--run'作为参数提供,如何在变量中声明'opt.run'条件,而不是使用'or'系列操作声明其布尔值 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

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

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

打印“步骤”会导致“True”,但我真正需要的是计算“True”的条件,即“opt.run”。

您尝试执行的操作如下:

 step = "pre" if opt.pre else "run" if opt.run else "post" if opt.post else "default"
 print(step)
如果您的逻辑是用户必须从三个选项中选择一个,那么您可以在以下情况下删除最后一个选项:

 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"

谢谢Padraic,我希望能有一艘客轮,但最终还是同意了你的建议。一个很好的提醒,“优雅”并不总是意味着“更好”。