AI&プログラミングで遊ぶ

【入門】Python whileの特徴と3つのメリット【使い方解説】

はい、どーも!まっちゃんです!

・while文って一体何?何に使うの??

・学ぶと何が嬉しいの?

・実際はどーやって使うんだろう?

今回はこういった疑問に答えていこうと思います!

✓著者の経験

・大学から始めてPython歴3年
・現在も大学でプログラミングを使ってロボット制御を勉強中
・はじめは入門書を見ても分からなかった経験があり、様々な入門書を読み漁ってようやく理解

こういったボクが解説していきます

ボク自身、はじめはPythonの入門書を読んで勉強してみましたが、その内容すら理解できず、様々な入門書を読み漁った経験があります。

そんな体験の中で「この入門書のここは分かりやすかった」という部分を抽出して解説していこうと思います

 

while文とは何か?どんな事ができるようになるのか?

while文はPythonの醍醐味の1つである「自動化」に大きく関わるものです。

自動化って何だろう?何が嬉しいんだろう?と思うかもしれないので、ここではその話を深堀していこうと思います

while文って一体なに??

繰り返し構文の1つと呼ばれています。

繰り返し行う作業をこのwhile文はボクらの代わりにやってくれます

同じような作業を何回もやるのはめんどーですよね?

例えばこんなプログラムを考えてみましょう!

0~10の数字を全部出力するプログラムを作って遊んでみよう!
初心者で繰り返し構文を知らないとこんな風にプログラムを書く方がいると思います


もちろんこれでも正解ですが、今回ご紹介するwhile文を使うとこんな風に書くことができます

どうでしょうか?

めちゃめちゃスッキリした感じがありますね!

while文をマスターすると、超ラクに高度な動作を実現することができます

 

while文が使えるとできるようになる3つのメリット

while文はあなたの代わりにこんなことをやってくれます

・フツーにやったら1時間2時間かかる作業を一瞬でやってくれる
・プログラム書く量が圧倒的に減るから、見た目も作業もスッキリ
無限に作業をやってくれる(無限ループ)

先ほどのプログラムを見ると分かったかと思いますが、プログラム書く量がめちゃ減ります

その分より高度なプログラムを作ることが可能です

また、条件をうまく設定してあげれば、ボクらが寝ている間でも文句ひとつ言わずにずーっと働いていてくれます

ここからはそんなwhile文の使い方を解説していきます

 

基本的な使い方

(このブログを作成する時にWindows10、Python3.9のIDLEを使用しました)

while文の基本構文

そんな超便利なwhile文なので、扱いも難しそうだと感じるかもしれませんが、実はwhile文を扱うのに用意するモノは基本的に2つだけです

①「どんな時に発動させたいか(発動条件)」
②「どんな繰り返し処理をさせたいか(処理内容)

この2つが用意できたら、この構文に沿ってプログラムを書いていくだけです

繰り返し内容はTabキー1つ分(スペースキー4つ分)スペースが空いています
(これに関しては後ほど詳しく説明)

ただ、これだけでは実際に使いづらいと思うので、ここからは実際に具体例となるプログラムで遊びながら見ていきましょう

カンタンな具体例

それでは冒頭で出したこちらのプログラムを見ていきましょう

実はこんな構成になっていました
①発動条件:「i<=10」
②繰り返し内容:「print(i)」と「i+=1」

1つずつ順番に見ていきましょう!

①while発動条件:「i<=10」

発動条件は「iが10以下の場合」です

今回1行目でiには0が代入されていました!

つまりこのwhile文の発動条件が整っているのでwhile文の中身の処理がスタートします
(もし条件が整っていなかった場合、while文の中身はスルーされます)

②while繰り返し内容

今回は2つの繰り返し処理が書かれています

1つ目の「print(i)」ではiに代入されている値を出力します
(最初は0が代入されていたので、0が出力されてます)

「while文とセットでお得」複合代入演算子

2つ目の「i+=1」は??を浮かべた人が多いと思います

これは複合代入演算子なんて言われたりしますが、数学には出てこない、プログラミング特有の表現ですので、完全に初見殺しの考え方です

最初は少々厄介と感じるかもですが、while文とセットで使うことで超絶便利な力を発揮する優れものですので、ぜひこちらもマスターしてみましょう!

ここでは簡単な説明を行いますが、別の記事でより詳しい解説を行っていますので、分からなければこちらの記事もご覧ください

 

複合代入演算子(今回のプログラムでは「i+=1」として登場)>
i = i + 1」の省略系
・今まで扱っていたi(右辺のi)に+1した値を次のi(左辺のi)に代入
めちゃ色んな場面で出てくるので省略形まで作られています

