Python基礎講座
Upcoming SlideShare
Loading in...5
×
 

Python基礎講座

on

  • 2,312 views

「静岡Developers勉強会 コンピュータビジョン(1)」の

「静岡Developers勉強会 コンピュータビジョン(1)」の
プレ勉強会「Python基礎講座」で使用したスライドです。

Statistics

Views

Total Views
2,312
Views on SlideShare
1,711
Embed Views
601

Actions

Likes
4
Downloads
18
Comments
0

3 Embeds 601

http://gameage.blog58.fc2.com 414
http://admin.blog.fc2.com 180
https://twitter.com 7

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Python基礎講座 Python基礎講座 Presentation Transcript

  • コンピュータビジョン:プレ勉強会 Python基礎講座
  • 目次 Pythonの紹介とインストールまで ● 基本的な変数の型と使用方法 ● 条件分岐と繰り返し ● 関数 ● 演習問題 ● ※このスライドはPythonの「他の言語と異なる場所」を重点的に    説明しているため、説明を省略している部分があります。
  • Pythonとは ● ● ● ● ● 1990年に登場したオープンソースのプログラミング 言語 様々なコンピュータ(Win,Mac,Linux)で動作する 主に欧米で普及し、YoutubeやDropboxもPythonで 記述されている GaEでもJava(とGo)と共に採用されている “Python”はニシキヘビを意味し、Pythonの アイコンやマスコットも蛇が利用されている
  • Pythonの特徴 ● 覚えやすい 言語 予約語の数 – Python3.3 33 – 習得しやすい (教育用にも利用される) Ruby1.9 41 Perl5.10 約220 Java6 52 JavaScript ● 予約語が少ない 61 多くのユーザによって書かれた同一の仕事をする プログラムは、だいたいどれも同じようなコードになる – ● PerlのTIMTOWTDI(there's more than one way to do it あることをするのにいくつものやり方がある)という哲学 とは対照的 字下げ 次のスライドで説明します
  • Pythonの特徴 インデント(字下 げ)Pythonのコード ● ● int factorial(int x) { if (x == 0) { return 1; } else { return x * factorial(x - 1); } } def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) Pythonはブロック構造(字下げ)を 強制するため、上記のように 書かないとプログラムが 動作しない! C言語のコード ● 分かりにくいC言語のコード int factorial(int x) { if(x == 0) {return 1;} else {return x * factorial(x - 1); } } 読みやすく、理解しやすく、誰もが同じ構造で記述する
  • Pythonのインストール 公式HPからダウンロード(win,macとも) http://www.python.jp/download/ ● 2.7.6をインストール(コンピュータビジョンではこちらを使用する) ● Python3.Xは2.Xに対して後方互換性を持っていない。 ● OSが64bitの人は64版をインストールする。
  • PyCharmのインストール JetBrains社の提供するPython用IDE http://www.jetbrains.com/pycharm/download/index.html Community Editionならば無料で利用可能 キーマップやIDEのテーマを慣れたものを選択可能
  • Pythonを書いて実行する ● ● PyCharmを起動させて、”Create New Project”を 選択する 「Project names」に”FizzBuzz”を入力後、 「Interpreter」の右側のボタンをクリックする
  • Pythonを書いて実行する ● 先ほどインストールしたPythonを選択する 「Tipsがインストールされてない」と表示されるがいったん無視
  • Pythonを書いて実行する ● 新規でPythonファイルを作成する ● 以下のプログラムを記述する(FizzBuzz) for idx in range(1, 101): if idx % 3 == 0 and idx % 5 == 0: print('fizzbuzz') elif idx % 3 == 0: print('fizz') elif idx % 5 == 0: print('buzz') else: print(idx) PyCharm内で 日本語を使用する場合 #-*- coding: utf-8 -*を記述してください
  • Pythonを書いて実行する ● プログラムを実行する
  • Pythonを書いて実行する ● ● Pythonはスクリプト言語なので、対話型シェルを 使用して実行することも出来る 以下のプログラムを実行してみよう  (インデントに注意!)
  • 変数と組み込み型 ● Pythonの変数の特徴 = 型宣言が不要! – a=1 #数値型 ● a2 = 3.1415 #浮動小数点型 ● a3 = 0xFF #16進数 ● a4 = 0b110 #2進数 – b = “abc” #文字列型 – c = [“python”,”あいう”,[4,5,6]] #リスト型 – d = (“abc”,5,”def”) #タプル型 – e = {'spam':'スパム','ham':'ハム',1:'one'} #ディクショナリ型
  • 数値型 ● ● 「**」で累乗を計算できる >>>2 ** 20 1048576 「//」で小数点以下切捨ての割り算 >>> 10 // 3 3 ● 「++ (インクリメント)」「-- (デクリメント)」は利用できない ● 四則演算子および剰余(+,-,*,/,%)は他言語と同じ
  • 文字列型 ● ● 3重クオーテーション(“””)を使用すると、囲まれた 文字列の改行はそのまま変数に格納される 文字列の連結は 「+」で行う >>> nstr = “1234” >>> result = nstr + “5678” >>> result '12345678' ● 文字列と数字を掛け算すると文字列の繰り返し >>> linestr = “-” * 20 >>> linestr '--------------------' ● 長さ0の文字列をbool判定するとFalseを返す
  • 文字列と数値の型変換用関数 ● 文字列→数値にはint()およびfloat()を使用する >>> nstr = “1234” >>> int(nstr) + 5678 6912 ● 数値→文字列にはstr()を使用する >>> mstr = “1234” >>> nstr + str(5678) '12345678'
  • 文字列変数から文字を取り出す ● 文字列を配列と見做しインデックスで取得可能 >>> digits = '1234' >>> digits[2] '3' ● 文字列そのものを置き換えることは出来ない >>> digits[2] = '4' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
  • その他の文字列変数操作 ● 文字列の長さを取得するlen() 日本語の長さもバイト数でなく長さで取得する ● 文字列検索には in 演算子を用いる >>> address = “静岡Developers勉強会” >>> “静岡” in address True >>> “浜松” in address False ● 文字列置換には 変数.replace() を用いる >>> address.replace(“静岡”,”浜松”) '浜松Developers勉強会' – 変数address自体は置き換えられないことに注意
  • リスト変数 ● リスト変数を定義する >>> a = [1,2,”ab”,”cd”] ● [-1]で最後の要素を取り出すことが出来る >>> a[-1] “cd” ● 存在しないインデックスを指定するエラーになる
  • リスト変数のスライス ● スライスを利用して複数要素を取り出せる [インデックス:X番目の要素]なのに注意 >>> a[1:3] [2,”ab”] >>> a[3:4] “cd” >>> a[2:] [“ab”,”cd”] >>> a[:2] [1,2] >>> a[2:100] [“ab”,”cd”] ● #エラーにならない スライスは文字列変数にも使える
  • リストを使った足し算、掛け算 >>> b = a + [100,101,102] >>> b [1,2,”ab”,”cd”,100,101,102] >>> c = a + [100] >>> c [1,2,”ab”,”cd”,100] >>> a = [1,2,3] * 3 >>> a [1,2,3,1,2,3,1,2,3]
  • 要素の置き換え、削除 >>> a = [1,2,3,4,5] >>> a[1] = “-” >>> a [1,'-',3,4,5] >>> del a[2] >>> a [1,'-',4,5]
  • リスト要素の検索 ● 文字列と同じく in 演算子を使用する >>> names = [“Gary”,”Chick”,”Pat”,”Roy”,”Dave”] >>> “Gary” in names >>> True >>>”Peter” in names >>> False ● 何番目かを調べるにはindex()を使用する >>> names.index(“Chick”) >>> 1 – 存在しない要素に対してはエラーが発生することに注意
  • リストの最大値、最小値、ソート ● 最大値max(リスト変数) / 最小値min(リスト変数) 変数に数値以外が格納されている場合想定どおりの結果が 返らないことに注意 ・>>>max(1,2,3) #数値をリストで与えることも可能 3 ● リスト.sort()でソート。リスト.reverse()で逆順 >>> gdp = [51317,500097,49720,50125] >>> gdp.sort() >>> gdp [49720,50097,50125,51317] >>> gdp.reverse() >>> gdp [51317,50125,50097,49720]
  • リストで使用できるその他のメソッド ● リスト.append(追加要素) >>> a = [1,2,3,4,5] >>> a.append(100) >>> a.append([200,300,400]) >>> a [1,2,3,4,5,100,[200,300,400]) #リスト内リストなのに注意 ● リスト.extend(追加するリスト) >>> a.extend([200,300,400]) >>> a [1,2,3,4,5,100,[200,300,400],200,300,400] ● appendとextendの違いはリストを追加した際の挙動
  • 多次元配列をリストで表現 >>> board = [[0,1,2],[3,4,5],[6,7,8]] >>> board[2][0] 6 >>> board[2][1] = 9 >>> board[2] [6,9,8]
  • ディクショナリ型 ● {キー1:値1,キー2:値2・・・}で定義 >>> d = {“100-0001”:”東京都千代田区”, “100-0002”:”東京都千代田区皇居外苑”} 変数[キー]で値を取得、追加、更新、delで削除 >>> d[“100-0001”] '東京都千代田区' >>> d[“100-0002”] = '更新' >>> d[“100-0003”] = '東京都千代田区 一ツ橋' >>> del d[“100-0001”] >>> d [“東京都千代田区 一ツ橋”,”更新”] ディクショナリには並び順という概念が無いことに注意
  • ディクショナリのキー ● ディクショナリ.keys() >>> item = {"title":"TEST","author":"山田太郎","price":1250} >>> item.keys() [“price”, “author”, “title”] ● キーの有無は in 演算子 >>> “title” in item True >>> “category” in item False ● ディクショナリ.update()という UPDATE文のような 動作をする関数も存在して便利
  • タプル ● ● ● t = (1,2,3,4,5) と丸括弧で定義する リストとよく似ているが、リストと異なり値の 置き換えは出来ない 置き換えは出来ないが、値のコピーは可能 >>> t2 = t + (100,200,300) >>> t2 (1,2,3,4,5,100,200,300)
  • タプルの利点 ● ● 扱う項目数が決まっているならばメモリ効率◎ タプルは(リストと異なり)ディクショナリーの キーとして利用することが可能 >>>ipmap = {(0,1,2,3):”host.name.com”, (0,2,1,3):”some.dname.com” } >>>ipmap[(0,1,2,3)] >>>”host.name.com” ● しかし、基本リストで良いのではないか
  • 条件分岐 ● Javaのソースコード ● Pythonのソースコード if(a == 1 || b == 2){ system.out.println(“1”); if a == 1 or b == 2: }else if( a == b && !c){ system.out.println(“2”); elif a == 2 and not c: } else{system.out.println(“3”);} else: print “1” print “2” print “3”
  • in で文字列のリストの要素を調べる >>> s = “this is ASCII string” >>> if “ASCII” in s: print “I found ASCII” I found ASCII >>> l = [1,2,3,4] >>> 5 in l False
  • for文 ● Pythonのfor文では基本的にループカウンタは 用いない。各要素に対して処理を行い、終了まで 繰り返す、という方法をとる >>> array = [1,2,3,4,5] >>> for e in array ● 回数を指定してループ処理を行いたい場合は 組み込み関数range()を使用する >>> for cnt in range(10) #0から9まで >>> for cnt in range(100,110) #100から109まで >>> for cnt in range(0,10,2) #0から10まで2つおき
  • while文 ● Pythonにはdo~whileは存在しない ● while文はループカウンタを使用する >>> cnt = 0 >>> while cnt < 10: print cnt cnt += 1 ● 無限ループは while True: Java同様breakで抜ける。continueも存在する
  • 関数 def func(name, age=20): fees = ["100","200","150"] 引数のデフォルト値 省略可能な引数と初期値を設定可能 if age <= 10: fee = fees[0] elif age > 10 and age < 60: fee = fees[1] else: fee = fees[2] msg = name + "さんは" msg += str(age) + "歳なので" + fee + "円です return msg
  • 演習問題 ● 数字のリストを引数に与え、数字が全て素数の 場合はTrue,1つでも素数以外が存在した場合 Falseを返す関数 isprime(list) を作成してください – 素数: 1と自身の値以外では割り切れない値 >>> print isprime([1,2,3]) True >>> print isprime([1,2,3,4]) False
  • Pythonのその他の特徴 ● 内包表記(コンプリヘンション) – for文を使用せずに複雑な処理を行える ● イテレータ(データの一部を取得して反復処理) ● ジェネレータ(何回もreturnできる関数) ● 公式サイトに用意された様々なモジュール – コンピュータビジョンでも使用します