回答編集履歴

2 成形

LouiS0616

LouiS0616 score 34947

2019/02/08 02:18  投稿

line_1 == "chocolate" or "candy" は (line_1 == "chocolate") or "candy" の順で評価されます。
つまり、『line_1 == "chocolate"が真 あるいは "candy"が真』という条件です。
Pythonにおいては、空でない文字列は常に真であると見做されます。
その上では、先の条件式は『line_1 == "chocolate"が真 あるいは 真』、つまり恒真式です。
---
line_1 in ("chocolate", "candy") という条件を使うと幸せになれると思います。
余談
---
『それならば line_1 == ("chocolate" or "candy") と書けば良いでは無いか、』と思う方もいるでしょう。
『それなら line_1 == ("chocolate" or "candy") と書けば良いでは無いか』と思う方もいるでしょう。
しかし、結局は line_1 == "chocolate" という条件と同じになっちゃうんですよね。
1 追記

LouiS0616

LouiS0616 score 34947

2019/02/08 02:17  投稿

line_1 == "chocolate" or "candy" は (line_1 == "chocolate") or "candy" の順で評価されます。
つまり、『line_1 == "chocolate"が真 あるいは "candy"が真』という条件です。
Pythonにおいては、空でない文字列は常に真であると見做されます。
その上では、先の条件式は『line_1 == "chocolate"が真 あるいは 真』、つまり恒真式です。
---
line_1 in ("chocolate", "candy") という条件を使うと幸せになれると思います。
line_1 in ("chocolate", "candy") という条件を使うと幸せになれると思います。
余談
---
『それならば line_1 == ("chocolate" or "candy") と書けば良いでは無いか、』と思う方もいるでしょう。
しかし、結局は line_1 == "chocolate" という条件と同じになっちゃうんですよね。
**andやorは計算をしているだけ、if文は計算結果を利用しているだけ**ということは案外見落とされがちです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る