【初心者向け】Python とは?プログラミング言語Pythonで出来ること&Pythonの基本文法を速習しよう!

Pythonとは

プログラミング言語 Python(パイソン)とは、1991年にオランダ人のグイド・ヴァン・ロッサム氏によって開発された汎用的なプログラミング言語です。
Pythonの良さとして、少ないコードでシンプルに記述できることが挙げられます。
Pythonでは、GoogleやDropBoxなど世界的に使われている言語です。
また、PythonはThe 2018 Top Programming Languagesの記事でも、プログラマーの年収は1位でした。

The 2018 Top Programming Languages 画像引用

Pythonで出来ること

  1. 人工知能関連(画像認識・自然言語処理・音声認識 etc..)
  2. 機械学習・統計解析
  3. Webアプリケーション・Webサービス開発
  4. デスクトップアプリ制作(tkinterなど)
  5. 業務効率化プログラム
  6. Webスクレイピング
  7. IoT
  8. ロボット制御
  9. ネットワーク・サイバーセキュリティプログラミング
  10. ゲーム開発
  11. グラフィック系(CGソフトウェア開発)

上記の通り、Pythonで出来ることは多岐に渡ります。
スマートフォンアプリなどは、あまりPythonは向いていないため、記載しておりません。
スマートフォンアプリ(iOSやAndroidアプリ)開発をされる場合は、iOSアプリですとSwift(iOS)、
AndroidアプリですとJavaやKotlin(読み方: コトリン,コットリン)を学ぶ必要があります。
3DやAR・VRアプリケーションの場合は、Unity(C#など)を使う必要があります。
近年では、React NativeというFacebookが開発したモバイルアプリ向けのJavaScriptのフレームワークなどもあります。
上記の内容が気になった方は是非、ご自身で調べてみてください。(プログラミングを行う上では調べるスキルはとても役に立ちます。)

未経験からデータサイエンティストやAIエンジニアを目指したい方へ

独学で機械学習やデータ分析、統計学を独学で学ぶのは大変です。 そのような方には、AI Academy Bootcamp がおすすめです。
AI Academy Bootcampでは6ヶ月データサイエンティストや機械学習エンジニアに質問し放題でありながら、目指す上で必要なスキルを体系的に学べる動画コンテンツで学べます。また受講料も6ヶ月間の受講で35,000(税込)でご受講出来ます。
独学での学習に限界を感じられた方は是非ご活用ください!

Pythonの特徴 – インデント

Pythonの特徴として、インデント(字下げ)することが重要になってきます。
Pythonではインデントがコードブロックの開始と終了を伝える役割をしています。
まずは以下のコードを見てください。
これは、0〜4までの値を出力するプログラムをPythonで記述した例です。

# このプログラムの説明は後ほどします。
for i in range(0,5):
    print(i) # 4つのスペースでインデント(字下げ)をする

このように、Pythonでは、インデントがブロックの区切りとして認識しています。
そのために、次のようにコードを書くとエラーになります。

# このプログラムを書いてもエラーになります。
for i in range(0,5):
print(i) # Error!!

他の言語だと、「{}」や「beginとend」でブロックとして認識するのに対し、
Pythonではインデントがブロックとしての役割を担います。
最初は慣れないかもしれませんが、コードを書いているうちに慣れてきますので、抑えておきましょう。

コメント

プログラム内に、#もしくは””” “””で記述されているのは、コメントです。
コメントはプログラム内で、メモを残せ、実行に影響がありません。
ですので、上の記述を見かけたらコメントを記述しているということになります。
# は、1行コメント、””” “””は複数行コメントができます。
(シングルクォート3つずつで囲っても複数コメントができます。トリプルクォートと呼びます。)

# 1行コメント

"""
複数行コメント 
"""

'''
複数行コメント
'''

エラーと例外に関して

Pythonには、構文エラー(SyntaxError)例外(Exception)という2種類のエラーがあります。
構文エラーは致命的なエラーであり、構文エラーがある場合プログラムは実行できません。

SyntaxError: というメッセージで始まるものが構文エラーです。
そして、それ以外のエラーは全て例外エラーです。
IndexErrorやTypeErrorやNameErrorやZeroDivisionErrorなどがあります。

例えば、変数の定義忘れの時などにNameErrorが起きることが多いです。

print(python)

エラーメッセージには

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'python' is not defined

と言った具合に表示されます。
また、Pythonのエラーメッセージは読むとある程度解決できますので、
恐れずに自己解決できるように挑戦してみてください。

これらのエラーは構文エラーとは違って致命的ではないので、
例外処理を記述していればプログラムは実行し続けることが出来ます。
一旦、エラーには2種類あるというのだけここでは知っておいてください。

四則演算

加算や乗算などの四則演算を行ってみましょう。
また、演算子の記号は、MacやWindowsによって異なる場合がありますので、何かしらの記号の打ち方がわからない場合はネットで調べて見てください。

print(5+3)
print(5-3)
print(5*6)
print(10/5) # 3系では割り算の結果が小数点になります。整数にしたい場合は/の代わりに、//と記述することで実現できます
print(10%5)
print(10**2) # **は冪乗(べきじょう)(累乗とも呼ぶ)の計算の時に利用します

# 補足
# format()を使うことで、小数点第何位まで出力するかも決めることが出来ます。
# .3fというのは、小数点第3位までを出力するという指定
print("{0:.3f}".format(10/2)) # 5.000

# .5fというのは小数点第5位までを出力するという指定
print("{0:.5f}".format(10/2)) # 5.00000

変数

変数とは、データを入れる箱(入れ物)だと思ってください。
名前のように様々な値をこの変数と呼ばれる箱に入れることができます。
変数に値を入れることを代入と呼びます。

Pythonは変数に代入したデータ型によって、自動的にデータ型が決定される言語です。
他の言語だと、例えばJava言語ですと、型宣言をしますが、Pythonには型宣言する必要がありません。
以下のように様々な種類の型の値を代入できます。

x = "hello world"
y = 42

print(x)
print(y)

y = 100 # 42から100に上書き
print(y*3.14)

次に、変数を使わないプログラムと使ったプログラムを比べてみてください。
ここでは、変数がどれだけ便利なものなのかを知って頂きたいと思います。
まずは、変数を使わない場合のプログラムを見てみましょう。

print(15 + 1)
print(15 - 2)
print(15 * 3)
print(15 / 4)
print(15 % 5)

では15を220に書き換えてください。
この場合、15と書かれた5つのprintの部分を全て220に書き換える必要が出てきます。
5行だけならまだそこまで大変ではありませんが、例えば100行、1000行だとどうでしょう?
さて、ここで変数の登場です。
もしも最初から変数xというものが定義されていたら、x = 15というのを、x = 220に書き換えるだけで済みます。

x = 220
print(x + 1)
print(x - 2)
print(x * 3)
print(x / 4)
print(x % 5)

先ほどは5行分の修正が必要だったものが、1箇所変えただけで終わります。
変数は便利ですので、是非使っていきましょう。

データ型

Pythonに限らず、プログラミング言語にはデータの性質を表すデータ型というものがあります。
type()という関数を利用することで、データ型を調べることができます。

print(type(12))
print(type("Python"))
print(type(14.4))

実行すると、intやstr、floatなどが出力されます。
これが型と言われるもので、intは整数型strは文字列型floatは浮動小数点型という型を意味しております。
他にもPythonにはリスト型や辞書型などいくつかの型が存在します。
文字列型(str)の説明をします。
文字列を扱うのがstr(文字列型)です。
”や””で囲むと数値でも、文字列型として扱います。

a = 'I like python.' 
b = 'I\'m good.' # I'mという短縮形を表現したい場合、mの直前の'は『文字列の終わりの綴じではないよ』というのをプログラムに認識してもらうために、\を使います。
c = "I'm good." # ダブルクォーテーションで書いた場合は、\は必要ありません。
d = 'My freind said, "I like PHP. but I like python better."' # ダブルクォーテーションをシングルクォーテーションで囲うこともできます。

# 文字列の連結
message = "hello" + "world"
print(message)

# 反復
# *演算子を使うことで繰り返すことが出来ます。

print(3 * "hello" + "world") # helloを3回 繰り返し、その後文字列worldと連結します

message = "hello" + "world" # helloとworldを連結させた変数meessage
print(message * 5) # 変数messageを5回掛け合わせます。

型変換(キャスト)

型を変換することを型変換(キャスト)と呼びます。
int()やstr()を使うことで、それぞれ、次のように変換が可能です。

int()は文字列型の数値を整数型の数値へと変換
str()は整数型の数字を文字列型の数値へと変換

他にも、list()やfloat()など、それぞれの型へ変換可能な関数がPythonには用意されています。

a = int(1.0)
print(10 - a)

# print("python" + 10)
print(10 - int("5"))
print("hello" + "world")

リスト型

他の言語だと、配列やArrayと呼ばれておりますが、Pythonではリストと呼びます。
リストは先ほど説明した、変数を拡張したようなものです。
変数では、1つの変数に1つだけの何らかの値を代入できましたが、リストを使うと複数の値を代入可能です。

リストとしてデータを扱うには、以下のように[]を使い記述します。

li = [1,2,3,4,5]
print(li) # [1,2,3,4,5]が出力
print(len(li)) # リストの要素数(長さ)を調べたい時にはlen()を使います。

"""
またlen()は、文字列型など様々なデータ型に利用でき、要素数を取得できます。
"""
s = "python"
print(len(s)) # 6

s2 = "java"
print(len(s2)) # 4

s3 = 'あいうえお'
print(len(s3)) # 5

リストの要素にアクセスする方法を見ていきましょう。
リストが先頭の要素を0番目として数えます。
ですので、以下のリストから1を取り出したい時は、以下のように記述します。

# 添え字  0 1 2 3 4 ...

li = [1,2,3,4,5]
print(li[0]) # 1が出力

# リストはミュータブルなので、以下のように
# 書き換えられる。 添え字0を100に変更
li[0] = 100

# 変更後のリスト(li)を出力
print(li)

# リストの連結
li1 = [1, 2, 3]
li2 = [4, 5, 6]

li3 = li1 + li2
print(li3) # [1, 2, 3, 4, 5, 6]

スライス

スライスは、listやstrなどの型で利用が可能で、部分的な要素を抽出することが可能です。
一旦このセクションでは、スライスを使うと部分的な要素を取り出せる文法だと知っていれば良いです。

li = [1, 2, 3, 4, 5]
print(li[0: 4]) # [1, 2, 3, 4]
print(li[: 4])  # [1, 2, 3, 4]
print(li[-3:])  # [3, 4, 5]
print(li[2: -1])# [3, 4]

# 覚えておくと良い手法

# 逆順
print(li[::-1]) # [5, 4, 3, 2, 1]

# 全ての要素を取得
print(li[:])    #  [1, 2, 3, 4, 5]

タプル型

リスト型は変更可能なミュータブルと呼ばれており、一度定義した値を書き換えることは可能です。
対して、タプル型はイミュータブル(生成後変更不可能)であり、一度定義したら値を書き換えることが不可能なデータ型になります。
タプル(Tuple)は使い慣れるまではリストとの使い分けが難しいところはありますが、
よく使われるのは関数の戻り値(後で説明致します)として値のペアを返したいといったときなどに使います。

t = (5,10) 
print(t[0])
t[0] = 100 # エラーになる
"""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
"""

t = 123, 555, 150, "hello"
print(t[0])

# タプルは入れ子も出来ます。
t2 = t, (1,2,3)
print(t2) # ((123, 555, 150, 'hello'), (1, 2, 3))

# 1つ値のタプルは、カンマをつける必要があります。
t3 = "hello",
print(t3)
print(type(t3))

辞書型

辞書型は、キーと値をペアとしてデータを管理します。
構文は次のようになります。(次のコードは動作しません。)

辞書名 = {'キー' : '値', ・・・}

リスト型はインデックス番号が0から始まり、0から順に値が格納されていましたが、
辞書型にはインデックス番号が与えられておりません。
また、定義する際には、[]ではなく{}で囲います。

# nameがキーで、taniが値。同じように、emailがキーで、kazunori-t@cyberbra.inが値
profile = {'name': 'tani', 'email': "kazunori-t@cyberbra.in" }
print(profile['name']) # tani

# 新しく要素を追加
profile['gender'] = 'male'

# 新しく要素を追加した辞書型(profile)を出力
print(profile)

if文

if文は条件分岐を実現する構文で、条件分岐を使うと、条件に応じて処理を分けることができます。
if文でよく使われる構文として、以下の演算子があります。

"""
if 条件:
    # 条件がTrueの時に実行
"""

t = True
if t:
    print("Trueです")

t = True
f = False

if f: # FalseはTrueかどうか
    print("Trueです")
else:
    print("Falseです")

"""
elifを記述することで、追加で条件式を追加できます。
elifはif文の中でいくつあっても問題ありません。
"""
score = 90
# score = 100

if score == 100:
    print("満点")
elif score > 85:
    print("合格!")
else:
    print("不合格。次回頑張りましょう。")

プログラムを読むとわかりますが、Pythonではインデントが重要な意味を持っているので、最初のif文の後に、スペースが4つインデントされています。
また論理演算子と呼ばれる演算子は、Pythonには3種類あり、より複雑な条件を記述することが出来るようになります。
and、or、notがあり、それぞれ、論理積、論理和、否定の演算を意味しており、以下のようなことも可能です。

a = 10
b = 10
if a == 10 and b == 10:
    print("aとbも10です")
elif a == 10 or b == 10:
    print("aもしくはbが10です")
else:
    print(a,b)

a = 12
if 1 < a and a < 15:
    print("1〜15")
else:
    print("15以上")

for文

for文は繰り返し処理の構文です。繰り返し処理を行うには、for文を使います。
for文ではrange()をよく使います。
forの右にあるのはループ内変数と呼ばれる変数です。
これはこのforループの中だけで有効な変数という意味です。

for i in range(0,5): # 0から5未満(4まで)を繰り返す
    # ループ内変数iに1~4までの数字が生成され、ループ毎に1つ1つ代入されます。(最初のループでは0が代入されます。)
    print(i)

関数

ある処理をまとめたものを関数として定義できます。
pythonで関数を定義(作成)するには、defという文法を使います。
(defが何かは理解する必要はなく、あくまでも関数を作るときに必要なものになります。)
関数名は自由につけることが可能です。

構文は次のようになります。(次のコードは動作しません。)

def 関数名():
    # 処理を書く

関数名() # 関数名()で関数を実行できる

ではサンプルプログラムを見ていきましょう。

# hello関数の定義
def hello():
    print("Hello!!")

# 関数呼び出し
hello() # 関数名()で呼び出せる

# 引数とデフォルト値

# 関数の定義
def say_hello(name="ななしさん"):
    print("こんにちは、",name)

# 以下、関数呼び出し 
say_hello("谷")
say_hello("田中")
say_hello("山田")
say_hello()

返り値(戻り値)に関して説明します。
return文を実行すると、関数を終了し呼び出し元に戻り、関数内での処理した値を変数や他の変数に渡すことが出来ます。

"""
# 記述例
return 【返り値】
"""
def adder(a, b):
    return a+b

print(adder(5,10)) # 15が出力される

def power(x):
    return x*x

def absolute(x):
    if (x < 0):
        return -x
    else:
        return x

print(power(10)) # 100
print(absolute(-10)) # 10

まとめ

この記事では、Pythonの文法で本当に知っておく必要がある最低限の文法にだけ触れました。
Pythonは人工知能技術以外にも、Web開発や便利な業務自動化ツールなど幅広く開発することができ、Pythonを習得することで幅広いことを1つの言語で出来るようになります。
さらに、Pythonプログラミング自体が、シンプルで可読性も高く、習得しやすいことから大変オススメです。
是非ともAI AcademyでPythonの基本文法から始まり、Web開発や機械学習まで習得していきましょう!
Pythonのより詳細な文法を学びたい方は、AI Academy Python文法編をご確認ください。

5 COMMENTS

現在コメントは受け付けておりません。