質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

1069閲覧

if 文のTrue、Falseについて

fu_3823

総合スコア81

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/03/09 08:22

文字列を扱うコードです。
以下のプログラムでの真偽の扱いはどうなっているのでしょうか。

Python

1s = "abc" 2if s: 3 print("NO") 4else: 5 print("YES")

基本的なことでしょうが、この場合の
if s:
とは、len(S)が"3"ということで、bool値として"3"、つまり"0"以外なので真となり、"NO"を出力するということでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

とは、len(S)が"3"ということで、bool値として"3"、つまり"0"以外なので真となり、"NO"を出力するということでしょうか。

解釈としては少し違います。

Python の真偽値の仕様は以下の通りです。

偽であると定義されている定数: None と False
数値型におけるゼロ: 0, 0.0, 0j(複素数), Decimal(0), Fraction(0, 1)
空のシーケンスまたはコレクション: '', (), [], {}, set(), range(0)

組み込み型 — Python 3.8.2 ドキュメント
https://docs.python.org/ja/3/library/stdtypes.html?#truth-value-testing

例:

python

1str = None 2if str: 3 print('None is True!') 4else: 5 print('None is False!') 6 7str = '' 8if str: 9 print('Empty is True!') 10else: 11 print('Empty is False!') 12 13str = '0' 14if str: 15 print('0 is True!') 16else: 17 print('0 is False!') 18 19str = 'False' 20if str: 21 print('False is True!') 22else: 23 print('False is False!')

出力:

None is False! Empty is False! 0 is True! False is True!

投稿2020/03/09 08:37

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

リファレンスの「真理値判定」のところを確認してください。

真理値判定 | 組み込み型 — Python 3.8.2 ドキュメント

str型で偽になり得るのは空文字列''""""""""なども同じ、リテラルの表記の違いだけ)だけと定義されていますので、真です。

質問文の説明とは理屈が違いますが、結論は同じです。

投稿2020/03/09 08:29

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

空文字列はFalse、それ以外の文字列はTrueです。

if s: は、
if bool(s): と等価であり、
if s.__bool__(): と等価です。
文字列自身が、自分がFalseかTrueかを判断しています。

参考: https://docs.python.org/ja/3/library/stdtypes.html#truth

投稿2020/03/09 08:28

編集2020/03/09 08:31
shiracamus

総合スコア5406

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問