我在python代码中使用OR运算符遇到麻烦

时间:2019-04-16 01:06:34

标签: python logical-operators

我正在尝试制作一个具有多个AND,OR和方括号的搜索系统。在编写代码时,我在使用OR时遇到了一些麻烦。我不知道我的代码是错误的还是计算机是错误的,因为有时它给出正确的答案,有时却给出正确的答案。

sentence = ["A", "B", "C"]
bracket = ["X", "or", "B"]

if "or" in bracket:
   index_of_or = bracket.index("or")
   if bracket[index_of_or -1 ] or bracket[index_of_or +1] in sentence:
      bracket = "True"
      print(bracket)
   else:
      bracket = "False"
      print(bracket)

我正在通过更改括号列表中的元素来检查代码。 我放了bracket=['X', 'or', 'Z'] 并且输出为True。

为什么会这样?

3 个答案:

答案 0 :(得分:1)

您需要分隔条件语句。你不能做这样的事情 if x or y == 7 : ...,您必须做if x == 7 or y == 7

请牢记这一点,将代码的相应行更改为可读

if bracket[index_of_or -1 ] in sentence or bracket[index_of_or + 1] in sentence:

答案 1 :(得分:0)

sentence = ["A", "B", "C"]
bracket = ["X", "or", "Z"]

if "or" in bracket:
   index_of_or = bracket.index("or")
   if (bracket[index_of_or -1 ] or bracket[index_of_or +1]) in sentence:
      bracket = "True"
      print(bracket)
   else:
      bracket = "False"
      print(bracket)

输出

False

答案 2 :(得分:0)

出现此问题是由于以下原因:

if bracket[index_of_or -1 ] or bracket[index_of_or +1] in sentence:

这实际上与显示的内容有很大不同。如果满足以下条件,则计算结果为true:

  • bracket[index_of_or -1 ]的计算结果为true,或者

  • bracket[index_of_or +1] in sentence的计算结果为true。

但是您认为如果满足以下条件,它的评估结果为true:

  • bracket[index_of_or -1 ] in sentence的计算结果为true,或者

  • bracket[index_of_or +1] in sentence的计算结果为true。

如果数字不为0,则第一个条件(bracket[index_of_or -1 ])的值将为True。由于False返回1,而{{ 1}}将其设为0,从而使其值为index_of_or = bracket.index("or")

要修复此问题,只需将程序更改为此:

bracket[index_of_or -1 ]

,按预期,输出将为False