【Pythonの基本文法】while文は例外発生で中止される。そして「while 1:」とは?

【Python入門講座】while文と例外発生との関係について、また、「while 1:」という書き方の意味についての説明

今回のPython入門レベル解説のネタは、ずばりwhile文です。ですが、その基本的な考え方・使い方の説明は以前の記事「Pythonのwhile文の使い方と基本的な考え方」で書いていますので、そちらをご覧ください。

今回はそのwhile文について、初心者レベルのちょっとした小ネタの記事です。それはwhile文と例外との関係です。

例外はwhile文を中止させる

まず次のコードを見て下さい。while文の最も基本的なレベルものです。

def loop():
    i=0
    while i<=3:
        print(f'{i}回目です')            
        # raise Exception
        i += 1
    
loop()

実行結果は、

0回目です
1回目です
2回目です
3回目です

では次に、上のコードを少しだけ改変します。

def loop():
    i = 0
    while 1:  # 「while True:」と同じ意味
        print(f'{i}回目です')
        i += 1
        
        if i == 4:
            raise Exception
    
loop()

実行結果は、

0回目です
1回目です
2回目です
3回目です
Traceback (most recent call last):   
  File "<stdin>", line 1, in <module>  File "<stdin>", line 7, in loop    
Exception

変数iが4のところ、つまりコード上の4回目(0から数えているので実際は5回目)のところで、エラーが出ています。

これは、

raise Exception

このように、raise文を使ってエラーを発生させているからですね。

このように例外が発生すると、while文でそこで中止することがわかりました。

「while 1:」とは?

なお、上コード中の

while 1:  # 「while True:」と同じ意味

の「while 1」ですが、

Python上、1とは、特殊なオブジェクトであるTrueと同じ意味を持ちます。確かめてみましょう。

bool(1)

これを実行すると、

True

となります。また、逆に、

int(True)

とすると、

1

となります。

while文は、

while 式:

の式がTrueと評価される間はずっとループします。

そして特殊オブジェクトのTrueは、それ自体Trueという結果を返します。よって、

while True:

は、内部の処理で工夫しないと基本的に無限ループとなります。そのTrueが1と同じなので、

while 1:

も基本的には無限ループとなります。

なお、数字0は特殊なオブジェクトのFalseと同じ意味となります。bool()やint()を使って確かめてみてくださいね。

ちなみにraise文やtry文~excpet節の使い方、そして特殊なオブジェクトのTrue/Falseについては次の過去記事で解説を書いてありますので、読んで見てください。

Python学習ならUdemyの動画で。お得なセールを利用しよう

Pythonをプロから短期間で合理的にマスターするなら、やはり動画による学習方法がわかりやすくオススメです。世界最大級のオンライン学習サイトUdemy(ユーデミー)ではPythonのプログラミング講座が入門~応用レベルまで幅広く展開されています。

Udemyの動画講座では講師に質問が可能、動画なのでプログラムの動きがわかりやすく理解しやすい、わかりにくいところを何度も繰り返し再生できる、プログラミングスクールよりもはるかに安いというメリットがあります。

その中でも次のような講座がおすすめです。

他にも多数のプログラミング講座があるのでぜひ活用し、合理的に短期間でプログラミングを身に着けましょう。

2 Comments

Comments are closed.