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

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

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

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

Python 3.x

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

Q&A

解決済

3回答

491閲覧

if not による判定が理解できません(python)

退会済みユーザー

退会済みユーザー

総合スコア0

if

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

Python 3.x

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

0グッド

0クリップ

投稿2019/07/09 12:41

編集2019/07/09 12:58

if not(偽の場合に処理される)がどうしても理解できません。
下記コードの if not response : は、bot_dict{}に登録されていない挨拶が
入力された場合、又は、なにも入力されなかった場合の処理ですが、一体
どいうことなのでしょう。
なにも入力されなかった場合には、response = ''となり、Trueになるのではないでしょうか?

・・・質問も意味不明な状態となり申し訳ないのですが、if notについて
解説いただければと思います。

python

1bot_dict = { 2 'おはよう' : 'オハヨウゴザイマス', 3 'こんにちは' : 'コンニチハ', 4 'こんばんは' : 'コンバンハ', 5} 6 7while True : 8 cmd = input('pybot >> ') 9 response = '' 10 for msg in bot_dict : 11 if msg in cmd : 12 response = bot_dict[msg] 13 print(response) 14 break 15 16 if not response : #ここが分かりません。 17 response = '意味不明です' 18 print(response) 19

空白のため、if文の条件に合致しない。違う言い方をすると、空白(空文字列)はFalseと
なりprint文は実行されない。↓

name = '' if name : print('名前は', name, 'です')

空文字列の場合、if文の条件に合致する。
なぜでしょう?not nameだから、空文字列では無いということになり、print文は実行されないのではないでしょうか?↓

name = '' if not name : print('名前が設定されていません')

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

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

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

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

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

guest

回答3

0

ベストアンサー

これなら分かりますか?

Python

1b = False 2 3if b: 4 print('これは表示されない') 5 6if not b: 7 print('これは表示される')

空文字列でも同じ話です。

Python

1b = '' 2 3if b: 4 print('これは表示されない') 5 6if not b: 7 print('これは表示される')

真偽値として判断されるときは、Falseと同じように取り扱われます。それだけです。


空白(空文字列)

前回も言いましたが、全く異なる概念です。同一視してはいけない。
**『透明な板が何枚あっても、目に見えないから重さは無い』**と主張しているようなものです。

投稿2019/07/09 13:15

編集2019/07/09 13:18
LouiS0616

総合スコア35660

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

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

退会済みユーザー

退会済みユーザー

2019/07/09 13:53

なるほど!やっと理解できました。
guest

0

なにも入力されなかった場合には、response = ''となり、Trueになるのではないでしょうか?

真理値判定

オブジェクトは、デフォルトでは真と判定されます。ただしそのクラスが bool() メソッドを定義していて、それが False を返す場合、または len() メソッドを定義していて、それが 0 を返す場合は偽と判定されます。

主な組み込みオブジェクトで偽と判定されるものを次に示します:
偽であると定義されている定数: None と False
空のシーケンスまたはコレクション: '', (), [], {}, set(), range(0)

空の文字列(シーケンス)はFalseと判定されるのでnot ''Trueと判定されます。

空文字列の場合、if文の条件に合致する。

合致?しません。Falseと判定されます。

投稿2019/07/09 12:58

編集2019/07/09 13:06
can110

総合スコア38266

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

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

0

なにも入力されなかった場合には、response = ''となり、Trueになるのではないでしょうか?

真偽値の文脈で''Falseなので、response = ''の場合は、not responseTrueとなり、if文の中が実行されます。

投稿2019/07/09 12:53

otn

総合スコア84555

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問