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

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

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

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2134閲覧

input()がFalseの時whileループを抜け出せない

esklia

総合スコア81

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/08 03:02

下記コードでinput()に0を入力してもwhileループを抜け出せないのはなぜでしょうか?

while True: a = int(input()) print(a) if a is False: break

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

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

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

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

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

guest

回答2

0

ベストアンサー

0は、ifの判定上、Falseとなるので、

if a:

だけでいいと思います。

今、手元に実行環境がないのでなんとも言えませんが、a is Falseというのが気になります。

そもそも冗長ですが、0==FalseはTrueになるみたいです。
https://note.nkmk.me/python-bool-true-false-usage/

isと==に違いがあるようです。
https://qiita.com/i13602/items/6d8914e019c13e858c72

投稿2020/04/08 03:14

Matsui_hero

総合スコア346

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

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

esklia

2020/04/08 03:40

ご回答くださりありがとうございます。そうですね、気づきませんでしたが、 a is FalseはFalse is FalseなのでTrueでした。 リンク先も貼ってくださりありがとうございます。
Matsui_hero

2020/04/08 10:15

あ、回答の"if a:"は正しくは "if not(a):"ですね、まちがえてました。すみません。 >False is FalseなのでTrueでした。 伝え方が悪くてごめんなさい。 今回のご質問はFalse is FalseだからTrueになってbreakするはずなのにしていない!という質問だと思います。 この質問での問題は、if 0:はif False:と同じように動くのに、"0 is False"はFalseと判定される!?というところにあります。 そのアンサーが回答に載せたURLやtiltoiさんの回答になります。 まあ、if not(a):でいいんですがね!
esklia

2020/04/10 11:24

>False is FalseなのでTrueでした。 また勘違いしておりました。 > この質問での問題は、if 0:はif False:と同じように動くのに、"0 is False"はFalseと判定される!?というところにあります。 このことが確かに本質問の問題でした。しっかりURLも読んでおきます。ありがとうございました。
guest

0

python

1print(0 is False) # False 2print(id(0), id(False)) # 94438375908960 94438375477536 3 4print(0 == False) # True

is はオブジェクトが同一かどうか (id() で得られる値が同じかどうか) を判定する演算子であり、値が同一かどうかを判定する演算子ではないからです。
値が同じかどうかは == で比較しましょう。

python

1while True: 2 a = int(input()) 3 print(a) 4 if a == False: 5 break

投稿2020/04/08 03:13

編集2020/04/08 03:16
tiitoi

総合スコア21956

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

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

esklia

2020/04/10 11:22

ご回答くださりありがとうございます。なるほど、isと==をあいまいに理解していました。しっかり覚えておきます。教えていただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問