dポイントプレゼントキャンペーン実施中!

True == 1のみならず中身があれば
1 以外の2 とかへたするとnon empty のobj も
True とequivalent ってぜったいどこかで読んだ気がするんですけどてもとでかくにんすると全然そんなことないです。
なにとかん違いしたと思いますか??
ぜったいどこかで読みました

Python

A 回答 (3件)

>True とequivalent



2つの異なる話を混同していると思う。

①True == ~

がTrueを返す

②if ~:
 print("true")

がtrueと表示する

というのが有って


>1 以外の2 とかへたするとnon empty のobj も

は②の話だね。これは値をbool型に「変換」すると
どうなるかということ。全て型の全て値はTrueかFalseに変換できる。

if bool(~):

と書いても同じ。

①はTrueとの「比較」でpythonは無断で型変換をほぼしない言語で
Trueと~の型が異なればFalseが返ります。
但し、True==1 ゃ True == 1.0 等は例外
こうなっていると科学技術計算でいろいろと都合が良いのですが
pythonの気色の悪いところだと思う。
    • good
    • 0
この回答へのお礼

助かりました

めちゃすきです。

お礼日時:2024/06/26 20:14

公式マニュアルより。


https://docs.python.org/3/library/stdtypes.html# …
https://docs.python.org/ja/3/library/stdtypes.ht …

if flg : 〜
とあったら
if (flg is not None) and ((flg is not False) and ((flg.__bool__メソッドが定義されている and bool(a) ) or (flg.__len__メソッドが定義されている and len(a)!=0)) : 〜
位の判定をしている、ということです。



> てもとでかくにんする

どういう確認をして、どうして「全然そんなことないです」と判断したのでうか?

以下の簡単なプログラム

f =True
if f :
print("TRUE")
else:
print("FALSE")

で f = True を f = None とか f = 2 とかに変えて確認するとよいでしょう。


間違いそうなのは
○== 演算子と is 演算子の違い。
・0 == False だが 0 is False ではない
○if/whineの条件として使うときと、 == 演算子との違い。
if f :
print("TRUE")
else:
print("FALSE")
 と
if f == True :
print("TRUE")
else:
print("FALSE")
 と
if f != False :
print("TRUE")
else:
print("FALSE")
はどれも同じ動作をしそうだが、実際は動作が違うことがある。

・if None :〜 ではNoneはFalseとして扱われるが None == False ではない(Falseになる / None != False はTrueになる)
かといって、 None == Trueでもない
    • good
    • 1
この回答へのお礼

ありがとう

ありがとうございます~そですよいね、たぶんうえのかいとうしゃさんがいってくれたことでしたm(_ _)m

お礼日時:2024/06/28 19:01

PythonだけでなくCからの伝統ですけど、0以外の数値を真偽値にキャスト(型変換)すると真になります。

0が偽で非0が真。
Pythonの場合は空でないオブジェクトもそうですね。''は偽ですけど。
Pythonインタプリタのコンソールで
bool(0)
bool(1)
bool('')
bool('a')
などやってみると良いです。
ちなみにTrueは内部数値的に1なのでTrue==2はFalseです。
    • good
    • 0
この回答へのお礼

ありがとう

えでもぱいそんだとならなくなってないですか??

お礼日時:2024/06/22 21:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A