View on GitHub

lectures

Python(1)

python/Home


Python とは

プログラムの書き方と実行方法

$ chmod u+x filename.py
$ ./filename.py
$ python filename.py

プログラムの中身

変数の型

Python C 言語
a = "hoe" char a[] = "hoe";
a = 3 int a=3;
a = 3.1415 float a=3.1415;
a = [2, 3, 5] int a[3] = {2, 3, 5};

配列の中身

a = [ 3, "hoe", 3.14 ]
b = [ 1, [ 2.1, "a", 0 ] "hoge" ]
c = [ [ 1, 2, 3, 4], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ]]

配列の要素数

Python

a =[] # 要素数 0の配列
b = [2, 3, 5] # 初期化(要素数3)
b[10] = 8 # これは範囲外でエラー
b.append(-2) # 最後に要素を追加 b = [2, 3, 5, -2] になる
c = len(b) # 要素数を返す関数

C 言語

int a[3];
a[5] = 8; /* 範囲外でエラー */

オブジェクト指向

クラスとは

クラスのイメージ

a =[5, "hoe"] # 「リスト」課の a さんにデータ 5,"hoe" の管理をお願いする。
a.append(-2) # a さん、最後に「-2」を追加して。
a[0] = 3 # a さん、0 番目を「3」に変更して
c = len(a) # a さん、今、何個のデータを持っている?

なぜそんな構造にするのか

リストクラスの便利な使い方

[1,2] + [1,2,4]  [1,2,1,2,4]

配列(や辞書)を使う時の注意点

a = [2, 3, 5]
b = a
b[1] = 0
print(a)
print(b) # <-出力を確認
import copy
c = copy.copy(a)
c[2] = 1
print(a)  # <-出力を確認
print(c)

実習(1)

インタラクティブモード

実習(1)手順

リストより便利なクラス

a = {} # 初期化の記号
a[2] = 3.14
a["hoe"] = 0 # 文字列の添え字
a[8.7] = "hoge"
b = a[2] + a["hoe"]
# 初期化の方法
a ={ 2:3.14, "hoe":0, 8.7:"hoge" } # キー : 値

辞書クラスの便利なメソッド

a["hoe"] = 3
del a["hoe"]
b = a.pop("hoe")
# pop は下記と等価
# b = a["hoe"]
# del a["hoe"]
x in a  # キーに x があれば True
a.has_key(x) # キーに x があれば True

b = a.keys() # キーのリストの取得
b = a.values() # 値のリストの取得

実習(2)

文字列クラス

文字列クラスでよく使うメソッド

s = "hoe" + "hoge" # s には "hoehoge" が入る
s = "hoe" * 3 # s には "hoehoehoe" が入る
len(s) # 文字列の長さ
s[2] # 一部を取り出す
s[1:3] # 一部を取り出す
a = s.rstrip() # 最後の改行と空白文字を削除
a = s.split(",") # 指定された文字で分割しリストに
s = "-".join(a) # リストの要素を指定文字で連結

C 言語 VS Python その他の違い

print("hoe %d hoge" % a)
# 文字列 → 数字
int("12")
float("3.14")
# 数字 → 文字列
str(3.12)

実習(3)

ブロックの範囲指定

if a == 1 :
    print("hoe")
else:
    print("Error: not hoe")
exit()
if (a == 1 ){
  printf("hoe\n");
} else {
  printf("Error: not hoe\n");
  exit();
}

多重ブロック

a = 0
while a < 10:
    a = a + 1
    print("hoe")
    if a == 5:
        print("hoge")
        print("end")
a = 0;
while (a < 10){
  a++;
  printf("hoe\n");
  if (a == 5 ){
    printf("hoge\n");
  }
}
printf("end\n");

条件分岐

if a == "hoe":
    print("hoe")
    b = b + 1
else:
    if c > 0 and d < 10:
        print("hoge")
    else:
        print("error")

==isとの違い

a = "abc"
b = "abc"
if a == b:
    print("same value")
if a is b:
    print("same object")
else:
    print("different object")

繰り返し

while

# while 文
a = 0
while a < 10:
    a = a + 1
    print("hoe")
print("hoge")

for

a = 0
for i in [2, 5, 8]:
    a = a + i
    print("hoe")
print("hoge")
# 文字列で
for i in "hoe":
    print("--%s--" % i)
    print("hoge")

for文の使い方

# range 文
for i in range(0,10): # これで i は 0~9 まで変化する
    print("hoe")

# リストの中身
a = [3, 4, "hoe"]
for i in a:
    print i

# 辞書の中身
a = { 1: "a", "hoe": 5}
    k = a.keys()
for i in k:
    print a[i]

実習(4)

実習(4-1)

実習(4-2)

ファイルの読み書き

f = open("filename", "r") # "w" なら書き込み
f.close()
# ファイルからの読み出し
s = f.readline()
# ファイルへの書き込み
f.write("hoe")

ファイル入出力の例

ifn = "input.txt"
ofn = "output.txt"
ifp = open(ifn, "r")  # ファイルをオープン
ofp = open(ofn, "w")  # ファイルをオープン
s = ifp.readline() # 1行読み込み
print s.rstrip()
for s in ifp: # 各行を順に読み込み
    a = s.split(",")
    ofp.write(a[0] + "\n") # ファイルに書き込み
ifp.close() # ファイルをクローズ
ofp.close() # ファイルをクローズ

python/Home