'OR' 在检查字符串中是否有 'IS NOT' 或 '!=' 时不起作用?

'OR' Is Not Working When Checking If Something 'IS NOT' Or '!=' In a String?

四处寻找答案,但找不到任何答案。这是我的代码:

def translate(string, c = 0):
  for char in string:
    if char != 'u' or char != 'i':
        print string[c]
    c += 1

translate("this is fun")

如果我尝试这样做,整个 if 语句将被取消并且它 returns "t h i s i s f u n" 垂直。但是,如果我改为执行此 if 语句,它会完美运行。如果我有 2 个或更多条件 =!,它只会取消 if 语句。这是 2 个按预期方式工作的 if 语句:

def translate(string, c = 0):
  for char in string:
    if char == 'u' or char == 'i':
        print string[c]
    c += 1

translate("this is fun")

并且:

def translate(string, c = 0):
  for char in string:
    if char != 'u':
        print string[c]
    c += 1

translate("this is fun")

那么,OR 是否只适用于 == 而不适用于 !=?我也试过用 is not.

把它写成英文
if char != 'u' or char != 'i':

这种情况可能存在三种情况:

  1. char既不是'u'也不是'i':条件显然为真。
  2. char 等于 'u':现在,条件的第一部分为假,但第二部分为真,因为 'u' != 'i'。所以 false or true 产生 true.
  3. char等于'i':和之前一样,只是取反了; true or false 也产生 true.

所以问题是因为char不能同时是两个不同的字符,所以你的条件的一部分总是为真。并且由于您将两个部分与 or 组合在一起,因此一个 true 足以决定整个条件的结果;所以条件总是为真。

要解决此问题,请使用 and,因为您现在要求 char 不等于 'u' 不等于'i':

if char != 'u' and char != 'i':

顺便说一句。这是你工作的倒数 char == 'u' or char == 'i'。这是因为 De Morgan’s laws.