Python

Pythonとは

Pythonはデータ解析から機械学習まで広く用いられるスクリプト言語であり、コンパイル処理が必要なC言語と違って簡易な記述が可能な半面、実行速度が遅いという弱点があります。 但し、パッケージを有効に用いれば、C言語と遜色ない実行速度が得られる可能性があります。 また、すぐにデータ参照やグラフ化による可視化ができるJupyterも整備されているので、逐次確認しながらのプログラミングができます。

C言語と比較して、Pythonはgccなどによるコンパイルが不要であることに加えて、プログラムの可読性が重視されています。 例えば、

int i;
for(i=0; i<10; i++){
    printf("%d\n", i);
}

{ }は省略でき、

int i;
for(i=0; i<10; i++)
    printf("%d\n", i);

と書けますが、

int i;
for(i=0; i<10; i++){
    printf("%d\n", i);
    printf("%d\n", i);
}

int i;
for(i=0; i<10; i++)
    printf("%d\n", i);
    printf("%d\n", i);

は違う出力になりますのでミスが生じやすいです。 また、iforの中で3回書いているのは無駄です。 さらに、printf文の中の%diが整数型であることから決まってしまうので、%dと書く必要は本質的にはありません。

Pythonでは、このような記述の自由性や無駄を排除し、書きやすく読みやすい言語となっています。

Pythonの導入

ここでは、Pythonには2.x(version2)と3.x(version3)がありますが、ここでは、Python3.xを使います。 特に、Python3.5以上のバージョンを仮定しています。

MacにはもともとPythonがインストールされていますが、Python2.7の場合がありますので、これは使わないでください。

Anacondaを使う場合

Python使う方法はいくつかありますが、パソコンにインストールするには、Anacondaを使うのが簡単です。 Anacondaには、科学技術計算用にパッケージが入っていますので、別個にインストールは必要がありません。 インストールはこのページを参考にしてください。 Python 3.xをインストールしてください。

プログラムコードは、C言語と同様にテキストエディタで作成することもできますが、 ここでは、計算結果がすぐにわかるJupyterを使うことを推奨しています。 使い方は、ここを参考にしてください。

警告

インストールに関しては、利用者の自己責任に基づいて行ってください。 インストールで生じるコンピュータやソフトウェアの障害などについては、当授業では一切責任を負いかねます。

GoogleColabを使う場合

Google Colabは、PythonをGoogleのクラウド上で実行するもので、 ほとんどJypyterと同じように使うことができます。 また、科学技術計算用にパッケージもNumpyやMatplotlibなどよく使うものはそのまま使うことができます。 詳しい使い方は、ここを参考にしてください。

型と単純計算

数値の取り扱い

整数であれば、

n = 1

実数であれば、

x = 1.0

とすればよいです。

また、複素数は、jを用いて、

z = 3.0 + 0.5j

と書きます。虚数単位は1.0jです。

四則演算は、+-などが可能で、べき乗は**を使います。 例えば、

z = 3.0 + 0.5j
print ( z**3 )

の結果は(24.75+13.375j)となります。 実部と虚部は変数に.real.imagをつければ取り出せます。 絶対値はabs()をもちいれば計算できます。

z = 3.0 + 0.5j
print(z.real)  # 実部
print(z.imag)  # 虚部
print(abs(z))  # 絶対値

注釈

C言語と違って int i = 10;int のような型宣言は必要ありません。 i=10 と書くだけで暗黙に i が整数型になります(動的型付け)。

注意

C言語では、「 / 」演算子を整数同士で使ったときには整数である「商」を求めますが、pythonでは、割り算となり割り切れないときは小数(倍精度浮動小数点数(C言語でいうdouble))となります。 例えば、C言語では、 5/2 2 ですが、pythonだと、 5/2 2.5 です。

文字列の取り扱い

文字列はクオート' 'で囲みます。 +によって文字列を結合できます。

str = 'test'
str2 = 'python'
print ( str + str2 )

注釈

pythonでは暗黙に型付けされるため、整数と文字列の足し算などはエラーになります(強い型付け)。 正確には足し算が「未定義」(サポートされていない)となります。

制御構文: if文、for文など

pythonではブロック(C言語で{}で囲まれたもの)はタブもしくはスペースによる字下げで記述します。 普通のエディタではタブを押せば大丈夫です。

if文

例えば、if文は

x = 1
if x > 0:
    y = x + 2
    y += 1
elif x < 0:
    y = x - 2
else:
    y = x + 100
print (y)

などと書きます。

for文

for文はrange()関数を使います。

for i in range(4):
    print (i)

は、iを0から3までの4つ分回します。 また、1から3までとしたい場合は

for i in range(1,4):
    print (i)

とし、0から10未満まで2ずつ増加させる場合は、

for i in range(0,10,2):
    print (i)

この最後の引数を負にすれば減少もさせることができます。

注釈

pythonではC言語と同じく0からスタートします。

while文

while文は、Cと同様に条件を満たす限りループを続けます。 ループを抜けたいときは、Cと同様にbreakによって抜けます。

i = 0

while i < 10:
    print(i)
    if i == 5:
        print('break')
        break
    i += 1

注釈

PythonではC言語と違って1増やす``++``演算子はありません。 i++ と書いて1増やすことはできないので、代わりに i=i+1 と書くかもしくは i+=1 とします。

配列

リスト

C言語で配列に相当するものはリストとタプルがありますが、ここではリストのみ説明します。 リストは、角括弧[ ]によって作成できます。 また、+でリストの結合ができます。

list = [1, 2, 3]
list2 = [4, 8, 10]
print( list + list2 )

ちなみにリストの長さは、len(list)で取得できます。

リストを使ったfor文

for文においては、リストの要素にアクセスすることがほとんどなので、リストの要素に対するforループができます。

xs = [0.0, 2.5, 5.2, -2.2, 10.6, -3.1]
for x in xs:
    if x > 0:
        print (x)

もし、何番目かも必要であれば、enumerate()関数を使います。

xs = [0.0, 2.5, 5.2, -2.2, 10.6, -3.1]
for i,x in enumerate(xs):
    if x > 0:
        print (i,x)

複数値代入(advanced)

pythonでは、複数の変数に値を一度に代入することができます。 以下のように型が違っていても左右で一致していれば問題ありません。

i, x, s = 0, 0.354, 'test'
print (i, x, s)

先ほどのenumerate()関数はforループにおいて何番目かという整数とリストxsの中身の両方を一度に返します。

関数

関数の定義にも字下げが必要です。また、型は指定する必要はありません。

def f(x):
    y = x + 3
    return y * 2

print ( f(4) )

Pythonでは簡単に戻り値を2つ以上返すことができます。

def f(x):
    y = x + 3
    return x, y * 2
    
a, b = f(4)
print ( a, b )

コメント文

コメント文は#で行います。

# これはコメント文