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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

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

Python

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

Q&A

解決済

6回答

2084閲覧

while True:とは?

sasuke_killer

総合スコア42

Python 3.x

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

Python

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

1グッド

0クリップ

投稿2018/08/16 01:36

編集2018/08/16 05:46

while True:

while True:ってよく見ますけど、これは何をTrueとしているのでしょうか?
因みに、while False:だと何も実行されませんでした。

サンプル念のため上げときます。

python3

1while True: 2 print("whileが実行されました") 3 break

追記1

聞きたいことは、何をTrueとしているか、です。
例えば、3が代入されている変数cがあって条件式がc>0ならその条件式はTrueなので実行される、というのはわかります。

でも、このコードの条件式はTrueです。
一体、何がTrueの時にwhile分は実行されているのでしょうか?

現時点で理解していること(間違いである可能性大)

TrueはTrueとして評価される。
TrueがTrueなので、条件式が成立し、TrueがTrueである間(つまり、breakが作動しない間)はずっと条件が成立するから無限ループになる。

新たな疑問

TrueがTrueということは、FalseはFalseですよね?
つまり、False単体でも条件が揃うはずだけど...実際にはそろっていない。(実行されないため)

もし余力のある方がいらっしゃいましたら、この僕の間違った理解を正してくれないでしょうか?

理解できました

Trueは真として引数を渡し、Falseは偽として引数を渡す。

otn👍を押しています

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

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

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

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

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

sasuke_killer

2018/08/16 02:00

いえ、僕の進歩状況にあったコードを拝見できるのはうれしいです。ありがとうございます!
jun68ykt

2018/08/16 03:15

どういたしまして。それと、このご質問で疑問だったことが理解できたら、応用として https://www.jdoodle.com/a/BPG (※実行すると無限に hello world が表示されます)に挙げたように、 while 1: だったり while []: だったりも、結果に納得できるかご確認されるとよいかもしれません。
sasuke_killer

2018/08/16 03:19

わざわざ丁寧にありがとうございます...! でも実は、0や何も入っていない文字列やリストが偽なのは理解しているんです。(笑)
jun68ykt

2018/08/16 03:25

なるほど。それは素晴らしいです!
fuzzball

2018/08/16 05:54

解決済みなのでここにでも。 https://docs.python.jp/3/reference/expressions.html#booleans 真/偽の場合は true/false と表現しています。True/Falseと区別されているということです。なので、質問文の後半に書かれていることは、「Trueはtrue、Falseはfalse」が正しい表現になるかと思います。(別に「TrueはTrue」が間違っている、という意味ではありません)
guest

回答6

0

ベストアンサー

####最初に
Pythonの言語仕様を知らないのですが、
これはPython以外にも言えることなのかな。。
と思ったので、お答えします。
####本題
while True:に関する疑問は、このサイトが参考になります。
if文の誤解
※ifもwhileも、条件を書く場所に、真偽値を返すよう値を入れるのは、ほぼどの言語でも同じかと思われます。

ぜひ覚えてほしいのはwhileの後に書く処理は、
** 条件式ではなく真または偽を返す式(すなわち条件式)**
だということです。

つまり、必ずしも条件式を作る必要はないです。
※ご指摘を頂いたので、修正しました。

なので、

聞きたいことは、何をTrueとしているか

これはよくある誤解です。

比較演算子を使わないと条件がもとまらないと勘違いしがちですが、
あえて上の引用文にお答えするなら、比較対象がいないので何もTrueとして見ていないです。

言いたいのは、
何かと比較しているのではなく、真そのものを渡している
から必ず条件は真となり、whileの中の処理に入る訳です。

ifやwhileを実行するにあたって、
条件が真か偽か分かれば機能してくれる訳です。

TrueがTrueということは、FalseはFalseですよね?

つまり、False単体でも条件が揃うはずだけど...実際にはそろっていない。(実行されないため)

これも、Falseが渡された場合は条件が必ず偽なので、中の処理には絶対入らないです。

投稿2018/08/16 02:51

編集2018/08/16 06:03
BluOxy

総合スコア2663

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

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

sasuke_killer

2018/08/16 03:14

whileやifは必ず条件式が真のときに実行するから、False(偽)は実行されないということですか? そうすると、TrueやFalseは単体で(真)や(偽)の意味を持っており真or偽をそのまま引数として渡せる、という解釈になると思うのですがこれはあっていますか?
BluOxy

2018/08/16 03:17

いえす あとは実際に動かして確認してみると良いです
sasuke_killer

2018/08/16 03:20

ありがとうございました!!!(感激)
Zuishin

2018/08/16 05:30

リンク先の情報に疑問があります。 これは根拠なく勝手に書いたものではありませんか? プログラミングにおいて「式」とは「評価できるもの」という意味であり、真偽値を返す True False は真式、偽式という立派な式です。 そして式を if 文の中に書いたものが条件式です。 条件式とは式そのものではなく、文脈によって条件式と定義されます。 そこからすると if (条件式) をなぜ間違いのように書いているのか全くわかりません。 if 文の条件として式を指定しているので条件式で間違いないのでは? Python の公式ドキュメント https://docs.python.jp/3/reference/compound_stmts.html#if では "if" に続いて expression と書いてありますが、expression を訳したものが式です。
Zuishin

2018/08/16 05:35

更に expression をクリックすると「条件式」の項にジャンプしました。 if に続くのは条件式というのが公式の見解のようです。
BluOxy

2018/08/16 05:36

