0から始めるPython独学ラボ

化学専門の大学生が趣味で始めたPythonをできるだけ分かりやすく説明します

for文について

今回はfor文について取り扱っていきます。

for文は次のような構文になります。

for ループ変数 in 範囲:

    繰り返す処理

 

これだけだとなんのことかよく分かりませんね。解説をしていきます。

まず、上の構文の範囲と書いている部分には繰り返し可能なオブジェクトです。繰り返し可能なオブジェクトには、文字列、リスト、タプルなどがあります。

 

繰り返し可能なオブジェクトのことをpythonではイテラブルなオブジェクトといいます。この辺の用語が、学習を進めるうちによくわからなくなってきますから、ここでしっかり押さえておきましょう。イテラブルとは、イテレーション可能な構造のことです。イテレーションとは、繰り返し値を返すこと、次々と要素にアクセスすることを示します。実際に例を見ていったほうが分かりやすいので、用語解説はこの辺にしておきます。

範囲の部分のイテラブルなオブジェクトとして、rangeが用いられます。rangeの使い方についても解説します。

 

range(5)

という風に書いたときには、0,1,2,3,4をイテレーションすることができるイテラブルなオブジェクトを生成することができます。つまり、0,1,2,3,4に次々とアクセス可能なオブジェクトが作れるという意味です。これはリストとは別のオブジェクトです。ちょっと難しくなってきましたね。

 

range(開始の数字, 終わりの数字)

という構文をとり、開始の数字から終わりの数字の一つ前までをイテレーションすることができるイテラブルなオブジェクトを生成します。例えば、

range(1 ,6)

と書いた場合には、1,2,3,4,5をイテレーションすることができるイテラブルなオブジェクトを生成することができます。開始の数字が示されなかった場合には、デフォルト値として0が代入されます。

 

この、「イテレーションすることができるイテラブルなオブジェクト」という表現が非常に回りくどいんですけど、かいつまんでいえば、その範囲の数字を繰り返し取り出すことができる、という意味です。

 

このあたりでrangeの解説は終了します。for文の構文は以下のようになるのでしたね。

for ループ変数 in 範囲:

    繰り返す処理

 

範囲にはイテラブルなオブジェクトが入ります。そして、ループ変数には、イテラブルなオブジェクトからイテレーションした(取り出した)値が代入されます。そして、繰り返し処理を行った後に、最初に戻ってイテラブルなオブジェクトから次の値をイテレーションして、ループ変数に代入します。なんとなくつかめてきたでしょうか。

実際に具体例を見ていきましょう。

テキストエディタ

for x in range(6):

    print(x)

 

実行結果

0
1
2
3
4
5

range(6)は、0,1,2,3,4,5をイテレーションします。それがループ変数xに代入されて、printで表示されています。

 

これで今回の記事は終わりです。お疲れさまでした。

while構文について③

今回もwhile構文について取り扱っていきます。

前回の記事では、while構文からの脱出方法であるbreakについて書きました。今回の記事では、while構文のループを飛ばして次のループにいくcontinueについて学びます。

実際に具体例を見ていきましょう。

 

テキストエディタ

 a=0

while a<10:

    a += 1

    if a==8:

        continue

    print(a)

 

実行結果

1
2
3
4
5
6
7
9
10

continue文により、while文は次のループに飛びます。つまり、a=8の時はif文が処理されるので、continueが実行され、再び最初の a +=1に戻ります。そのため、実行結果に8が表示されません。

 

もう一度while文を復習しましょう。while文は、ブール値がTrueである限り処理を繰り返します。そして、break文でwhileループから抜け出し、continue文で次のループに飛ぶことができます。

 

以上で今回の記事は終わりです。お疲れさまでした。

 

while構文について②

 

今回の記事でもwhile文について取り扱っていきます。

今回は、while文で用いられるbreakについてみていきます。

 

while構文を少し復習です。whileは、ブール型の値がTrueである限り、ブロック内の操作を繰り返すんでしたね。

テキストエディタ

a=1

while a<10:

    print(a)

    a+=1

実行結果

1
2
3
4
5
6
7
8
9

 

この場合は、ブール型がFalseになる時、すなわちa=10になるまでwhileはブロック内の処理を繰り返していますね。

つまり、以下のように書けば無限ループが出来上がります。

テキストエディタ

while True:

    print('Hello')

 

この場合、ブール値は常にTrueであるため、無限にHelloと表示されるわけです。

しかし、この無限ループを脱出する手段があります。それが、breakです。

 

breakを用いると、whileの繰り返し処理から脱出します。実際に具体例を見ていきましょう。

テキストエディタ

a = 1

while True:

    print(str(a)+'Hello')

    a+=1

    if a==10:

        break

実行結果

1Hello
2Hello
3Hello
4Hello
5Hello
6Hello
7Hello
8Hello
9Hello

 

繰り返しの度に、aの値が1ずつ増えていきます。そして、a=10になったときに、if文によりbreakが実行されます。そして、break文が実行されると、whileブロックを抜け出すことができるので、上記のような実行結果になるのです。

 

以上で今回の記事は終わりです。お疲れさまでした。

while構文について①

新年あけましておめでとうございます。

私はしばらくブログの更新をさぼっていました。年末年始が多忙だったわけではなく、一日更新をさぼるとなんとなく面倒くさくなってきて、更新が滞っていました。

 

最近、少しやる気になったのでまた書いていきたいと思います。

今回はwhile構文についてみていきます。余談が長くなりましたが、解説していきたいと思います。

while構文は以下のように書きます。

 

