知能システム論1 (3) - university of electro ...2. python入門 - pythonの特徴...
TRANSCRIPT
知能システム論1 (3)
2009.4.21情報システム学研究科
情報メディアシステム学専攻
知能システム学講座
末廣尚士
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 講義資料のHP
http://www.taka.is.uec.ac.jp/ から右のメニューの class をクリック
または
http://www.taka.is.uec.ac.jp/class2009/class2009.html を直接入力
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
2. Python入門 - Pythonの特徴
インタプリタ インタプリタ v.s. コンパイラ
段付けが構文的に意味を持つ 段付けによるブロック構造
柔軟なデータ型 リスト、辞書
拡張性 C言語インタフェース
内観機能 プログラムの中から変数などの情報を得ることができる
参考:日本Pythonユーザ会 <http://www.python.jp/>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Pythonのどこが良いか
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 参考書
オンラインドキュメント http://www.python.jp/Zope/links/python_
documents チュートリアル
http://www.python.jp/doc/release/tut/ 「Python デスクトップリファレンス」(オライリー
・ジャパン) 「はじめてのPython」(オライリー・ジャパン)
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Pythonのインストール
Pythonのインストール
VPythonのインストール バージョンを合わせる必要がある
Windows インストーラによるインストール
Linux インストールはディストリビューション依存 インストール済みVMware Image
VMware Playerが必要 <http://www.vmware.com/jp/products/player/>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Windowsでのインストール
<http://vpython.org/win_download25.html>から以下をダウンロード
Python-2.5.1.msi VPython-Win-Py2.5-3.2.11.exe
pythonから順にそれぞれのファイルをダブルクリックしてインストール
pythonは、”c:\Python25”にインストールすること(デフォールトはそうなっている)
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Vine Linuxでのインストール(1)
linuxの場合インストールはディストリビューション依存。ここでは例としてVine。
まずVine4.2をフルインストール。 パッケージを最新し、開発キットを入れる。
python2.4.4が入った状態になっている。
# apt-get update.# apt-get upgrade.# apt-get script install-devel.lua.
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Vine Linuxでのインストール(2)
libboost-python, libboost-python-devel, python-numeric, python-numeric-develをapt-getまたはsynapticで入れる。
libboost_python-gcc33.soにlibboost_python.soからリンクを張る
# cd /usr/lib# ln -s libboost_python-gcc33.so libboost_python.so
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Vine Linuxでのインストール(2)
<http://vpython.org/linux_download.html>からgtkglarea-1.2.3.tar.gz, visual-3.2.9.tar.bz2をダウンロードして展開
それぞれのディレクトリでmakeしてインストール
configureのときに、--prefix=/usrを忘れないこと。
これで完成。 ただしgtkのwarningがでる。
$ cd gtkglarea-1.2.3$ ./configure –prefix=/usr$ make$ su# make install$ exit
$ cd visual-3.2.9$ ./configure –prefix=/usr$ make$ su# make install$ exit
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- VMwareイメージの使い方
Vine4.2にVPyhonまでインストールしたものをVMware Image (約3.5G)として用意してある。
これを使うには、VMware Playerなどが必要 <http://www.vmware.com/jp/products/player/>から
VMware Player 2.5.1のインストーラをダウンロードしてインストールする。
VMware Image をダウンロードして”My Virtual Machines”のフォルダに置く
VMware Playerから走らせる。
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Python入門
Hello World 変数 データ型 演算子 制御構造 関数 オブジェクト 内観機能 モジュール
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Hello World(1)
インタラクティブにやるのは、とても簡単
スクリプトファイル:hello.py の場合
>>> print "Hello World!"Hello World!
#!/usr/bin/env python# -*- Python -*-
print "Hello World"
unixの場合のおまじない“#” は一般にはコメント、でもファイルの先頭の“#!”はシェルコマンドを指定する
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- Hello World(2) Windowsの場合で実行
コマンド窓でやる。でないと一瞬で消える。 または、python idle で開いてモジュール実行
Linuxの場合
C: ....> hello.pyHello World
$ ./hello.pyHello World
$ python hello.pyHello World
こちらだと「おまじない」も「実行属性」もなしでもOK
この前に、$ chmod a+x hello.pyなどとして実行可能にしておく必要がある
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 変数
変数は宣言なしで使える 変数にはいろいろな型のデータを代入するこ
とができる
>>> a=1>>> b=2>>> b=2.0>>> c="abc">>> d="def">>> a+b3.0>>> c+d'abcdef'
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- データ型
数値(整数、実数など) 文字列 リスト タプル 辞書 真偽
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- リスト (list) とてもフレキシブルなデータ構造>>> a=[1,2,[5,6],3.4,[3,5.6]]>>> a[1, 2, [5, 6], 3.3999999999999999, [3, 5.5999999999999996]]>>> a[2][5, 6]>>> a[-1][3, 5.5999999999999996]>>> a[1:3][2, [5, 6]]>>> a[3:][3.3999999999999999, [3, 5.5999999999999996]]>>> a[3]=[1,2]>>> a[1, 2, [5, 6], [1, 2], [3, 5.5999999999999996]]
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- タプル (tuple)
変更のできないリスト
>>> a=(1,2,3)>>> a[1]=3
Traceback (most recent call last): File "<pyshell#95>", line 1, in <module> a[1]=3TypeError: 'tuple' object does not support item assignment>>>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 文字列
文字の一次元タプルのようなもの “abc” と ‘abc’ の2つの表現が可能
>>> a='abc'>>> b="def">>> c=a+b>>> c'abcdef'>>> c[2:5]'cde'>>> c[2]='a'
Traceback (most recent call last): File "<pyshell#115>", line 1, in <module> c[2]='a'TypeError: 'str' object does not support item assignment>>>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 辞書
キーワードでデータにアクセスできる
>>> a={'key1':123, 1:'item1', 3.5:'item2', 'key2':[1,2,3]}>>> a{3.5: 'item2', 1: 'item2', 'key1': 123, 'key2': [1, 2, 3]}>>> a[3.5]'item2'>>> a['key2'][1, 2, 3]>>> a[1]='item1'>>> a[1]={'a1':3, 'a2':5}>>> a{3.5: 'item2', 1: {'a1': 3, 'a2': 5}, 'key1': 123, 'key2': [1, 2, 3]}>>>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 真偽 基本は True と False 条件分岐では0, None,[], {}も偽、その他
は真 True は 1 と同じ
False は 0 と同じ
>>> 1 == TrueTrue>>> 2 == TrueFalse>>>
>>> 0 == FalseTrue>>> [] == FalseFalse
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 演算子
Cなどと似ている
四則:+, - , *, /, …. 論理:==, !=, >, <>,
文字列やリストも演算の対象
>>> [1] + [2][1, 2]>>> >>> [1,1] < [1]+[2]True>>>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 条件分岐
if と else >>> a=True>>> if a :
print 1else :
print 2
1>>> a=False>>> if a :
print 1else :
print 2
2
ブロックの段付けに注意!
コロン
注意:else の段付けが変なのはインタプリタのプロンプト出力が原因
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 条件分岐 (and と or)
A and B A式を実行、真ならばB式も実行、
偽ならばB式は実行しない。
A or B A式を実行、偽ならばB式も実行、
真ならばB式は実行しない。
>>> a = True>>> a and 11>>> a = False>>> a and 1False
>>> a = True>>> a or 1True>>> a = False>>> a or 11
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 制御構造(ループ)
forループ
whileループ
>>> i = 0>>> sum = 0>>> while i< 10 :
sum = sum + ii = i + 1
>>> sum45
>>> sum = 0>>> i = 0>>> for i in range(10):
sum = sum + i
>>> sum45>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ブロックの段付けに注意!
コロン
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 制御構造(ループからの脱出)
breakを使う
>>> i = 0>>> sum = 0>>> while True :
sum = sum + ii = i + 1if i >= 10 :
break
>>> sum45
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 関数定義 def と return
return がないと値が返らない
>>> def test(x, y) :return 2 * x + y
>>> test(3 ,2)8
>>> def test(x, y) :2*x+y
>>> test(2,3)>>> a=test(2,3)>>> a>>>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 関数についての補足
仮引数はローカル変数 呼び出しは値渡し return で複数の値を戻すことができる
戻された値はタプルとして戻る。 1つの変数で全体を受けるか、 同数の複数の変数で別々に受けることができる。
変数のアドレスを渡すことはできない 一般には戻り値を代入する どうしても変数に値を入れて戻ってきたいときは構
造体を渡す
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- オブジェクト
class N_multiply : def __init__(self, n) : self._n = n def multiply(self, x) : return self._n*x
>>> a = N_multiply(5)>>> a.multiply(4)20>>> a._n5>>> a._n=10>>> a.multiply(3)30>>>
class 定義
オブジェクトの利用
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 内観機能
それが何であるかを調べる dir 関数
>>> a<__main__.N_multiply instance at 0x00CC8BC0>>>> dir(a)['__doc__', '__init__', '__module__', '_n', 'multiply']>>> N_multiply<class __main__.N_multiply at 0x00CB3810>>>> dir(N_multiply)['__doc__', '__init__', '__module__', 'multiply']
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- モジュール
他のファイルをmoduleとして読み込むことができる。
N_multiplyの定義が my_module.pyにあるとすると、、、
import my_module>>> a = my_module.N_multiply(5)>>> a.multiply(4)20>>> a._n5>>> a._n=10>>> a.multiply(3)30>>>
from my_module import *>>> a = N_multiply(5)>>> a.multiply(4)20>>> a._n5>>> a._n=10>>> a.multiply(3)30>>>
2009年度前学期 電気通信大学大学院 情報システム学研究科情報メディアシステム学専攻 知能システム論1
- 次回予告
pythonでベクトル、行列、座標系の演算