AtCoder(Python)のbool値パズル
解決したいこと
始めの三行でTrueまたはFalseを代入してAtCoderという文字列を出力する問題です。
こういったものが初めてなのもあって、このパズル問題の解答がなぜ成り立つのか分かりません。
よろしくお願いします。
https://atcoder.jp/contests/APG4bPython/tasks/APG4bPython_cp
解答例(正答)
a = True # True または False
b = False # True または False
c = True # True または False
# ここから先は変更しないこと
assert (a is True) or (a is False)
assert (b is True) or (b is False)
assert (c is True) or (c is False)
if a:
print("At", end="")
else:
print("Yo", end="")
if not a and b:
print("Bo", end="")
else:
print("Co", end="")
if a and b and c:
print("foo!", end="")
elif True and False:
print("year!", end="")
elif not a or c:
print("der", end="")
print("")
自分で試したこと
aはtrueとしてbがfalseの場合、条件式がfalse値のnotなのでBoが出力されると思ってしまいます。
それに仮にbをtrueにしたとしても、aがtrue値である以上derを出力できないのではないでしょうか。
なぜこの解答が正しいのか分からないのでよろしくお願いします。