今回のプログラム1行目ではiに0を代入していました。
つまり、左辺のiには右辺のiの値である0と1を足した値が代入されることになります(0+1を左辺のiに代入)

このように途中から代入する数字を変えていくことはプログラミングではよく行います

細かい話が難しいという方はここだけ覚えておけば大丈夫です!

「i += 1」はループごとにiの値が1ずつ増えていく!

 

ループでの一連の処理をまとめてみるとこんな感じになります

これらの操作をwhile文の発動条件が満たされている間はずっと行われます

 

うまくいかない原因(エラー文のチェック項目)

実際にプログラムを自分の手で入力して実行してみるとエラー文が出てきてうまく進めない場合が出てきます

そこでここからは初心者の方が陥りやすいミスをまとめました!

思うようにプログラムが表示されなかった場合はこちらの内容を参考にしてみてください!

インデントエラー

Pythonにおいてwhile文の繰り返し処理内容を書く時にはインデントという字下げが必要です

「インデント!?ナニソレ???」
と思う方も多いと思うので、ザックリとした内容をまとめてみました

インデント
Tabキー1つ分、あるいはスペースキー4つ分を入れて、字下げする行為のこと!

こんなエラー文が出たらインデントを見直してみて!

IDLEの場合ですが、このようなエラーメッセージが表示されたら、このインデントをチェックしてみると正常に動く可能性が高いです

コロン付け忘れ

while文の書き方をよく見てみると、発動条件の後に「:(コロン)」が付いていますね!

初心者の方にありがちなのはこのコロンの付け忘れがあります

こんなエラー文が出たら「:(コロン)」を見直してみて!

こんなエラーメッセージが出てきたら、発動条件の後にある「:(コロン)」が付いているかどうかチェックしてみましょう!

IDLEの場合はどこにエラーがあったかを赤くマークしてくれているのでとても分かりやすいと思います!

全角入力(スペースは特に気づきにくい)

中には
「え!?ちゃんと一字一句同じなのにエラー出るんですけど!」
という人もいるかもしれません

そんな時は全角入力になってないかチェックしてみてください!

Pythonは基本的に半角入力で動きます

全角入力と半角入力はキーボードの左上で変更できます

こんなエラーが出たら半角になってるか見直してみて!

IDLEでこんなエラーメッセージが出たら、全角入力になっている可能性が高いです!半角入力にしてみましょう!

特にスペースが全角になっている時はマジで気づきにくいです!

一度消してみて、半角入力になっているかチェックしてからもう一度入力してみてください!!

 

便利な使い方(while文応用編)

ここからはwhile文の便利さをもう少し体験できるような内容にしていきます!

数が多くてめんどうな計算を瞬殺

さて、こんなプログラムを作って遊んでみましょう!

九九を超えた13の段を全て出力させてみよう!

日本では9の段までしか小学校で習っていませんが、
インドでは20の段まで習うことは有名な話です

13の段がスッと出てこないボクらは終わりかというとそうではありません!
ボクらにはPythonがあります!

ということで13×13までの計算を全て出力するプログラムを作ってみましょう

プログラム内容とプチ解説

ちなみにボクが考えたプログラムは以下の通り
(これ以外にも正解はたくさんあります)

ここでは

①発動条件→「i <= 13」
②繰り返し内容→「 print("13*",i,"=",a*i)」と「i =+ 1」

となっています!

繰り返し内容のprint()では" "(ダブルクォーテーション)で囲まれた文字列と数字をコンボで出力しています

無限ループ

無限ループとは永遠にプログラムが終わらないことです

実はwhile文の発動条件をいじると無限ループが完成します

プログラム内容とプチ解説

発動条件を「True」にしておけば、無限ループにすることができます

実際のプログラムにするとこんな感じ

※最初はビックリすると思いますが、故障ではないのでご安心ください

無限にprint()の中身が出てきます

その際にこれは必ず覚えておきましょう!

CtrlキーとCキーを両方同時に押すとプログラムが強制終了される
もしかしたらこれを見た人の中にこんなことを思う人もいるかもしれませんね

え、こんなん何に使うの??

例えばゲームで同じ会話をする村人を作ることができます
話しかけられるまでは何も出力せずに無限に待つ。もし話しかけられたら(If文)答えを返す
自販機も同じ原理でプログラムが動きます
つまり、ボクらが寝ている間にもずっと働き続けてくれるので、
自動化にめちゃ使えるというわけです!

-AI&プログラミングで遊ぶ