寻找答案,却找不到任何答案。这是我的代码:
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
语句就会被取消,并且它会在垂直方向上返回“t i i s i s f u n”。但是,如果我这样做if
语句,它就完美无缺。如果我有2个或更多条件=!,它只取消if语句。如果陈述按照预期的方式发挥作用,则为2:
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
。
答案 0 :(得分:2)
if char != 'u' or char != 'i':
这种情况有三种可能的情况:
char
既不是'u'
也不是'i'
:条件显然是正确的。char
等于'u'
:现在,条件的第一部分为false,但第二部分为真,因为'u' != 'i'
。因此false or true
会产生true
。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。