首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >"if a、b或c,但不是全部“的Python语法

"if a、b或c,但不是全部“的Python语法
EN

Stack Overflow用户
提问于 2013-05-13 20:30:21
回答 9查看 249.4K关注 0票数 138

我有一个python脚本,它可以接收零个或三个命令行参数。(它要么以默认行为运行,要么需要指定所有三个值。)

对于这样的东西,理想的语法是什么:

if a and (not b or not c) or b and (not a or not c) or c and (not b or not a):
EN

回答 9

Stack Overflow用户

发布于 2013-05-13 20:32:16

这样如何:

conditions = [a, b, c]
if any(conditions) and not all(conditions):
   ...

其他变体:

if 1 <= sum(map(bool, conditions)) <= 2:
   ...
票数 241
EN

Stack Overflow用户

发布于 2013-05-13 20:55:57

关于:(唯一条件)

if (bool(a) + bool(b) + bool(c) == 1):

请注意,如果您也允许两个条件,则可以这样做

if (bool(a) + bool(b) + bool(c) in [1,2]):
票数 10
EN

Stack Overflow用户

发布于 2013-05-13 20:34:09

如果三个条件中只有一个为True,则返回True。这可能就是您在示例代码中想要的。

if sum(1 for x in (a,b,c) if x) == 1:
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16522111

复制
相关文章

相似问题

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