当前位置: 首页 > 知识库问答 >
问题:

如何针对单个值测试多个变量?

公冶鸣
2023-03-14

我试图做一个函数,将多个变量比较为一个整数,并输出一个三个字母的字符串。我想知道是否有一种方法把它翻译成Python。所以说:

x = 0
y = 1
z = 3
mylist = []

if x or y or z == 0 :
    mylist.append("c")
if x or y or z == 1 :
    mylist.append("d")
if x or y or z == 2 :
    mylist.append("e")
if x or y or z == 3 : 
    mylist.append("f")
["c", "d", "f"]

共有1个答案

康弘义
2023-03-14

您误解了布尔表达式的工作原理;他们不像一个英语句子和猜测你在谈论相同的比较所有的名字在这里。您正在查找:

if x == 1 or y == 1 or z == 1:

xy则自行计算(如果0,则为false,否则为true)。

您可以使用针对元组的包含测试来缩短这个时间:

if 1 in (x, y, z):
if 1 in {x, y, z}:

这是由于操作符优先级。运算符的优先级低于==测试,因此先计算后者。

但是,即使情况并非如此,表达式x或y或z==1实际上被解释为(x或y或z)==1,这仍然不能达到您所期望的效果。

x或y或z将计算为“truthy”的第一个参数,例如notfalse、numeric 0或empty(有关Python在布尔上下文中认为false的详细信息,请参阅布尔表达式)。

所以对于值x=2;y=1;z=0X或y或z解析2,因为这是参数中第一个类似true的值。则2==1将为false,即使y==1将为true

这同样适用于反面;针对单个变量测试多个值;x==1或2或3将由于相同的原因失败。在{1,2,3}中使用x==1或x==2或x==3x。

 类似资料:
  • 我试图创建一个函数,将多个变量与一个整数进行比较,并输出一个由三个字母组成的字符串。我想知道是否有办法将其翻译成Python。那么说: 它将返回以下列表: 这样的事情可能吗?

  • 问题内容: 我在词典中只有一个键/值对。我想将键分配给一个变量,并将其值分配给另一个变量。我已经尝试过以下方式,但是我却遇到了同样的错误。 我知道我们可以一键提取键和值,也可以通过for循环和键来提取键和值,但是难道没有一种简单的方法可以在一个语句中分配键和值吗? 问题答案: 用元组添加另一个级别(只是逗号): 或列出: 或挑选第一个元素: 前两个具有一个额外的优点,即如果您的字典具有多个键,它们

  • 问题内容: 我是硒测试的新手。我想针对Internet Explorer,Firefox,Opera和Chrome在多种浏览器上运行。我必须遵循什么方法。大家能否建议我这是最好的过程。 硒Web驱动程序是否支持多种浏览器??? 我们已经编写了登录脚本。它可以分别在Firefox,Chrome和Internet Explorer中成功运行。但我想按顺序为那些多个浏览器运行它。 问题答案: 在此之前,

  • 我需要针对给定的XSD文件验证多个XML文件。问题是XSD由两个文件组成。它们是嵌套的,尽管我知道哪个是第一个(其他文件的“父”)。在XML文件中,我使用命名空间来定义子节点在哪个XSD中定义

  • 我有一个Spring Boot项目,其中定义了几个apiendpoint。我目前正在为每个API编写集成测试。我的测试类注释如下。 现在,对于我的每个测试类,都会设置一个新的上下文来执行它们,这需要时间。我更喜欢将每个apiendpoint的测试用例保存在单独的类中,以便在逻辑上组织它们,但我不希望每次添加新的控制器类和相应的测试类时,我的测试执行时间都会猛增。我在这里做错了什么?

  • 问题内容: 我想确定显示点集合所需的最小面积。最简单的方法是像这样遍历整个集合: 我开始了解流。为此,您可以执行以下操作: 两者给出相同的结果。但是,尽管流方法很优雅,但速度却慢得多(如预期的那样)。 有没有办法让,,并在一个单一的流操作? 问题答案: 与类推,创建一个收集所需信息的类。它定义了两种方法:一种用于记录a的值,一种用于组合两个的值。 然后,您可以将收集到中。 更新 我完全对 OP得出