これは何?
Python学習サイトCheckIOで見つけたえげつない解答から見出した、「自分が知らなかったこと言語仕様リスト」をクイズ形式でまとめた物です。
追記予定・・・!
問題①:変数nは誰なのか。
次の式を満たす変数nの値が何かを当ててください。
>>> type(n)
# <class 'float'> ; float型
>>> n < 2 * n
# False
>>> n > 2 * n
# False
>>> 1 < n
# False
>>> 1 == n
# False
>>> n < 1
# False
>>> n == n
# False
>>> n != n
# True
>>> n is n
# True
nanを持つ変数と比較するとなんのエラーも出ないので、適宜math.isnanで確かめなければいけない。(深い後悔) 参考: 6.10.1.値の比較、IEEE 754解答
>>>print(n)
# nan
問題②:単純な式
次の式は選択肢のどれと等価でしょうか。
# 問題の式
x is x>=2
# 選択肢
(x is x) >= 2 # (a)
x is (x >= 2) # (b)
それ以外 # (c)
x=2の時与式はTrueです。HINT
正解は「(c)それ以外」です! と等価です。 参考:Python Docの比較、CiO元ネタ(要ログイン&要解答)解答
ではどういう式なのか、が重要なのでまだ考えていない方は是非お考えください・・・!式
(x is x) and (x >= 2)
Pythonでは a>b>c
等、演算子を連続させて記述することができますが、"is"もこの演算子リストに含まれており、andを使わずに表現可能です。
上記式は「複雑に見せるために」あえて「x is x」という意味のない比較をする現実的ではない問題ですが、学習になれば幸いです。