当前位置: 首页 > 面试题库 >

“如果是a或b或c但不是全部”的Python语法

尚安平
2023-03-14
问题内容

我有一个可以接收零或三个命令行参数的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):


问题答案:

如果您要使用的是最小形式,请执行以下操作:

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

这将翻译您的问题的标题。

更新:正如Volatility and Supr正确地说的那样,您可以应用De Morgan的定律并获得等效的:

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

我的建议是使用对您和其他程序员更重要的形式。第一个意思是 “有一些错误,但也有一些真实” ,第二个 意思是“有一些真实,但不是全部”
。如果要在硬件上进行优化或执行此操作,则选择第二个,这里只选择最易读的代码(还要考虑要测试的条件及其名称)。我选了第一个。



 类似资料:
  • 问题内容: 我正在编写一个拒绝访问未授权用户的安全系统。 它可以按预期授予授权用户访问权限,但也允许未经授权的用户使用! 为什么会发生这种情况?我已经明确指出仅在name等于,或 时才授予访问权限。我也尝试过相反的逻辑if ,但是结果是一样的。 问题答案: 在许多情况下,Python的外观和行为都像自然的英语,但这是这种抽象失败的一种情况。人们可以使用上下文线索来确定和是与动词连接的对象,但是Py

  • 我正在编写一个安全系统,拒绝未经授权的用户访问。 它按预期授予授权用户访问权限,但也允许未经授权的用户进入! 为什么会出现这种情况?我已经明确声明,只有当等于Kevin、Jon或inbar时才授予访问权限。我也尝试过相反的逻辑,,但结果是一样的。

  • 我对以下逻辑有问题: 假设我有一个列表 这两项都在列表中。。。 打印

  • 问题内容: 我尝试了一些代码,使用XOR在Java中交换两个整数而不使用第三个变量。 这是我尝试的两个交换函数: 这段代码产生的输出是这样的: 我很好奇,为什么这样说: 与这个不同吗? 问题答案: 问题是评估的顺序: 参见JLS第15.26.2节 首先,对左操作数求值以产生一个变量。 如果该评估突然完成,则赋值表达式由于相同的原因而突然完成;右边的操作数不会被评估,并且不会发生赋值。 否则,将保存

  • 我有两个双向量。双的值在-1000到1000之间。 两个向量包含相同的数字,但顺序不同。 例如 假设通过以下方式求和,是否可以保证向量1的和与向量2的和完全相等: 我担心双重不精确。

  • 问题内容: 我在以下逻辑上遇到麻烦: 可以说我有一个清单 这两个项目都在列表中… 版画 列表中只有第一项… 版画 列表中都没有… 版画 这是一个令人困惑 的列表中仅 第二 项… 版画 我不明白为什么这没有注册为真实的陈述。如何将其推广到具有 n个 条件的 or 语句? __ 3、2、1 … 问题答案: 让我们分解一下表达式: 首先会检查是否为True。如果是,则表达式将返回。如果没有,它将返回。