ホーム‎ > ‎Python入門 (2008)‎ > ‎

Python入門

はじめに

Pythonはシンプルな設計ながら豊富な機能を持つスクリプト言語です。ここではプログラミングに慣れることを目的に、ごく基本的な部分について説明します。

基本的なデータ型

対話モードの開始

まずコマンドラインで
$ python
と入力して、Python処理系を対話モードで起動します。バージョン番号などが表示された後、
>>>
というプロンプトが表示されるはずです。

数値

整数、実数、複素数などを扱うことができます。虚数単位にはjもしくはJを使います。
>>> (50-5*6)/4
>>> 7/3
>>> 7/3.0
>>> 1j ** 2

問1:3と3.0はどう違うのでしょうか。

変数も使うことができます。代入しただけでは結果は表示されません。
>>> p = 3*11*17
>>> p
整数はかなり大きな桁数まで扱うことができます。そのような整数は内部的に異なった扱いがなされ、表示したときには末尾にLがつきます。
>>> q = 7**(p-1)
>>> q
>>> q % p

文字列

文字列は'や"で囲って表します。どちらを使っても基本的には同じですが、文字列の中に'や"がある場合は異なってきます。
>>> 'keisan sugaku'
>>> 'doesn\'t'
>>> "doesn't"
文字列の連結や繰り返しは以下のようにして得られます。
>>> w = 'Keisan' + 'Sugaku'
>>> w
>>> w * 5
次のようにして特定の文字を参照することができます。左端を0番として数えます。
>>> w[0]
>>> w[6]
ある文字が何番目にあるかは次のようにして得られます。
>>> w.index('a')
len()という関数で長さが得られます。
>>> len(w)

リスト

様々なデータを順に並べたものがリストです。リスト内の各データを要素と呼びます。リストは要素を並べて[]でくくって表します。要素は0個でも構いません。
>>> ['keisan', 'sugaku', 1, 2]
>>> []
リストの中にリストを入れることもできます。
>>> a = ['keisan', ['sugaku', 1], 2]
>>> a
文字列と同じような操作ができます。
>>> a+[3, 4]
>>> []+a
>>> a*2
>>> a[1]
>>> a[1][0]
>>> a[1].index(1)
>>> a.index(2)
>>> len(a)
リストを表す[]と、何番目の要素かという[]の使い分けに注意してください。

問2:上の例において、len(a)の結果は3となるはずです。4でないのはなぜでしょうか。

各要素に別の値を代入することもできます。
>>> a[2] = [2, 3]
>>> a
要素を追加するには次のようにします。
>>> a.append(4)
>>> a
要素を削除するには次のようにします。
>>> del a[2]
>>> a
なお、要素の追加に関しては次のようにしても似たような結果が得られます。これはappendを使った場合と本質的に異なった操作ですが、ここではその詳細には立ち入りません。
>>> a = a+[5]
>>> a

対話モードの終了

Ctrl-Dを入力すると対話モードが終了します。
>>> ^D
$

制御構造

スクリプトの作成と実行

適当なエディタを使って、次のプログラムを入力してください。ここで以下の点に注意してください。
  • 勝手に行を分けたりまとめたりしない
  • 4行目と5行目の最初にある空白は正確にタブ1個を入力する
  • タブ1個の代わりにスペース4個などでもよいが、常に一貫した方法で字下げを行う
  • タブ1個の見た目がスペース何個に相当するかは、エディタによっては設定で変えることができます。
sum = 0
i = 1
while i <= 10:
    sum = sum+i
    i = i+1
print sum
これをsum.pyという名前で適当なディレクトリに保存します。コマンドラインでそのディレクトリに移動し、
$ python sum.py
と入力すると、スクリプトが実行され、1から10までの和である55が表示されます。

while文

while文を使うと、ある条件が満たされている間、一定の処理を繰り返すことができます。構文は次の通りです。
while 条件:
    処理1
    処理2
    ...