while ブール型:

    繰り返し処理

else:

    繰り返し処理後の処理

whileは、whileブロックの中の処理をブール型がTrueである限り繰り返します。pythonは、インデント(空白)でブロックを見分けます。

if文の時もそうですが、制御構文(if, while, forなどのプログラムを処理する順番を変える構文)においては、必ず制御構文の後に : が存在し、そこからその制御構文のブロックがスタートします。そして、上の構文のelseは必ず必要なわけではなく、省略が可能です。そして、elseは、whileの繰り返し処理が終わった後に表示されます。以下で例を見ていきましょう。

テキストエディタ

a = 1

while a < 10:

    print('りんご')

    a+=1

else:

    print('バナナ')

 

実行結果

りんご
りんご
りんご
りんご
りんご
りんご
りんご
りんご
りんご
バナナ

whileループを抜け出すまで、つまりaが10になるまで操作を繰り返します。そして、aが10になると、whileループを抜け出し、else以降が実行されていることが分かりますね。

 

以上で今回の記事は終了です。お疲れさまでした。

if構文について②

今回もif構文について取り扱っていきます。前回よりも細かく見ていきましょう。

 

if構文においては、

if 条件式:

という構文になっていますが、条件がいくつもある場合がありますよね。その場合に用いられるのが、elifです。次の書式を使用します。

 

if bool型1 :

    bool型1がTrueの時に実行する処理

elif   bool型2:

    bool型1がFalseでbool型2がTrueの時に実行する処理

elif bool型3:

    bool型1とbool型2がFalseでbool型3がTrueの時に実行する処理

else:

    全てがFalseの時に実行する処理

 

このように、elifは好きな数だけ記述することができます。elifはelse ifの略です。elifを追加していくことで、必要な数だけ条件を追加していくことができます。

 

 

以上で今回の記事は終わりです。お疲れさまでした。

if構文について①

今回の記事では、if構文について取り扱っていきます。if構文は制御構文の一つです。制御構文とは、状況に応じてプログラムの流れを変えることができる構文です。

 

今までのプログラムでは、ただ上から順番にプログラムが実行されるだけでした。このif構文をマスターすれば、プログラムを実行する順番を条件に応じて変更することができます。それでは、if構文の使い方を見ていきましょう。

 

構文は以下のようになります。

if bool型:

    命令①

else:

    命令②

 

ifの後に空白を一ついれて、bool型のデータ型です。bool型のデータ型とは真偽型ともいわれ、TrueとFalseの二つだけしかありません。bool型がTrueだった場合には命令①を実行し、bool型がFalseだった場合には命令②を実行します。

 

ちょっとbool型の説明も挟みましょう。bool型は、比較演算子を用いた場合の戻り値にもなります。具体例を見ていきましょう。

 

55==55

この演算子は正しいですよね。このときには戻り値としてTrueが返ってきます。そのため、

if 55==55:

   命令①

else:

    命令②

 

という風にすると、ifの後のbool型の値はTrueであるため、命令①が実行されます。このように、比較演算子はif構文において用いることができます。

 

忘れがちなのがbool型の後ろの  :  です。そして : の後は改行をして、次の行からインデント(空白4つ)を入れます。インデントがある限り、pythonにはそれがif構文の中であると認識されます。ここで、比較演算子についても見ていきましょう。

 

 

x == y   xとyが等しい

x != y        xとyが等しくない

x > y         xがyより大きい

x >= y       xがyと等しいかそれ以上

x < y         xがyより小さい

x <= y       xがyと等しいかそれ以下

 

以上で今回の記事は終わりです。次回もif構文について取り扱っていきます。。

 

 

ドキュメンテーション文字列について

今回の記事では、ドキュメンテーション文字列について取り扱っていきます。

ドキュメンテーション文字列を一言でいうと、

関数の説明文

です。

前回までの記事で関数の取り扱い方を説明したと思いますが、関数やその引数を定義するときに、引数が特定のデータ型でないと作動しないことがよくあります。また、関数の動作を確認するときにいちいち関数のコードを読むことは面倒です。そのため、関数を呼び出す人に引数のデータ型や関数の動作について伝える方法が必要になってきます。そのために用いられるのがドキュメンテーション文字列であり、docstringと書かれます。実際に具体例で確認してみましょう。ドキュメンテーション文字列は、関数定義の直後に三重引用符'''を用いることで書くことができます。また、ドキュメンテーション文字列はhelp関数を用いれば参照することができます。

 

テキストエディタ docstring.py

def multiplication(x,y):
   """

   Return x * y
   :param x: int
   :param y: int
   :return: int multiplication of x and y
   """
   return x * y
print(multiplication(5,6))

print(help(multiplication))

 

これを実行すると以下のようになります。

 

コマンドライン

python3 docstring.py

30

Help on function multiplication in module __main__:

  Return x * y
   :param x: int
   :param y: int
   :return: int multiplication of x and y
   """
   return x * y

None

以上のように、ドキュメンテーション文字列を使うと、help関数を用いてドキュメンテーション文字列の内容を参照することができます。ドキュメンテーション文字列は、誰が読んでも関数の機能や引数の定義が分かるように書けばよいですが、基本的には次のように書きます。

 

最初の行で、関数の役割を説明する。

次の行で、引数の型を説明する。paramは英語で引数という意味です。

最後に関数が返す値を説明する。

 

 

このようにドキュメンテーション文字列を書けば、他の人がその関数を用いるときにコードを読まなくて済むので、とても楽になりますよね。以上で今回の記事は終わりです。お疲れさまでした。