この章ではbreakについて説明します。
breakはforやwhileなどと一緒に使います。
forやwhileの中で「ある条件下に達した時」にbreakを使ってforやwhileを抜けることができます。
つまり、現在行っている繰り返し作業を強制的に終了させます。
では例をみてみましょう。 for文のブロックの中にif文が入っています。
このif文の意味は「もし、iが4になったら for文を抜けますよ」と言う意味です。breakはこのように一連の流れを強制的に中止するために使われます。
では一連の流れを見てみましょう。
①初めに1がiに代入され、if文での 判定に入ります。もしiが4になったら、for文を抜けますが、iは1でfalseなので if文は実行されません。
②が実行され、「1つのリンゴ」を出力します。
③ for文の先頭に戻って、2がiに代入され if文での判定に入ります。
もしiが4になったら、for文を抜けますが、iは2でfalseなのでif文は実行されません。
④が実行され、「2つのリンゴ」を出力します。
⑤ for文の先頭に戻って、3がiに代入され if文での判定に入ります。
もしiが4になったら、for文を抜けますが iは3でfalseなのでif文は実行されません。
⑥が実行され、「3つのリンゴ」を出力します。
⑦ for文の先頭に戻って、4がiに代入され if文での判定に入ります。
もしiが4になったら、for文を抜けますが iは4でtrueなのでif文が実行されてbreakが実行されます。
ここでfor文を抜けるので、この後のは実行されません。
⑧ breakで for文を抜けたので、を実行して終了です。
インデントについては以前説明しましたが、もう一度復習します。 上の例は3つの文章に分かれていますので
それぞれの先頭を左端に合わせてください。
次はwhile文の中で、breakを使用する例を紹介します。 このプログラムはユーザーが入力したものに対して足し算を行っています。
「while True:」のように条件式をTrueにすると無限に繰り返しを行います。
この無限の繰り返しはbreakで抜けないと文字通り無限に繰り返しを行います。
raw_input関数はユーザーにキーボードからの入力を促すわけですが、例え数値を入力したとしても、raw_input関数は文字列として入力される仕様なので、文字列を数値に変換してあげないと計算することは出来ません。
そこで、その文字列をint関数でキャストして数値にしてあげることで計算することができるようになります。
if文の条件式のaが1になりましたら、while文を抜ける仕様になっていますので最後に1を入力したら計算が終わりになります。
最後に1が入力されていますが、ここで計算は終わりです。
この1は合計には含まれません。
結果は以下の通りです。
カテゴリー: Python
while文について知ろう
この章ではwhile文について説明します。
while文は条件式がtrueの間は繰り返しを続けます。
while文も基本的にはfor文と同じ動きをします。 では例をみてみましょう。 初めにwhileが実行される時に条件式がtrueもしくはfalseであるのかをチェックします。
trueである場合はwhile文が実行されます。
falseである場合にはwhile文は実行されません。
では順番に説明をしていきます。
① numに0を代入します。
②条件式をチェックした結果、trueであるのでwhile文を実行します。
③ print numの箇所で0を出力します。
④ num +=1の箇所で0であるnumに1を足して、1になります。
と同じ意味です。
⑤それからまたwhileの先頭に戻って条件式を評価しますが、まだnumは3より小さいので、while文を実行します。
⑥ print numの箇所で1を出力します。
⑦ num +=1の箇所で1であるnumに1を足して、2になります。
⑧それからまたwhileの先頭に戻って条件式を評価しますが、まだnumは3より小さいので、while文を実行します。
⑨ print numの箇所で2を出力します。
⑩ num +=1の箇所で2であるnumに1を足して、3になります。
⑪それからまたwhileの先頭に戻って条件式を評価しますが、ここで初めて条件式がfalseになるのでwhile文は実行されず終了になります。
繰り返し構文forについて知ろう
この章ではfor文について説明します。
for文は何度も繰り返す処理を必要とする時に使います。
例えばリストの要素をすべて出力したい時に使います。
では例をみてみましょう。 基本構文は次の通りです。 以下の図の順番でリストなどの要素が順番に取り出されていきます。
またfor文の中に複数の文を書く場合には位置を揃えてください。 この例ではリストの中の要素をすべて出力しています。
順番に解説します。 結果は次の通りです。 次の例ではタプルの要素をfor文で出力します。
タプルの要素をfor文で出力していますが、流れはリストの時と同じです。
結果は次の通りです。
次の例では文字列の要素をfor文で出力します。 文字列の場合は1文字1文字が順番にaに代入されて、print文で出力されます。
結果は以下の通りです。
次の例ではfor文の中でrange関数を使用して要素を出力します。 range関数でリストを作ることができることは説明済みですが、for文の中でrange関数を使用してその要素を取り出すことが出来ます。
と同じ意味ですので、結果は以下の通りです。
次の例ではディクショナリの要素を出力します。 〇 keys関数でディクショナリのキーだけを順番に変数keyに入れます。
keys関数は説明済みなので、もう一度見直しておいてください。
〇 print文でキーと値をそれぞれ出力します。
と記述することで、ディクショナリの値を取得することが出来ます。
結果は以下の通りです。
次の例もディクショナリの要素を出力していますが、前の例と同じでキーと値を出力しています。 ディクショナリのキーと値を両方取得したい場合は itemsメソッドを使うことは説明しました。
これまではfor文の中でデータを入れる変数は1つだけでしたが、ここではカンマを挟んで変数をaとbの2つを記述しています。
aにはキーが、bには値が入ります。 結果は以下の通りです。
文字列に関する色々なメソッドを知ろう
この章では文字列を他の文字列に変換したり、大文字を小文字に変換したりするメソッドなどについて説明します。
初めに一部の文字列を他の文字列に変換する方法について説明します。
では例をみてみましょう。 一部分の文字列を他の文字列に変換するにはreplaceメソッドを使用します。 そして、最後にと出力していますが、結果は文字を入れ替えたのにも関わらずとなっています。
なぜここでを出力させているかといいますと、前の過程で文字列の一部をreplaceで変更しましたが、これは元の文字列まで変更させているわけではないことを確認して欲しかったからです。
結果は以下の通りです。 下の例はreplaceで変更したものをstr2に入れて出力していますが、先ほどの例と結果は同じです。
変更したものを他で使いたい場合には変数に入れてください。
次は文字列を大文字にしたり、小文字にしたりする方法について説明します。
文字列を大文字にするにはupperメソッド,文字列を小文字にするにはlowerメソッドを使います。
では例をみてみましょう。 基本構文は以下の通りです。 これもreplaceと同じく、元の文字列まで変更させているわけではありません。
結果は以下の通りです。
次の例は変更したものをstr3とstr4に入れて出力していますが、先ほどの例と結果は同じです。
変更したものを他で使いたい場合には変数に入れてください。
次はsplitメソッドについて説明します。
では例をみてみましょう。 splitメソッドは文字列を指定した区切り文字で区切って、その結果をリストとして返してくれます。
この例では文字列の中ので区切っています。
splitメソッドもreplaceと同じく、元の文字列まで変更させているわけではありません。
結果は以下の通りですが、区切った結果がリストになっているのが分かります。
次は文字列の検索方法について説明します。
初めに文字列の先頭が指定した文字であるかを調べます。
では例をみてみましょう。
startswithは文字列の先頭が「指定した文字列」であればtrue、そうでないならばfalseを返します。 結果は次の通りです。 startswithメソッドは以下のようなif文などで使われます。
次は文字列中に指定の文字が含まれているかを調べる方法について説明します。
では例をみてみましょう。
文字列中に指定した文字列が含まれているかどうかを調べます。
含まれていればtrueを、含まれていなければfalseを返します。
結果は以下の通りです。 「in」もstartswithと同じくif文などで使います。 結果は次の通りです。
if文で星座を判定しよう
この章ではif文で星座を判定します。このプログラムの中にあるif文は入れ子になっていますので、このif文の入れ子について説明していきます。
長いプログラムですが、if文が連続しているだけです。 では前から説明していきます。 この箇所ではユーザーに誕生日の月と日を入力させています。
つまり、以下の赤枠の箇所のようにユーザーに入力させます。 そのユーザーに入力させるための関数がraw_input関数です。 「文字列」には画面に表示させたい文字列を入力します。この文字列は省略できます。
この関数はユーザーにキーボードからの入力を促すわけですが、例え数値を入力したとしても、文字列として入力されるので、これをint関数で整数に変換します。
int関数については「Pythonで計算をしよう」で説明しました。
整数に変換をしないとif文で判定ができなくなりますので、このプログラムではint関数で変換してください。
次にif文について説明します。 この例では外側のif文でmonthの数値が1から12までのどの数値なのかを確認します。
次に内側のif文で入力させたdayの値により分別をします。
例えば1月は山羊座か水瓶座なので,1月19日までが山羊座で、1月20日からが水瓶座になります。
ですので、入れ子の中の条件式は「and」で連結して、という表現で書きます。
どれにも当てはまらない時には「間違い」が出力されます。
このように内側のif文は外側のif文での条件をさらに絞りたい場合に使用します。
つまり、入力された月は1月なので、さらに入力された日をもとに山羊座か水瓶座のどちらかを調べましょうと言うことです。
補足ですが、以下の赤枠の箇所は月の入力が間違えていた時に出力されますので、外側のif文のelseになります。 月に89などの数値が入力されれば以下のように「間違い」が出力されます。
この章ではif文を使用して、占いプログラムを作ります。
では例をみてみましょう。 randint関数については説明済みですが、もう一度復習します。
この中にという記述がありますが、これは乱数を生成するrandint関数を使っています。
この記述で0から6までの整数値をランダムに生成します。
他にものように使用すると、2から12までの整数値をランダムに生 成します。
このrandint関数を使用するためにはrandomモジュールと言うファイルを取り入れなくてはいけません。
このモジュールを取り入れるにはという記述が必要です。
モジュールと言うのは機能ごとに分かれているファイルです。
例えばrandomモジュールにはrandint関数の他にもrandom関数がありますが、この関数は0.0から1.0までの小数点を含んだ値を返します。
randomモジュールにはこのように機能が似た関数が複数あり、1つのモジュールとしてまとまっています。
ではプログラムの説明に入ります。
answerには0から6までの整数値が入っているので、例えば0が入っているとするとになるので、の箇所はtrueになります。
結果、「大吉です」が出力されます。
結果は次の通り、毎回違う占い結果が出力されます。
論理演算子について知ろう
この章では論理演算子を使った複雑な条件文について説明します。
論理演算子を使うことで関係演算子だけではできなかった複雑な条件式を記述することが可能になります。
論理演算子を挟んだ左辺と右辺には関係演算子を使った条件式を記述します。 では例をみてみましょう。 andはandの右辺も左辺も条件を満たしている場合のみ全体の条件式がtrueになるので、この例の場合は両辺とも条件を満たしているのでtrueになります。
結果は次の通りです。
次の例をみてみましょう。 orは右辺もしくは左辺のどちらかの条件式がtrueの場合に全体の条件式がtrueになります。
この例では左辺は条件を満たしているけど、右辺は条件を満たしていませんが全体はtrueになります。
結果は次の通りです。
次の例をみてみましょう。 aは0でtrueではないので(false),条件は成立します。
結果は次の通りです。
上の例は次のように書き替えると解りやすくなります。 この例の意味はaがtureではないならば、if文を実行します。
aは0でtrueでは無いので、if文は実行されます。
もう一度trueとfalseの意味を見直してみましょう。 先ほどの例をみていただくと分かりますが、trueもしくはfalseであるかを確認する時に条件式にを入れることができます。
falseの場合には以下のように書きます。 結果は以下の通りです。
条件分岐ifの公式3
この章でもif文について説明します。
「条件分岐ifの公式2」の応用で、条件式が複数ある場合、つまり細かい条件を設定したい場合にはelifを使います。
今までのif文は条件に合うか合わないかを判断するのみのプログラムでしたが、条件1に合うか、もしくは条件2に合うか、どちらにも合わないか、と言うような条件の複数指定の場合にはelifを使います。
具体的には、以下の構文になります。 else以下は省略できますが、省略した例は「if文で占いを作ろう」に載せています。
では例をみてみましょう。 numは1なのでとの条件式はfalseです。
結果、else以下のが実行されます。
条件分岐ifの公式2
条件分岐ifの公式1
この章ではif文について説明します。
条件分岐とは例えば生活の場面で、もし、今日財布にお金が10000円あったらフランス料理にして、20000円あったら中華料理にすると皆さん判断していますが、プログラムでもこのような表現が出来る機能が備わっています。
このことを条件分岐と言います。 〇 ifは英語のifと同じで「もしも」という意味です。
〇条件式は条件を満たしていればtrueを返し、条件を満たしていないのならばfalseを返します。
trueとfalseについては後ほど説明しますが、ここでは条件式が条件を満たしていればif文が実行され、条件を満たしていなければif文は実行されないとだけ覚えておいてください。
〇条件式はとかなどの表現をやのような記号を使って表現します。
ではif文の構造について説明します。 「if 条件式:」の部分をヘッダ行と言います。
条件式の終わりには「:」を付けます。
ヘッダ行から下がステートメントブロックと呼ばれています。
ステートメントブロック内の文が複数ある場合はインデントを揃えてください。
次のようにインデントがずれているとエラーになります。 インデントを揃えるのはif文だけではなく、この章以降に説明するfor文やwhile文でも共通した規則なので覚えておいてください。
条件式はとかなどの表現を「>」や「<」のような記号を使って表現しますと説明しましたが、これらの記号を関係演算子と言います。
関係演算子は「>」や「<」の他にもあります。 ではここからは何がtrueで何がfalseか見てみましょう。 numは1より大きく、条件を満たしているので、trueになります。
このように条件を満たしていることをtrueと言います。
もっと正確に言うと、条件式は条件を満たしていればtrueになり、ブロックの中が実行され、条件を満たしていないならばfalseになり、その文は実行されません。
結果は以下の通りです。 以下のようにインデントが揃っていないとエラーになります。 結果はインデントエラーが出力されます。
次は文字列の比較をしてみましょう。 nameの値と条件式のは等しく、trueなので、「実行されました」が出力されます。
次はfalseの例を見てみましょう。 結果は何も表示されません。
なぜなら「num<1」の条件式が条件を満たしていないからです。
つまりfalseになり,ブロックの中は実行されません。
次の例を見てみましょう。 =>nameの値と条件式のは等しくないので、trueとなり、「実行されました」が出力されます。
関係演算子「!」の意味を確認してください。 関係演算子を使わなくても、条件式は書くことが出来るので、次の例で説明します。 これまでは関係演算子を使って、2つのデータの比較を行っていましたが、それだけではなくて、変数やリストやディクショナリなどに何かデータが入っているかどうかをif文を使って、確認することができます。
この例では変数aには5と言う数値が入っているので条件式がtrueになり、「trueです」が出力されます。
つまり、何かデータが入っていればtrueです。
次はfalseの例を見てみましょう。 この例は条件式がfalseなので何も実行されません。
次の例に進みます。
についてはtrue や falseを返すと説明しましたが、これらはif文と組み合わせて使われることが多いです。
結果は次の通りです。