>プログラミングにおいて「式」とは「評価できるもの」という意味であり、真偽値を返す True False >は真式、偽式という立派な式です。 >そして式を if 文の中に書いたものが条件式です。 >条件式とは式そのものではなく、文脈によって条件式と定義されます。 とのことであれば、if (条件式) が間違いというのは訂正いたします。 自分の頭の中では「比較演算子が使われている条件=条件式」という認識になっていたため、 上記回答をしました。 ご指摘ありがとうございます。
Zuishin

2018/08/16 05:45

参考にならないサイトが「参考になります」と残っています。 Qiita は誰でも記事を書けますので、トンデモ記事も多くあります。 鵜呑みにしないようお願いします。
guest

0

何がではなく、条件が真であればループするという意味ですので、常にループしますという宣言です。
様々なループ書式がありますが、他言語にある様なdo-while構文の代わりに利用されることが多いのではないでしょうか。

あるいは、デバッグ用途で、一時的に処理するけれど、開発が終了したらFalseにするだけで処理しない様にしたいとか。

投稿2018/08/16 02:06

t_obara

総合スコア5488

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

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

sasuke_killer

2018/08/16 02:17 編集

ということは、条件に"True"と書いているから入力された時点で"True"のbool値は真であり、真の場合に実行されるという条件式だから、条件式がTrueだけでも実行されるということですか?(わかりにくくて申し訳ないです)
sasuke_killer

2018/08/16 02:20

もう少しわかりやすく聞きます。"True"が真だからwhile文が実行されるのですか?
guest

0

> 聞きたいことは、何をTrueとしているか、です。

そのまま定数でかいてあります。

例えば、3が代入されている変数cがあって条件式がc>0ならその条件式はTrueなので実行される、というのはわかります。

Python

1while (c > 0) == True: 2 print("whileが実行されました") 3 break

が、わかっているとのことなので

Python

1while (True) == True: 2 print("whileが実行されました") 3 break

と書いてあると思ってもらえればいいかと。

投稿2018/08/16 02:29

momon-ga

総合スコア4820

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

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

sasuke_killer

2018/08/16 02:34

TrueはTrueなんですね!() 回答ありがとうございました!理解できました!
guest

0

ループ回数が事前に分からない場合などで、無限ループを意図的に作る場合に使います。無条件でTrueなのでwhileは周り続けます。これだけだとループから抜け出せないので、if-breakを使って終了条件を作ります。

投稿2018/08/16 02:03

tachikoma

総合スコア3601

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

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

sasuke_killer

2018/08/16 02:23

使い方ではなく、なぜ条件式がTrueだけで実行されるのか?Trueは何を真と評価しているのか?ってことを聞きたいのです。
tachikoma

2018/08/16 02:27

条件式を評価した結果がTrueだからです。True一つでも条件式として成立しています。
sasuke_killer

2018/08/16 02:32

あ、わかりました。なるほど。True==真という意味があって、Trueが真だからtrueが実行されるのですね...。 回答ありがとうございました!
guest

0

python while True: をキーワードにググると、質問者さんが期待しているであろう情報を含んだサイトが多々ヒットしますが、やってみましたか?

例えば下記:

【Python】while文で一定の条件を満たしている間は繰り返しを行う。
http://blog.codebook-10000.com/entry/20130906/1378425828

こういう話を聞きたいのではないということであれば、もっと具体的に何を聞きたいのか書いてください。

投稿2018/08/16 01:41

編集2018/08/16 01:41
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sasuke_killer

2018/08/16 02:23 編集

はい。投稿してからですけど気づいて調べてみました。しかし、知りたいことは載っていませんでした。 質問を修正しておきますね。
退会済みユーザー

退会済みユーザー

2018/08/16 02:36

紹介した記事を上から下まで読めば絶対分かると思うのですが、読んでないのでは? それとも理解できない? 後者だとすると何と説明していいのか途方にくれるって感じがします。
sasuke_killer

2018/08/16 02:45

いえ、使い方や用法が載っているのは確認できましたけど...。 おそらく後者だと思います。
退会済みユーザー

退会済みユーザー

2018/08/16 02:57 編集

理解してもらえるかどうかわかりませんが、説明など。 紹介した記事の while i < 10: の意味は分かりますか? i < 10 は条件式で、i が 9 以下の場合は True に、10 以上の場合に False になるのは分かりますか? i < 10 の評価結果が True になるとどうなるか、False になるとどうなるかは分かりますよね。 そしたら、while True: がどういう意味かは分かりますよね。 プログラムの初学者の方には while True: というのは違和感があるかもしれませんが、他の言語でも普通に行われることですので、少し学習が進めば違和感は感じなくなると思います。
sasuke_killer

2018/08/16 03:00

はい、比較演算子を使うところならわかるのですが、while True:が違和感ありすぎて気持ち悪かったので質問しました。でもいずれはこの違和感はなくなるのですね! 回答ありがとうございました!
guest

0

参考情報:

  • Python3におけるwhile(True)の意味

http://rurupi.xyz/2017/10/27/python3-tips-6/

  • Python入門】制御フローツール while 文の使い方

https://q-three.com/archives/454

  • 直接while文に「True」を指定する無限ループ

https://dot-blog.jp/news/python-while/

では、問題です。
つぎの whille xxx: の書き方で、無限ループになるのはどれでしょう?
(私も実際にためしてみたら、予想外の結果だった...)
while True:
while False:
while None:
while 1:
while 0:
while "":
while "a":

python

1c = 1 2while "": 3 print(c) 4 c += 1 5 if c > 3: 6 break

のファイルを作り、 while xxx: の部分をいろいろ編集して実行してみてください。

投稿2018/08/16 04:20

katoy

総合スコア22324

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

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

sasuke_killer

2018/08/16 05:32

あ、なぜNoneがFalseだとわかったかと言いますと、Noneは何もないことを返しているもの、のように記憶していたので、他のと比べると軽い(偽ってことです)からです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問