今回の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でユーザー独自の例外を定義し使う方法を、公式ドキュメントのコード例を使って解説。Exceptionクラスの継承とraise文の使い方とは?
- Pythonにおけるtryとexceptによるエラーと例外処理についてわかりやすく解説
- 【Python解説】True/Falseと「if False:」の解説
Python学習ならUdemyの動画で。お得なセールを利用しよう
Pythonをプロから短期間で合理的にマスターするなら、やはり動画による学習方法がわかりやすくオススメです。世界最大級のオンライン学習サイトUdemy(ユーデミー)【PR】ではPythonのプログラミング講座が入門~応用レベルまで幅広く展開されています。
Udemyの動画講座では講師に質問が可能、動画なのでプログラムの動きがわかりやすく理解しやすい、わかりにくいところを何度も繰り返し再生できる、プログラミングスクールよりもはるかに安いというメリットがあります。
その中でも次のような講座がおすすめです。
- Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学ぶオンライン講座【PR】
- 【世界で5万人が受講】実践 Python データサイエンス・オンライン講座【PR】
- 人工知能・機械学習 脱ブラックボックス講座
【PR】
- みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習
【PR】
他にも多数のプログラミング講座があるのでぜひ活用し、合理的に短期間でプログラミングを身に着けましょう。