山内の演習のページ
訪問者数 1871      最終更新 2012-11-07 (水) 09:23:00

事前知識

イントロの問題

手元にPythonの環境があるとする。絵を描いたりするのを除けば、サーバー上のPythonを起動して使うことができるので、それを前提にする。

Pythonを起動して簡単な処理をしてみる

ここに出てきたついでに、文字列とprintについて試す~

print関数は、引数として渡す変数屋敷の値をプリントする。上で試した通りである。

#! /usr/bin/env python
# -*- coding: utf-8 -*-
print('Hallo')
print(3)

s = 'Hallo World'
print(s)

x = 5
y = 3
print(x+y)

また、文字列をくっつけるなどの操作が役立つときがある。文字列を結合するには演算子+を使う。

#! /usr/bin/env python
# -*- coding: utf-8 -*-
s1 = 'Hallo'
s2 = 'World'
t = s1 + s2
print(t)
print(t + '!!')

結合演算は自動的に空白を入れたりはしないので、文字列がくっついてしまった。

HalloWorld
HalloWorld!!

条件判定やループ

他の言語で学んだと同じように、条件判定(IF文)や、ループ(FOR文、WHILE文など)が使える。それぞれの意味は他の言語と同じである。書き方に少しだけ注意がいる。

データ構造

Pythonでは、データの構造は結構重要で、きちんと理解しておく必要がある。といっても、簡単な構造が分かれば大抵は済む。(木などはまず滅多に出てこない)

リスト型とその操作

リスト型は、データを並べたもので、書くときには「コンマで区切られた値から成るリストをカッコで囲む」です。たとえば

a = [1, 2, 3]
b = ['apple', 'orange', 'grapefruit']
c = ['spam', 'eggs', 100, 1234]

最後の例cでは、同じ型ではないデータが並んでいることに注意。

リストの要素は、単独の時は、何番目というインデックスで示される。但しインデックスは0から始まる。つまり、上記の例bでは、b[0]は'apple'、b[1]は'orange'、b[2]は'grapefruit'である。
範囲で示すこともでき、スライスと呼ばれる。この時の位置指定は、かなり分かりにくいので注意を要する。「何番目」というよりは、インデックスは≪要素と要素の間の位置≫を示す。図示すると、

[<インデックス=0> <第0要素> <インデックス=1> <第1要素> <インデックス=2> <第2要素> <インデックス=3> <第3要素> <インデックス=4> <第4要素> <インデックス=5>]

のようになっている。だから

b[0:1]  ⇒ ['apple']

指定せず、というのも許される。

b[:1]   ⇒  b[0:1]と同じで、['apple']
b[2:]   ⇒  b[2:3]と同じで、['grapefruit']

マイナスの指定は後ろから逆方向に数えた番目と解釈される。たとえば

b[-1]    ⇒  最後の要素である['grapefruit']
b[-3:-1] ⇒  ['orange', 'grapefruit']

要素の数を求める関数は、len(リスト)である。上記の例であれば

len(b) ⇒ 3

「リストのリスト」もよい。

p = [2, 3]
q = [1, p, 4]
len(q)  ⇒  3
q[1]    ⇒  [2, 3]
q[1][0] ⇒  [2]

リスト型に対するいくつかのメソッドがある。
5.1 リスト型についてもう少し を参照
sortなんてのは、結構使える。

外見から見るとリストとほとんど変わらない「タプル」がある。タプルは

a = (1, 2, 'hallo')

のように丸かっこで書かれる。殆ど同じようなことができる

a[1]    ⇒  2
a[:1]    ⇒  (1, 2)

が、要素単位に書き込むことができない。

a[1] = 9
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

文字列

辞書型

まずはこのぐらいで、今までJavaで書いていた大抵のプログラムは書けるのではなかろうか?

ライブラリを使うこと

Pythonのおもしろさは、ライブラリの豊富さにある。これはJavaでもCでも同じなのだが、既存のライブラリを割と簡単に使えるのが受けているように思う。

標準的についてくるライブラリと、どこかから持ってくる(標準ではない)ライブラリがある。その他に自分で作るライブラリもあるが、これは当面サボろう。

標準ライブラリ

まずは、ドキュメントを参照。

全部を紹介するわけに行かないので、いくつかおもしろいものを。

文字列

2つ話があって、1つ目はシーケンス型(組み込み型の1つ)としての文字列の持つメソッドについて。たとえば、文字列に対して、replaceメソッドは文字列の置換をする。

a = 'This is a pen.'
b = a.replace('i', '*')
print(b)

また、lstrip・rstripや、find・rfind、partition・rpartitionなどは便利。

なお、大抵は全角文字(漢字)でもうまくいく。

a = '今日はJimとBillとに会った.'
b = a.replace('今日は', 'おととい')
print(b)

2つ目はさまざまな文字列処理のモジュール。 この中でも本格的に使い出すと便利なのが正規表現操作である。 (正規表現でかかれた)パターンマッチwしてくれる。

関数の定義

Javaのプログラミングで、自分でメソッドやクラスを定義するところまで進んだだろうか? C言語の場合は、結構最初の頃に自分で関数を定義するかもしれない。

次へ ⇒ 山内の演習のページ/研究室演習13/Python2


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-11-07 (水) 09:23:00 (3791d)