ここで、繰り返すべき処理は全て同じ字下げを行うことに注意してください。字下げを間違うと、エラーとなったり、処理が思った通りに繰り返されない可能性があります。
また、条件の後には:をつけることに注意してください。
先ほどのプログラムでは、変数iが10以下であれば4行目と5行目の処理を繰り返すことになります。慣れないうちはこの sum = sum+i や i = i+1 という式が変に思えるかもしれませんが、これは等式ではなくて代入という操作です。まず右辺を計算して、その後で左辺にある変数に代入が行われます。
最後に print sum によってsumの値を表示させています。スクリプトにおいてはsumと書いただけでは値は表示されません。この行は字下げが行われていないことにも注意してください。

問3:この行を直前の行と同じように字下げするとどうなるでしょうか。

条件判断

while文や次に説明するif文で使える条件には、<=以外にも<, >, >=, == (等しい), != (等しくない)などがあります。
=(代入)と==(等しいかどうかの判断)は全く異なるものであることに注意してください。対話モードを使って次のようにチェックしてみてください。
>>> n = 1
>>> n == 2
>>> n = 2
>>> n == 2
ある文字列が別の文字列に含まれているかどうか、ある要素がリストに含まれているかどうかはinを使って判断することができます。
>>> 'is' in 'keisan'
>>> 6 in [2, 3, 5, 7]
条件の前にnotをつけることでその否定を表すことができます。例えば先ほどのプログラムでは i <= 10 の代わりに not i > 10 と書くこともできます。
複数の条件をandやorでつなぐこともできます。例えば変数nが2以上1000以下のときに限ってリストpに含まれているかどうかをチェックしたければ、2 <= n <= 1000 and n in p のように書けます。

if文

if文はある条件が満たされた場合に(一度だけ)処理を行いたいときに使います。構文は次の通りです。
if 条件:
    条件が満たされた場合の処理
    ...
ここでもひとまとまりの処理は同じ字下げを行うこと、条件の後には:をつけることに注意してください。
複数の条件で処理を分けたいことも多く、そのような場合には次の構文が使えます。
if 条件1:
    条件1が満たされた場合の処理
    ...
elif 条件2:
    条件1が満たされなかったとして、条件2が満たされた場合の処理
    ...
elif ...
else:
    全ての条件が満たされなかった場合の処理
    ...
elif部分やelse部分は、必要がなければ適宜省略することができます。elifはelse ifに由来します。
例えば次のプログラムをsign.pyとして作成してください。
n = int(raw_input('enter an integer: '))
if n > 0:
    print 'positive'
elif n == 0:
    print 'zero'
else:
    print 'negative'
これを実行して、適当な整数を入力すると、それが正か0か負かが出力されます。最初の行が「入力された文字列を整数に変換して変数nに代入する」という処理になります。

課題1:上のプログラムを参考にして、入力された西暦が閏年であるかどうかを判定するプログラムを作成してください。4だけでなく、100や400で割り切れるかどうかのチェックまで行ってください。

for文

while文ではある条件が満たされている間、一定の処理を繰り返しました。それに対して、文字列の各文字について、あるいはリストの各要素について一定の処理を繰り返すのがfor文です。例えば以下のようにして使います。
for c in 'keisan':
    print c

a = ['keisan', 'sugaku', [1, 2]]
for x in a:
    print x, len(x)
一定の範囲の整数からなるリストを返すrange()という関数が用意されています。
>>> range(10)
>>> range(-5,5)
>>> range(0,-10,-2)
この関数はよくfor文と組み合わせて使われます。例えば九九の表は次のようにして作れます。
for i in range(1,10):
    for j in range(1,10):
        print i, '*', j, '=', i*j
なお、3行目は2段階字下げされていることに注意してください。

課題2:以前に載せたsum.pyを、for文とrange()関数を使って書き直してください。

課題3:変数aに数値からなるリストが代入されているとして、aの各要素が2乗されたリストを作成するプログラムを作ってください。

参考文献

  • Python Programming Language -- Official Website   http://www.python.org/
    • Pythonの総本山です。
  • Guido van Rossum, Python Tutorial.   http://docs.python.org/tutorial/
    • Pythonの作者によるチュートリアルです。
  • Mark Lutz, 夏目大(訳),『初めてのPython 第3版』、オライリージャパン.
    • 厚い本なので、多少Pythonやプログラミングに慣れてから読んだ方がいいかもしれません。
更新日時:2008/06/27 22:22:25
Googleサイトに移行:2011/06/30

Comments