次のように解釈されるからです。
Python
1if "abc" or ("def" in "ghi"):
2 ...
Pythonでは空でない文字列は真値として扱われます。
orの右辺の真偽値が何であろうと、左辺のabcが真ならば恒真式です。
なお、Pythonのand演算/or演算は短絡評価を行うので、この場合右辺は評価すらされていません。
これについては、追々知っていけば良い話です。
複数の文字列が"in"で大きな文字列に含まれているかどうか判定したい
それならば、こんなふうに書きます。
カッコは無くても良いですが、有った方が幾分か分かり易いかと。
Python
1if ("abc" in "ghi") and ("def" in "ghi"):
2 ...
また、『複数の文字列』が多くなり列挙が面倒な場合は、次のように書きます。
Python
1words = 複数の文字列のリスト
2if all((s in 'ghi') for s in words):
3 ...
2018/12/09 07:36