【基本を学ぶ4: 超初学者向け】Pythonプログラミング入門

Pythonプログラミング入門



本記事はPythonの基本を学ぶシリーズ続編です。
第一回はこちらの記事になりますので、初めからしっかり学びたい方は
順番に記事をご覧ください。↓



この記事では引き続き

悩むペン銀

Pythonに何ができるのか具体的に知りたい

Pythonの基本構文を学び、プログラミングの大筋を理解したい

Pythonを実際にコーディングして学習したい


といった内容の疑問・要望に答えていきます。


自分の足りない知識を理解し、調べ、自分自身で学びを深められる様になる事
エンジニアとして1ステップ目のゴールであり


本シリーズではあなたがこのゴールを達成すること
即ち”独り立ち” できるまで、サポートする構成となっています。


それでは取り組んでいきましょう。






条件分岐・ループ処理(おさらい)


さて前回の記事ではPythonの基本構文について学び
条件分岐およびループ処理について手を動かしながら知見を深めました。

↓(前回記事はこちら

条件分岐とループ処理はまだまだ奥が深いです。
そして、実際の開発現場でもかなり頻繁に使う必要が出てきます。
復習も兼ねて、もう少し知識を深めていきましょう。



条件分岐



それでは前回の復習として
条件分岐の振り返りしてみましょう。
ターミナルを立ち上げ、Pythonの対話環境を起動。
以下のコードを実行してみてください。

>>> x = 100
>>> y = 2
>>> if x > y:
...     print("xはyより大きい")
...
"xはyより大きい"



このコードで何が起きているのか
説明する事ができますか?


このコードでは「変数xの値が変数yの値より大きい場合」
˜という条件がTrueつまり”真”となれば
“xはyより大きい”という文字列を返します。


他人に説明できること
これが自分の理解度を測る一つの指標となります。
繰り返し復習していきましょう。



簡潔に条件分岐を定義する



上記のようにif文では条件分岐を行う際
if 条件:(コロン)という構文を宣言する必要がありました。


しかしPythonではif文をさらに簡単に書くことが許されています。
以下のコードを入力して確認してみましょう。

>>> a=100
>>> b=38 
>>> if a > b: print("aはbより値が大きい")
"aはbより値が大きい"



このようにPythonにおいて、if文は1行で記述でき
コードの内容はデフォルトのif構文コードと全く同じ動作をします。


簡潔にプログラムを書けるよう訓練しておくことで
プロジェクトの開発スピードを大きく向上させることが出来ます。
基本的なif文の構文を抑えた方は
是非この記述方法もマスターすると良いでしょう。


複雑な条件を指定する



さらに条件分岐の構文に使用される予約語としてandが用意されています。
andは論理演算子であり、指定された複数の条件が全てTrueである場合
ブロック内のprint()関数が実行されます。
以下のコードを入力して確認してみましょう。

>>> a=200
>>> b=33
>>> c=500
>>> if a>b and c>a:
...     print("これら2つの条件は満たされている")
...
"これらの2つの条件は満たされている"


4行目を確認してください。
a>b and c>aの2つの条件が定義されていますね。


この2つの条件「a>b及びc>aが満たされている」場合
ブロック内のprint関数が実行される事になります。


加えて予約語orはandと同様に論理演算子であり、
2つの条件の内、どちらか一方の条件が満たされている
(True)であるならばそのブロックを実行させます。

>>> a=200
>>> b=33
>>> c=500
>>> if a>b or a>c:
...     print("2つの条件の内少なくとも1つの条件が真である")
...
"2つの条件の内少なくとも1つの条件が真である"



aはcより大きな値では無いですが、
aはbより大きな値であるため、2つの条件中1つがTrueとなります。
故にブロック内のprint関数が実行されています。


条件の中に条件を定義する



これまで条件分岐を学んできて
ある条件に分岐した時、さらに条件を分岐させたい時は
どうするのか、疑問が湧いてきた方もいるでしょう。


Pythonでは条件分岐を簡単にnestする事ができます。

>>> x = 20
>>> if x > 2:
...     print("xは2より大きい")
...     if x>30:
...         print("xは30より大きい")
...     else:
...         print("しかし30よりは小さい") 
... else:
...     print("xは2より小さい") 
...
"xは2より大きい"
"しかし30より小さい"



条件分岐に関して、ここまでの知識が有れば基本は習得できています。
あとは実現したい動作がある場合、
自分で調べ、学び、コーディングすること。


このステップを繰り返せば
必然的にエンジニアとしてのスキルが向上していきます。



ループ処理



前回の記事では
while文とfor文を利用したループ処理について基本を学びました。


またループ処理の間にif文を挿入する事で、繰り返しの動作の中で
ある条件の時動作を変更する事ができると確認しましたね。


しかし、このループ処理に入った時
どうすれば、途中で意図的にループから抜け出す事ができるのでしょう?


この解決策として、Pythonにはbreakと言う予約語が存在します。
breakはwhile文やfor文のブロック内に挿入することによって
ループ処理を抜ける事を実現します。


以下のコードを打ち込んで確認して見ましょう。

>>> count = 1
>>> while count < 7:
...     print(count) 
...     if count == 3:
...         break
...     count+=1 
...
1
2



プログラムは上から下へ1行ずつ実行されますが
2行目にwhile文を宣言する事でcountの値が7になるまで
即ち7回ブロック内を繰り返し実行されます。


6行目にcount+=1 (count=count+1と同意)とある様に
countの数値がインクリメント(1を足し算)されていき
その値が3と等しくなった場合、breakが実行され
本来countの値が6まであるループ処理を抜ける事ができています。


そしてもう一つ便利な予約語がcontinueです。
ループ中、ある条件の場合だけ動作をスキップしたい場面に出くわすでしょう。
そんな時に利用します。
以下コードを確認してみましょう。

>>> count = 0
>>> while count < 7:
...     count+=1 
...     if count == 3:
...         continue
...     print(count)
...
1
2
4
5
6



このコードでは
変数countの値が6になるまでインクリメントされていきます。
しかしcontinueがループ処理ブロックに挿入される事で
countの値が3の時のみprint()関数が実行されず、
次のループ処理が行われます。
3の数字がprintされていない事が分かりますね。


これらの予約語break及びcontinueはfor文内でも同様の動作を実現します。
さっと確認してみましょう。

>>> fruits = ["apple", "peach", "cherry"]
>>> for fruit in fruits:
...     if fruit == "peach":
...         break
...     print(fruit)  
...
"apple"
>>> fruits = ["apple", "peach", "cherry"]
>>> for fruit in fruits:
...     if fruit == "peach":
...         continue    
...     print(fruit)
...
"apple"
"cherry"

この様にfor文でも問題なく実行されます。


ところで
これら2つの予約語の違いが明確に理解できたでしょうか?
breakではある条件がTrueの場合
そこでループ処理が強制終了され、次の処理に入り
continueではある条件がTrueの場合
そのブロックの処理がスキップされ、ループ処理は続行されます。


ループ処理の終了と続行の違い
明確に頭の中に入れておきましょう。



関数定義



復習はこれくらいにして
いよいよPythonプログラミングの本質的内容に踏み込んでいきます。
本記事のメインである関数定義です。


これまでPythonにおける様々な構文を学んできました。
ある動作を実現する事を目的として
プログラムを書く事ができるようになってきたでしょう。


しかしこれまでの知識ではコードを一度書けば
一度変数の値を決めてしまえば, その値以外の動作は出来ない事に
薄々気付いている方もいるでしょう。


つまり再利用することは出来ず、使い捨て状態であったと言えます。
そこで関数の登場です。


関数とは1つのシンプルな動作を行う再利用可能なコードの事であり
これまで公式に用意された組み込み関数(len()..etc)やデータ型関数(.format()..etc)を学んで来ました。


しかし関数は自分でも定義する事が可能です。
Pythonでは関数を以下のような構文(決まりごと)に従い定義します。


関数のブロックは予約語defから始まり関数名、丸括弧最後にコロンで締める
また、どんなパラメータ(引数)もこの丸括弧内に設置しブロックの中で使用できる



実際には以下の様に定義します。

>>> def my_function():
...     print("Hello World!")
>>>



Pythonではこのように関数を定義し
定義された関数を呼び出すには
以下のように実行します。

>>> my_function()
Hello World!



とても簡単ですね。
さらにこの関数にはパラメータを与える事ができます。
(この関数に与えられるパラメータnameはよく引数とも呼ばれます。)

>>> def my_function(name):
...     print("My name is: {}".format(name))     
...
>>> my_function("Seimei")
My name is Seimei
>>> my_function("Kyouka")
My name is Kyouka



引数nameは関数のブロック内において
同様の変数nameとして扱われます。


上記のコードでは引数として”Seimei”が与えられ
変数nameには”Seimei”が格納されます。
その変数が.format()関数に引き渡される事で
“My name is Seimei”の文字列が生成されるという流れです。


またここでの引数(パラメータ)の数は好きなだけ追加する事ができます。
以下のコードを確認してみましょう。(自分で入力して確かめる事が大切ですよ)

>>> def my_function_2(name_1, name_2) 
...     print("This is {} and this is {}".format(name_1, name_2))
...
>>> my_function_2("Seimei", "Yuuta")
This is Seimei and this is Yuuta
>>> my_function_2("Yukiko", "Ayari")
This is Yukiko and this is Ayari



この様に引数には制限がないためいくつも指定する事ができます。
また関数内では与えられた引数を利用し、数値計算も行う事ができます。

>>> def my_function_3(number_1, number_2):
...     print(number_1 * number_2)
...
>>> my_function_3(4, 2)
8
>>> my_function_3(5, 10)
50



リストをパラメータとして渡すことも可能です。

>>> def my_function_4(foods):
...     for food in foods:
...         print(food)
...
>>> meal = ["wine", "meat", "soup", "bread"]
>>> my_function_4(meal)
"wine"
"meat"
"soup"
"bread"



このように関数my_functionを定義し、パラメータを設定することで
様々な入力値を受け取り、その入力を加工して出力値を返す事ができます。


これでprint()関数やtype()関数といった組み込み関数同様に
自分が実現したい機能を持った
新しい関数を定義することができるようになりました。




まとめ



いかがだったでしょうか?
今回は条件分岐の復習を兼ねて更なる知識の蓄積と
重要な概念である関数定義について学びました。


基本を抑える事ができれば、
もっと面白いプロジェクトに着手できる様になります。


少しずつ前進していきましょう。



続編はこちら↓






人気記事【初学者必見】効率的なプログラミング勉強方法を紹介します








このエントリーをはてなブックマークに追加
data-ad-format="rectangle" data-ad-format="rectangle"

コメントを残す