использование:
if 'FUTURE' in string or 'future' in string:
или просто:
if 'future' in string.lower()
Почему это не удалось:
if 'FUTURE' or 'future' in string:
фактически эквивалентно:
True or ('future' in string) # bool('FUTURE') --> True
как первое условие всегда True, поэтому следующее условие никогда не проверяется. На самом деле ваше if-condition всегда True независимо от того, какая строка содержит.
Непустая строка всегда True
в python и or
короткое замыкание в работе, как только будет найдено истинное значение.
>>> strs1 = "your future doesn't look good."
>>> strs2 = "Your FUTURE looks good."
>>> 'FUTURE' or 'future' in strs1
'FUTURE'
>>> 'Foobar' or 'future' in strs1
'Foobar'
>>> 'Foobar' or 'cat' in strs1
'Foobar'
>>> '' or 'cat' in strs1 # empty string is a falsey value,
False # so now it checks the next condition
Обратите внимание, что:
>>> 'FUTURE' in 'FOOFUTURE'
True
является True
как in
оператор ищет подстроки не точное совпадение слова.
Используйте либо regex
, либо str.split
для обработки таких случаев.
ваш первый фрагмент будет точным, если строка была 'if 'FUTURE' и 'future' в строке ...'. это больше похоже на 'if 'FUTURE': [code] elif 'future' в строке: [тот же код]' –