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

在Python中使用AND和NOT运算符

华欣荣
2023-03-14
问题内容

这是我代表三角形的自定义类。我试着写代码,查看是否self.aself.b以及self.c大于0,这将意味着我有角,角,角。

在下面,您将看到检查A和B的代码,但是当我使用self.a != 0它时,它可以正常工作。我相信我没有&正确使用。有任何想法吗?这是我的称呼方式:print myTri.detType()

class Triangle:

    # Angle A To Angle C Connects Side F
    # Angle C to Angle B Connects Side D
    # Angle B to Angle A Connects Side E

    def __init__(self, a, b, c, d, e, f):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
        self.e = e
        self.f = f

    def detType(self):
        #Triangle Type AAA
        if self.a != 0 & self.b != 0:
            return self.a

        #If self.a > 10:
            #return AAA

        #Triangle Type AAS

        #elif self.a = 0:
            #return AAS

        #Triangle Type ASA

        #Triangle Type SAS

        #Triangle Type SSS

        #else:
            #return unknown

问题答案:

您应该写:

if (self.a != 0) and (self.b != 0) :

&”是按位运算符,不适合布尔运算。&&在Python中,“ ”的等效项是“和”。

检查所需内容的一种较短方法是使用“ in”运算符:

if 0 not in (self.a, self.b) :

您可以使用“ in”检查是否有任何东西是可迭代的一部分,它适用于:

  • 元组。IE:"foo" in ("foo", 1, c, etc)将返回true
  • 清单。IE:"foo" in ["foo", 1, c, etc]将返回true
  • 字符串。IE:"a" in "ago"将返回true
  • 字典 IE:"foo" in {"foo" : "bar"}将返回true

作为对评论的回答:

是的,由于要创建Tuple对象,因此使用“ in”的速度较慢,但​​是实际上性能不是问题,此外,在Python中,可读性也很重要。

对于三角形检查,更容易阅读:

0 not in (self.a, self.b, self.c)

(self.a != 0) and (self.b != 0) and (self.c != 0)

重构也更容易。

当然,在此示例中,它实际上并不是那么重要,它是非常简单的代码段。但是这种风格导致了Python式代码的出现,从而导致大型程序上的程序员更加快乐(并且减轻了体重,改善了性生活,等等)。



 类似资料:
  • 问题内容: 我不明白这行的含义: 其中 参数 是字符串 为什么通常要对python字符串使用和运算符? 问题答案: 假设您使用的是的值,但如果说的是值,那么您希望使用一个空字符串代替。您一般会做什么? 这就是表达的意思。首先,你应该明白与运营商的作用: 返回如果是,否则返回。 返回如果是,否则返回。 所以,你的表情: 实际上等效于: 在以下情况下如何计算表达式: 评估为: result = (”

  • 问题内容: 我了解doublenot运算符在JavaScript中的作用。我很好奇它的用法,以及我最近的断言是否正确,我对此很好奇。 我说这既没有意义,也不是因为和都将someVar评估为布尔值,所以!! 是多余的。 实际上,我唯一想到使用double not运算符是合法的,是如果您想与另一个布尔值进行严格比较(因此可能返回的值显式地期望为true或false)。 它是否正确?当我注意到jQuer

  • 问题内容: 我对使用Python中的逻辑运算符获得的结果感到有些困惑。我是一个初学者,正在学习一些书籍,但是它们并没有像我所希望的那样详尽地解释。 这是我自己的代码: 似乎只是输出两个变量。 因此,我添加了另一个变量整数。然后我打印并得到以下输出: 后台Python到底是怎么回事?为什么输出的不是7或5、2之类的。 问题答案: Python布尔运算符返回最后计算的值,而不是True / False

  • 问题内容: double not 运算符在PHP中做什么? 例如: 上面的代码会做什么? 问题答案: 这不是“ double not运算符”,它是两次应用的 not 运算符。 无论操作数如何, 该权利都将导致布尔值。然后左边将否定该布尔值。 __ 这意味着对于任何真值(非零的数字,非空字符串和数组等),您将获得布尔值,对于任何假值(0、0.0 、、空字符串或空数组),您将获得布尔值。 它在功能上等

  • 问题内容: 我有以下格式的json文件:- 我想根据以下内容查询文档:- 我尝试使用SearchSourceBuilder和QueryBuilders.matchQuery,但无法使用AND和OR运算符放置多个子查询。 我们如何使用OR和AND运算符查询elasticsearch? 问题答案: 我认为在这种情况下,Bool查询是最好的选择。 就像是 : 在Java中: 该部分是S,该部分都或多或少

  • 问题内容: 因此,我正在与解释器一起玩,并输入以下内容: 最初,我认为这与False和True值有关,因为: 但这似乎无关紧要,因为False始终为0,并且从上述试验看来,它并不是输出的最大价值。 老实说,我在这里看不到这种模式,在文档中也找不到任何东西(老实说,我真的不知道如何有效地寻找它)。 那么,如何 在Python中工作? 问题答案: 从Python文档中: 表达式首先计算; 如果为假,则