読み込み中...
この講座では、プログラミングが全く初めての方でも安心してPythonの基本を学べるように、一緒に手を動かしながら進めていきます。 まずは、Pythonの基本的な「書き方」から学んでいきましょう。
まずは、Pythonの基本的な書き方をみていきましょう。お試しの処理として、print()関数を使って画面に文字を表示してみましょう。
print("Hello, world!")これを実行すると「Hello, world!」と文字が表示されます。ポイントとしては、
また、コメントアウトでメモを残すこともできます。
プログラムにメモや説明を書きたいときは、# を使ってコメントを書くことができます。#以降の文字はプログラムとして実行されません。
print("Hello, world!")
# これはコメントです。プログラムには影響しません。
print("Pythonを学ぼう!") # このようにコードの横に書くこともできますプログラミングの超基礎的な概念である変数。変数は、数値や文字などの値を入れられる領域でわかりやすくいうとデータを入れる箱です。 また、変数を使う時によく出てくる言葉もあるのでそれも覚えておきましょう。
Pythonでは変数は以下のように宣言、初期化、代入します。
message = "はじめまして!"
print(message)
message = "こんばんわ!!!"
print(message)このように、JavaScriptの時と違いletやvarを付ける必要なく扱うことができます。扱えるデータの種類はJSの時とほぼ同じで、
name = '太郎';
age = 25;
isStudent = True;といったように様々なデータを入れてもOKです。 ※Pythonでは、「太郎」といった文字列を扱う際はダブルクォーテーション(") でもシングルクォーテーション(') どちらでもOKです。 ※Pythonでは、「True」や「False」は基本大文字始まりで書きます。
さて、「変数はデータを入れておく箱」というイメージを持てたところで、入れるデータの型(種類)についても紹介します。変数に入れることができるデータは様々あり、主に以下のようなものがあります。
先ほど出てきた、nameは文字列型、ageは数値型、isStudentは論理型です。
ひとつ注意点があります。JSではデータがないものをNullとなっていましたが、PythonではNullではなくNoneとなります。
また、リストというものを使うと複数のデータをまとめて管理することができます。
たくさんの名前をひとつの変数で管理したい場合、リストを使うと便利です。リストは [](角括弧)でデータを囲み、,(カンマ)で区切って書きます。
さらに、リストの個々のデータにアクセスするには、インデックスというものを使います。インデックスはいわば「場所」のようなもので「先頭から何番目か」を表す番号です。注意点として一番先頭は 0 から始まります。
fruits = ["apple", "banana", "cherry"]
# リスト全体を表示
print(fruits)
# リストの1番目の要素にアクセス(インデックスは0から始まる)
print(fruits[0]) # "apple" が表示されます
# リストの2番目の要素にアクセス
print(fruits[1]) # "banana" が表示されます超基礎的な概念である演算子。算数的な計算で使う演算子(+や-とか)や、二つのデータを比較するのに使う比較演算子、「AかつB」のような数学の「集合、命題」の時に使った論理演算子をプログラミングでもよく使います。それぞれみていきましょう。
算数的な計算で使う演算子(算術演算子)は以下のように使います。
a = 5
b = 10
print(a + b)
# 15
print(a - b)
# -5
print(a * b)
# 50
print(a / b)
# 0.5
a += 3
# a = a + 3 と同じ意味
print(a)
# 8基本的な四則演算で使います。使い方は算数とほぼ同じです。他にも乗数や余りの計算もできますが今回は割愛します。
また、変数への代入の場合はa = a + 3をa += 3のように省略して書くことができます。
※JSで使うことのできたa++,a--はPythonでは使えないので気を付けてください。
比較演算子は、2つの値を比較して論理値(trueまたはfalse)を出す時に使います。
x = 5
y = 1
z = "5"
print(x == y) # False(値が等しくない)
print(x > y) # True(xはyより大きい)
print(y <= x) # True(xはy以上)
print(x is z) # False(値と型が等しい)それぞれ解説します。まず==は、二つの値が等しいときはtrueになり、等しくないときはfalseになります。
二つの値を比較する>では、左側が右より大きければtrueになり、それ以外はfalseとなります。<を使った場合はその逆です。
似たようなもので>=は、左側が右以上(右の値を含む)ならtrue、それ以外はfalseとなります。<=を使った場合はその逆です。
例えば、x < 5の場合は「xは5より小さい(5未満)か」なのでfalseとなりますが、x <= 5は「xは5以下か」なのでtrueとなります。
※==と似たようなものでisがあります。これは二つのオブジェクトのインスタンスが同一かどうかをチェックします。この部分は難しいので別の講座で解説します。
論理演算子は、論理値を操作するために使います。
tr = True
fl = False
print(tr and fl) # False(AND)
print(tr or fl) # True(OR)
print(not tr) # False(NOT)それぞれ解説します。AND条件にしたい(両方trueでないとtrueにならない)場合はandを使います。これによりAND条件の判定をすることができます。
OR条件にしたい(どちらかがtrueならtrueになる)場合はorを使います。NOT条件(論理値の逆転)をしたい場合は、その論理値の前にnotを置きます。似たようなもので比較演算子で「xとyが等しくないとき」としたいときは、not x == yとします。
この部分はイメージ的に英語の文法そのものととらえてOKです。
また、今回は変数のみで論理演算子を使いましたが、実際は比較したものに対して論理演算子を使用します。具体的にAND条件でいうと
print(3 <= x and x < 10) # True(xが3以上かつ10未満)このように「xが3以上かつ10未満か?」という複合した比較をする際に使用します。細かい使い方は次の制御構文の章で解説します。 これらの使い道としては、算術演算子は数値などのデータの四則演算に、比較演算子と論理演算子は変数などの中身によって処理を変えるために使います。
超基礎的な概念、制御構文を解説します。制御構文は、プログラムの実行内容を制御するための構文です。Pythonでは、条件分岐(if文、match文)とループ(for文、while文)などがあります。
if文は、条件に基づいて異なるコードを実行するために使います。先ほどの変数xを使って、
if (3 <= x and x < 10):
print("3以上、10未満です")
elif 5 < x: # 条件のカッコ()は省略可能
print("5より大きいです")
else:
print("それ以外")このようにif文を書くことができます。
コロン(:)以下のインデントを一つ下げ、そこに実行したい処理を書くことで条件によって処理を出しわけることができます。
内容としては下の図のように、
・xが3以上、10未満なら、「3以上、10未満です」と出力する(水色)
・それ以外で5より大きい場合(実質的には10以上)なら、「5より大きいです」と出力する(濃い赤)
・それ以外なら「それ以外」と出力する(黄緑)
今回は「3以上、10未満です」が表示されますね。
試しに、if文の直前でxを違う値にして(違う値を代入)してみましょう。
x = 10
if (3 <= x and x < 10):
print("3以上、10未満です")
elif 5 < x: # 条件のカッコ()は省略可能
print("5より大きいです")
else:
print("それ以外")こうすると「5より大きいです」と表示されるはずです。他にもいろいろとxに代入して試してみましょう。
このようにif(条件式(論理値でも可)): ~と書き、その論理値がtrueならそのコロン( : )以下の処理を実施します。elif(条件式): ~は、それ以外でかつ論理値がtrueならそのコロン( : )以下の処理を実施します。もちろん、elifは複数書くこともできます。最後のelse: ~は、全ての条件式に当てはまらなかったときに実施します。ざっくりですが、こんな書き方をすることもできます。
if (3 <= x and x < 10):
if (x == 3):
print("xは3です")
elif (x == 4):
print("xは4です")
elif (x != 6):
print("xは6じゃないです")
elif (5 < x):
print("5より大きいです")
else:
print("それ以外")match文は、いろいろな条件をピッタリ合うものと比較し、一致した時だけ特定の操作をすることができます。これにより、多くの「もし〜の場合」といった複雑な条件分岐を簡単に書けるようになります。よく使うのは「たくさんの選択肢の中から選ぶ」時の処理とかで役立ちます。 match文は以下のような仕組みになっています。
match 対象:
case パターン1:
# パターン1にマッチした場合の処理
case パターン2:
# パターン2にマッチした場合の処理
case _:
# どのパターンにもマッチしなかった場合の処理このように「特定の対象」に対して合致したパターンでの処理のみを行うことができます。例として、
match x:
case 20:
print("20です")
case 5:
print("5です")
case _:
print("それ以外")というように調べたい対象がどんなものか、case ~に一致すればその処理を、すべて一致しなければcase _での処理が実行されます。
※対象には、変数のほかにも条件式やオブジェクトを入れたり、リストを使ってマッチングすることができます。(詳しくは応用の講座で)
for文は、一定の回数だけループさせる時に使います。何回も繰り返し処理を実行したりする時に使います。例えば、「1~3の数字を出力して」は以下のように書くことができます。
print(1)
print(2)
print(3)では、「1~100の数字を出力して」だとちょっと面倒ですね。素直にconsole.log(1)からconsole.log(100)を書けばできますが大変です。そんな時に使うのがこの繰り返し(ループ)であるfor文です。for文でやった例は以下です。
for i in range(1, 101):
print(i)たった2行で1~100の数字を出力できます。どうなっているか解説すると「用意された「1~100」の数字を頭から順に変数iに入れ、それをprint(i)する」ということを繰り返しています。もっと詳しくすると、for文の構造は、
for 変数を定義※for文内のみ使える変数 in 並んでるデータ) :
処理となっていて今回の場合は、
range(1, 101)で1から100(101じゃない)までの整数の連続した値iを定義iへ代入 ~処理~の処理を実行iへ更新といったことをしています。このようにして繰り返し処理をしていきます。 並んでるデータには連続した値を指定すればよいので、文字列を入れると一文字ずつ処理することができます。他にも配列を指定すれば、配列の各要素ごとに処理することができます。
for i in "abcde":
print(i)
list = ["タナカ", "ヤマダ", "カトウ"]
for i in list:
print(i)似たようなもので、while文というものがあります。こちらは条件がtrueの間、永遠にループさせる時に使います。先ほどの「1~100の数字を出力して」をwhile文で書くと以下のようになります。
i = 1
while (i <= 100):
print(i)
i += 1 # iを1増やすこれは、
iを用意i <= 100)を満たせば中の処理を実行ということをしています。forとは動作や状況は少し異なり、以下の違いがあります。
そのため、以下のようにしても同じように「1~100の数字を出力して」ができます。
i = 0
while i < 100: # 条件のカッコは省略可能
i += 1 # 先にiを1増やす
print(i)このように、繰り返しに関係するデータをいつでも変更できる自由度が高いのがwhileです。注意点としては、今回でいうi+=1のような繰り返しに関するデータの更新部分を書き忘れると、繰り返す条件i < 100が永遠にtrueのままになるため、処理が永遠に実行されてしまいます。無限ループといわれる現象です。
こうならないために、繰り返し文を書く際はちゃんと終わることを確認しながらやりましょう。
※無限ループを起こした場合、プログラムを切断・終了させて再度開けばOKです。
関数(ファンクション) は、特定の処理をひとまとめにして名前をつけ、必要なときに何度でも呼び出して使うことができるものです。
・関数を使うメリット
Pythonの関数は以下のようにして書きます。
# 関数の宣言
def hello():
print("こんにちは!")
# 関数の呼び出し
hello() # 「こんにちは!」と表示される
hello() # もう一度呼び出すと、また「こんにちは!」と表示される:)よりインデントが下の場所に関数が実行する処理(処理ブロック)を書きます。もちろん複数行書くことも可能です。関数には、外部からデータを受け取ったり、処理結果を返したりする機能もあります。
# 引数を受け取る関数
def greetByName(name):
print("こんにちは、" + name + "さん!")
greetByName("太郎") # 「こんにちは、太郎さん!」と表示
greetByName("花子") # 「こんにちは、花子さん!」と表示
# 引数を受け取り、戻り値を返す関数
def add(a, b):
culc = a + b # aとbを足した結果
culc = culc - 1 # さっきの計算結果から1引く
return culc # 最終計算結果を返す
result = add(5, 3) # add関数に5と3を渡し、処理終わったデータ(戻り値)をresult変数に入れる
print(result) # に「7」と表示
anotherResult = add(10, 20)
print(anotherResult) # 「29」と表示このようにして処理をまとめておいて汎用的に管理したい時に関数を使うと便利になります。 例えばカレーつくりという調理工程を、
def 食材切る(食材):
# 食材を切る処理
return 切った食材;
def 炒める(材料):
# 材料を炒める処理
return 炒めた食材;
〜〜〜のように関数を用意することで、
# カレーを作る
# ↓
切った玉ねぎ = 食材切る(玉ねぎ)
切ったにんじん = 食材切る(にんじん)
切ったジャガイモ = 食材切る(ジャガイモ)
切った肉 = 食材切る(肉)
炒めた肉 = 炒める(切った肉)
炒めた玉ねぎ = 炒める(切った玉ねぎ)
〜〜〜と実装することができます。
さらに、関数: 食材切るの処理を間違えて「微塵切り」と書いてしまったが本当は「ざく切り」だった時、この食材切る関数の中の処理だけ直せば
全てに適用される! というように関数を使うことでメンテナンスしやすい実装にすることができます。
この講座で、Pythonの基礎を学ぶことができました。変数、データ型、演算子、制御構文、関数といった基本的な概念を理解することで、システムチックなプログラミングへの第一歩を踏み出すことができました。これからは、これらの知識を基により高度なPythonの機能や実践的なコーディングテクニックを学んでいきましょう。