Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Python入門 
長岡技術科学大学 
自然言語処理研究室 
presented by 岡田正平
はじめに 
• 
これから1日かけて多くのことを教えますが 全て暗記しようとは思わず,Pythonで何が出来 るのかを何となく頭に入れた上で, あとでこの資料等を参照しながらプログラム 出来るようにしましょう. 
• 
スライド中の空欄は,適宜...
Pythonとは?
Pythonとは? 
• 
スクリプト言語と呼ばれる言語の一種 
– 
他のスクリプト言語:Perl, Ruby など 
• 
シンプルな構文 
• 
豊富な標準ライブラリ 
• 
Google, Yahoo!, NASAなどでも使われている ...
Pythonを使う
Pythonを使う 
• 
2種類の方法 
– 
対話型インタプリタ 
– 
プログラムファイルを実行 
2014/9/1 H26年度オープンハウス・アドバンストコース 6
対話型インタプリタ 
• 
端末上でpython とタイプ 
• 
1行ずつプログラムを書いていく 
2014/9/1 H26年度オープンハウス・アドバンストコース 7
プログラムファイルを実行 
• 
テキストエディタでプログラムを作成 
– 
拡張子は.py 
• 
端末上でプログラムファイルの保存場所へ移動 
• 
python (ファイル名).pyとタイプ 
• 
実行結果が出力される 
2014/9/...
動作確認 
• 
対話型インタプリタを起動し,次の通り入力し 出力を確認 
>>> print "Hello World!" 
Hello World! 
>>> print 1 + 1 
2 
2014/9/1 H26年度オープンハウス・アド...
動作確認 
• 
対話型インタプリタを起動し,次の通り入力し 出力を確認 
>>> print "Hello World!" 
Hello World! 
>>> print 1 + 1 
2 
2014/9/1 H26年度オープンハウス・アド...
動作確認 
• 
次の内容のプログラムファイルを作成 
• 
プログラムを実行し,出力を確認 
% python (ファイル名).py 
Hello World! 
#! /usr/bin/ python# coding: utf-8print...
動作確認 
• 
次の内容のプログラムファイルを作成 
• 
プログラムを実行し,出力を確認 
% python (ファイル名).py 
Hello World! 
#! /usr/bin/ python 
# coding: utf-8 
p...
※注意 
• 
プログラムファイルの先頭2行はおまじない 
(だと思って良い) 
• 
今後の演習でも必ず記述しておく 
2014/9/1 H26年度オープンハウス・アドバンストコース 13 
#! /usr/bin/ python 
# co...
これからの演習 
• 
今日のPython講座の演習は 対話型インタプリタ上でやります 
• 
明日以降の機械翻訳機の作成は テキストエディタでプログラムファイルを作成 することになると思います 
2014/9/1 H26年度オープンハウス・ア...
構文
インデント 
• 
Pythonではコードのブロックを インデントで表す 
– 
同じレベルのインデントは高さを揃える 
– 
1つのインデントはスペース4つ推奨 
>>> if a == b: 
... print "same" 
2014/...
if文 
• 
条件分岐にはif文を使う 
>>> if a == b: 
... print "a==b" 
... elifa == c: 
... print "a==c" 
... else: 
print "nothing" 
201...
条件部分 
• 
True/Falseを返す演算子やメソッド 
– 
比較演算子==, >, <, =>, =< 
– 
論理演算子and, or, not 
>>> 2 == 3 
False 
>>> 1 < 2 and not 2 == ...
条件部分 
• 
True/Falseを返す演算子やメソッド 
– 
比較演算子==, >, <, =>, =< 
– 
論理演算子and, or, not 
>>> 2 == 3 
False 
>>> 1 < 2 and not 2 == ...
条件部分 
– 
演算子in 
– 
startswith, endswithなどのメソッド 
>>> 2 in [1, 2, 3] 
True 
>>> "Hello".startswith("He") 
True 
2014/9/1 H26...
条件部分 
– 
演算子in 
– 
startswith, endswithなどのメソッド 
>>> 2 in [1, 2, 3] 
True 
>>> "Hello".startswith("He") 
True 
2014/9/1 H26...
※備考1 
• 
True/False の2値だけを持つデータ型を bool型という 
• 
数値の0や,空のコンテナ(list, dictなど)は Falseとして評価される 
>>> if not 0: 
... print "empty"...
while文 
• 
条件がTrueの間繰り返し 
>>> i= 0 
>>> while i< 3: # iが3未満の間繰り返し 
... i= i+ 1 
>>> print i 
3 
2014/9/1 H26年度オープンハウス・アドバン...
while文 
• 
条件がTrueの間繰り返し 
>>> i= 0 
>>> while i< 3: # iが3未満の間繰り返し 
... i= i+ 1 
>>> print i 
3 
2014/9/1 H26年度オープンハウス・アドバン...
for文 
• 
コンテナ(list等)の要素に順次アクセス 
>>> for iin range(3): 
... print i 
0 
1 
2 
2014/9/1 H26年度オープンハウス・アドバンストコース 25 
range(n) ...
for文 
• 
コンテナ(list等)の要素に順次アクセス 
>>> for iin range(3): 
... print i 
0 
1 
2 
2014/9/1 H26年度オープンハウス・アドバンストコース 26 
range(n) ...
for文 
• 
順次アクセスのイメージ 
2014/9/1 H26年度オープンハウス・アドバンストコース 27
for文, while文の制御 
• 
continue 
– 
次のループに進む 
• 
break 
– 
ループから抜け出す 
2014/9/1 H26年度オープンハウス・アドバンストコース 28
def文 
• 
関数の定義 
• 
return文で値を返すor 関数を抜ける 
>>> defadd(a, b): 
... return a + b 
>>> add(1, 2) 
3 
2014/9/1 H26年度オープンハウス・アドバ...
def文 
• 
関数の定義 
• 
return文で値を返すor 関数を抜ける 
>>> defadd(a, b): 
... return a + b 
>>> add(1, 2) 
3 
2014/9/1 H26年度オープンハウス・アドバ...
データ型
データ型 
• 
Pythonに変数宣言は無い 
– 
値を代入することで自動で型付けされる 
– 
別の値を代入すると型は動的に変化する 
• 
型にはint, float, str, list, dict等がある(後述) 
2014/9/1...
データ型 
>>> a = 1 # aは自動的にint型になる 
>>> print a 
1 
>>> a = "Hello World!" # 今度はstr型になる 
>>> print a 
Hello World! 
2014/9/1 ...
データ型 
>>> a = 1 # aは自動的にint型になる 
>>> print a 
1 
>>> a = "Hello World!" # 今度はstr型になる 
>>> print a 
Hello World! 
2014/9/1 ...
int型,float型 
• 
数値を格納する型(int:整数,float:実数) 
• 
演算子による四則演算が可能 
>>> a = 2 # int 
>>> b = 3.0 # float 
>>> a + b 
5.0 
演算子 
演算...
int型,float型 
• 
数値を格納する型(int:整数,float:実数) 
• 
演算子による四則演算が可能 
>>> a = 2 # int 
>>> b = 3.0 # float 
>>> a + b 
5.0 
演算子 
演算...
list型 
• 
複数の値を格納する型 
>>> a = [1, 2.0,"ab", 4] # 要素の型は混在可能 
>>> print a[2] 
2.0 
>>> print a[-1] 
4 
2014/9/1 H26年度オープンハウス...
list型 
• 
複数の値を格納する型 
>>> a = [1, 2.0,"ab", 4] # 要素の型は混在可能 
>>> print a[2] 
2.0 
>>> print a[-1] 
4 
2014/9/1 H26年度オープンハウス...
list型 
>>> a[1:3] # スライスで範囲を取出す 
[2.0, "ab"] # 結果もlist 
>>> a[1:] 
[2.0, "ab", 4] 
>>> a[:2] 
[1, 2.0] 
2014/9/1 H26年度オープン...
list型 
>>> a[1:3] # スライスで範囲を取出す 
[2.0, "ab"] # 結果もlist 
>>> a[1:] 
[2.0, "ab", 4] 
>>> a[:2] 
[1, 2.0] 
2014/9/1 H26年度オープン...
>>> a.append("xyz") # 要素の追加 
>>> print a 
[1, 2.0, "ab", 4, "xyz"] 
>>> a.insert(2, "three") # 要素の挿入 
>>> print a 
[1, 2.0...
>>> a.append("xyz") # 要素の追加 
>>> print a 
[1, 2.0, "ab", 4, "xyz"] 
>>> a.insert(2, "three") # 要素の挿入 
>>> print a 
[1, 2.0...
>>> del a[2] # 要素の削除(位置指定) 
>>> print a 
[1, 2.0, "ab", 4, "xyz"] 
>>> a.remove("xyz") # 要素の削除(要素指定) 
>>> print a 
[1, 2.0...
>>> del a[2] # 要素の削除(位置指定) 
>>> print a 
[1, 2.0, "ab", 4, "xyz"] 
>>> a.remove("xyz") # 要素の削除(要素指定) 
>>> print a 
[1, 2.0...
>>> b = [5, 6, 7] 
>>> a + b # listの足し算 
[1, 2.0, "ab", 4, 5, 6, 7] 
>>> b * 2 # listの整数倍 
[5, 6, 7, 5, 6, 7] 
list型 
2014...
>>> b = [5, 6, 7] 
>>> a + b # listの足し算 
[1, 2.0, "ab", 4, 5, 6, 7] 
>>> b * 2 # listの整数倍 
[5, 6, 7, 5, 6, 7] 
list型 
2014...
list型 
>>> a = [5, 2, 7, 9] 
>>> a.sort() # 要素の値でソート 
>>> print a 
[2, 5, 7, 9] 
>>> a.reverse() # 逆順 
>>> print a 
[9, 7,...
list型 
>>> a = [5, 2, 7, 9] 
>>> a.sort() # 要素の値でソート 
>>> print a 
[2, 5, 7, 9] 
>>> a.reverse() # 逆順 
>>> print a 
[9, 7,...
list型 
>>> a = [1, 2, 1, 1] 
>>> len(a) # 全要素の数 
4 
>>> a.count(1) # 特定の要素の数 
3 
2014/9/1 H26年度オープンハウス・アドバンストコース 49
list型 
>>> a = [1, 2, 1, 1] 
>>> len(a) # 全要素の数 
4 
>>> a.count(1) # 特定の要素の数 
3 
2014/9/1 H26年度オープンハウス・アドバンストコース 50
※備考2 
• 
Pythonはオブジェクト指向言語でもある 
– 
すべてのデータはオブジェクト 
c.f.) Java: int型等はオブジェクトではない 
• 
オブジェクトはメソッドとよばれる 関数(のようなもの)を持つ 
>>> a....
str型 
• 
文字列を格納する型 
• 
1文字でもstr型(charのような型はない) 
>>> a = "Hello" # ''でも""でも良い 
>>> print a 
Hello 
2014/9/1 H26年度オープンハウス・アド...
str型 
• 
一部のメソッドはlistと共通, スライス,len()も使用可 
>>> a.count("l") # countメソッド 
2 
>>> a[1:3] #スライス 
"el" 
2014/9/1 H26年度オープンハウス・ア...
str型 
• 
一部のメソッドはlistと共通, スライス,len()も使用可 
>>> a.count("l") # countメソッド 
2 
>>> a[1:3] #スライス 
"el" 
2014/9/1 H26年度オープンハウス・ア...
str型 
>>> b = "World" 
>>> a + b # 文字列の足し算 
'HelloWorld' 
>>> a * 3 # 文字列の整数倍 
'HelloHelloHello' 
2014/9/1 H26年度オープンハウス・アド...
str型 
>>> b = "World" 
>>> a + b # 文字列の足し算 
'HelloWorld' 
>>> a * 3 # 文字列の整数倍 
'HelloHelloHello' 
2014/9/1 H26年度オープンハウス・アド...
str型 
>>> a.find("e") # 文字列の位置検索 
1 
>>> a.replace("llo", "y") # 部分文字列の置換 
'Hey' 
2014/9/1 H26年度オープンハウス・アドバンストコース 57
str型 
>>> a.find("e") # 文字列の位置検索 
1 
>>> a.replace("llo", "y") # 部分文字列の置換 
'Hey' 
2014/9/1 H26年度オープンハウス・アドバンストコース 58
str型 
>>> text = "This is a pen" 
>>> words = text.split() # 空白文字で区切る 
>>> print words 
['This', 'is', 'a', 'pen'] # 結果はli...
str型 
>>> text = "This is a pen" 
>>> words = text.split() # 空白文字で区切る 
>>> print words 
['This', 'is', 'a', 'pen'] # 結果はli...
str型 
>>>text.lower() # 小文字化 
'this is a pen' 
>>> text.upper() # 大文字化 
'THIS IS A PEN' 
>>> text.startswith("pen")# 先頭はpe...
str型 
>>>text.lower() # 小文字化 
'this is a pen' 
>>> text.upper() # 大文字化 
'THIS IS A PEN' 
>>> text.startswith("pen")# 先頭はpe...
str型 
>>> a = "Nagaoka" 
>>> len(a) 
7 
>>> a = "長岡技大" 
>>> len(a) 
12 
2014/9/1 H26年度オープンハウス・アドバンストコース 63
str型 
>>> a = "Nagaoka" 
>>> len(a) 
7 
>>> a = "長岡技大" 
>>> len(a) 
12 # !? 
2014/9/1 H26年度オープンハウス・アドバンストコース 64
unicode型 
• 
日本語のような多バイト文字を扱うには unicode型を用いる 
>>> a = u"いろは" # u"文字列"の形 
• 
str型とほぼ同じメソッドを持っているが, あくまで異なる型であることに注意 
>>> "a...
str型とunicode型 
>>> unicode("Hello") # str-> unicode 
u'Hello' 
>>> u"Hello".encode("utf-8") # unicode-> str 
'Hello' 
※「ut...
※備考3 
• 
今回の演習で使っているPythonは2.x系 
• 
現在は3.x系もある 
– 
printが関数化 
– 
str型を廃止しunicode型に統一 
• 
ただし,一部ライブラリが未対応の場合も 
– 
徐々に対応してきて...
dict型 
• 
他の言語では「ハッシュ」や「連想配列」と 呼ばれる型 
• 
keyとvalueの組が格納される 
• 
keyを指定してvalueにアクセスする 
>>> a = {"name": "Tom", "age": 20} 
>...
dict型 
• 
他の言語では「ハッシュ」や「連想配列」と 呼ばれる型 
• 
keyとvalueの組が格納される 
• 
keyを指定してvalueにアクセスする 
>>> a = {"name": "Tom", "age": 20} 
>...
dict型 
>>> a["name"] = "Ken" # valueの上書き 
>>> print a 
{"age": 20, "name": "Ken"} # 順番を保持しない 
>>> a["job"] = "student" # 要...
dict型 
>>> a["name"] = "Ken" # valueの上書き 
>>> print a 
{"age": 20, "name": "Ken"} # 順番を保持しない 
>>> a["job"] = "student" # 要...
dict型 
>>> len(a) 
3 
>>> a.keys() # 全てkeyを返す 
["job", "age", "name"] #結果はlist 
>>> a.values() # 全てのvalueを返す 
["student", ...
dict型 
>>> len(a) 
3 
>>> a.keys() # 全てkeyを返す 
["job", "age", "name"] #結果はlist 
>>> a.values() # 全てのvalueを返す 
["student", ...
入出力
ファイルから入力 
• 
openを使ってファイルオブジェクトを生成 
• 
メソッドでファイル内容にアクセス 
# file.txtを読み込み専用で開く 
>>> fin = open("file.txt", "r") 
>>> fin.cl...
ファイルから入力 
• 
一度にファイル内容全てを読み出す 
fin.read() 
• 
一行ずつ読み出す 
fin.readline() 
• 
各行をlistの要素として一度に全て読み出す 
fin.readlines() 
2014/9...
ファイルから入力 
• 
for文によるアクセスも可能(1行ずつ) 
>>> fin = open("file.txt", "r") 
>>> for line in fin: 
... print line.strip() 
2014/9/1...
標準入力 
• 
組み込みモジュールsysをimportする 
• 
sys.stdinが標準入力を表す 
• 
ファイルオブジェクトと同様にアクセス可能 
>>> import sys 
>>> text = sys.stdin.read()...
標準出力 
• 
print文を利用 
>>> a = "Hello" 
>>> b = "World" 
>>> print a, b # ,(カンマ)区切り 
'Hello World' 
2014/9/1 H26年度オープンハウス・アドバ...
標準出力 
• 
print文を利用 
>>> a = "Hello" 
>>> b = "World" 
>>> print a, b # ,(カンマ)区切り 
Hello World 
2014/9/1 H26年度オープンハウス・アドバンス...
標準出力 
• 
str型のformatメソッド 
>>> a = "Hello" 
>>> b = "Tom" 
>>> print "{0}, {1}".format(a, b) 
'Hello, Tom' 
>>> print "{gre...
標準出力 
• 
str型のformatメソッド 
>>> a = "Hello" 
>>> b = "Tom" 
>>> print "{0}, {1}".format(a, b) 
Hello, Tom 
>>> print "{greet...
その他の機能 
2014H/296/1年度オープンハウス・アドバンストコース 83
その他の機能 
• 
その他にもできることは沢山ある 
– 
乱数,数学関数,正規表現等 
• 
なにか欲しい機能があったら 
– 
TAに聞いてみる 
– 
公式ドキュメントを調べる 
• 
http://docs.python.jp/2/ ...
課題 
2014H/296/1年度オープンハウス・アドバンストコース 85
FizzBuzz問題 
• 
1~100までの数字を順に1行ずつ出力する 
• 
ただし, 
– 
3で割り切れる場合は代わりにFizz と 
– 
5で割り切れる場合は代わりにBuzz と 
– 
3と5両方で割り切れる場合は代わりにFizz...
Próxima SlideShare
Cargando en…5
×

Python入門

10.001 visualizaciones

Publicado el

長岡技術科学大学 自然言語処理研究室にて行われた,平成26年度オープンハウス・アドバンストコースにおける講義資料です.

Publicado en: Educación
  • Inicia sesión para ver los comentarios

Python入門

  1. 1. Python入門 長岡技術科学大学 自然言語処理研究室 presented by 岡田正平
  2. 2. はじめに • これから1日かけて多くのことを教えますが 全て暗記しようとは思わず,Pythonで何が出来 るのかを何となく頭に入れた上で, あとでこの資料等を参照しながらプログラム 出来るようにしましょう. • スライド中の空欄は,適宜自分で試してみて 結果を記入していきましょう.
  3. 3. Pythonとは?
  4. 4. Pythonとは? • スクリプト言語と呼ばれる言語の一種 – 他のスクリプト言語:Perl, Ruby など • シンプルな構文 • 豊富な標準ライブラリ • Google, Yahoo!, NASAなどでも使われている 2014/9/1 H26年度オープンハウス・アドバンストコース 4
  5. 5. Pythonを使う
  6. 6. Pythonを使う • 2種類の方法 – 対話型インタプリタ – プログラムファイルを実行 2014/9/1 H26年度オープンハウス・アドバンストコース 6
  7. 7. 対話型インタプリタ • 端末上でpython とタイプ • 1行ずつプログラムを書いていく 2014/9/1 H26年度オープンハウス・アドバンストコース 7
  8. 8. プログラムファイルを実行 • テキストエディタでプログラムを作成 – 拡張子は.py • 端末上でプログラムファイルの保存場所へ移動 • python (ファイル名).pyとタイプ • 実行結果が出力される 2014/9/1 H26年度オープンハウス・アドバンストコース 8
  9. 9. 動作確認 • 対話型インタプリタを起動し,次の通り入力し 出力を確認 >>> print "Hello World!" Hello World! >>> print 1 + 1 2 2014/9/1 H26年度オープンハウス・アドバンストコース 9
  10. 10. 動作確認 • 対話型インタプリタを起動し,次の通り入力し 出力を確認 >>> print "Hello World!" Hello World! >>> print 1 + 1 2 2014/9/1 H26年度オープンハウス・アドバンストコース 10
  11. 11. 動作確認 • 次の内容のプログラムファイルを作成 • プログラムを実行し,出力を確認 % python (ファイル名).py Hello World! #! /usr/bin/ python# coding: utf-8print "Hello World!" 2014/9/1 H26年度オープンハウス・アドバンストコース 11
  12. 12. 動作確認 • 次の内容のプログラムファイルを作成 • プログラムを実行し,出力を確認 % python (ファイル名).py Hello World! #! /usr/bin/ python # coding: utf-8 print "Hello World!" 2014/9/1 H26年度オープンハウス・アドバンストコース 12
  13. 13. ※注意 • プログラムファイルの先頭2行はおまじない (だと思って良い) • 今後の演習でも必ず記述しておく 2014/9/1 H26年度オープンハウス・アドバンストコース 13 #! /usr/bin/ python # coding: utf-8
  14. 14. これからの演習 • 今日のPython講座の演習は 対話型インタプリタ上でやります • 明日以降の機械翻訳機の作成は テキストエディタでプログラムファイルを作成 することになると思います 2014/9/1 H26年度オープンハウス・アドバンストコース 14
  15. 15. 構文
  16. 16. インデント • Pythonではコードのブロックを インデントで表す – 同じレベルのインデントは高さを揃える – 1つのインデントはスペース4つ推奨 >>> if a == b: ... print "same" 2014/9/1 H26年度オープンハウス・アドバンストコース 16
  17. 17. if文 • 条件分岐にはif文を使う >>> if a == b: ... print "a==b" ... elifa == c: ... print "a==c" ... else: print "nothing" 2014/9/1 H26年度オープンハウス・アドバンストコース 17
  18. 18. 条件部分 • True/Falseを返す演算子やメソッド – 比較演算子==, >, <, =>, =< – 論理演算子and, or, not >>> 2 == 3 False >>> 1 < 2 and not 2 == 3 True 2014/9/1 H26年度オープンハウス・アドバンストコース 18
  19. 19. 条件部分 • True/Falseを返す演算子やメソッド – 比較演算子==, >, <, =>, =< – 論理演算子and, or, not >>> 2 == 3 False >>> 1 < 2 and not 2 == 3 True 2014/9/1 H26年度オープンハウス・アドバンストコース 19
  20. 20. 条件部分 – 演算子in – startswith, endswithなどのメソッド >>> 2 in [1, 2, 3] True >>> "Hello".startswith("He") True 2014/9/1 H26年度オープンハウス・アドバンストコース 20
  21. 21. 条件部分 – 演算子in – startswith, endswithなどのメソッド >>> 2 in [1, 2, 3] True >>> "Hello".startswith("He") True 2014/9/1 H26年度オープンハウス・アドバンストコース 21
  22. 22. ※備考1 • True/False の2値だけを持つデータ型を bool型という • 数値の0や,空のコンテナ(list, dictなど)は Falseとして評価される >>> if not 0: ... print "empty" # 結果,"empty"と表示 2014/9/1 H26年度オープンハウス・アドバンストコース 22
  23. 23. while文 • 条件がTrueの間繰り返し >>> i= 0 >>> while i< 3: # iが3未満の間繰り返し ... i= i+ 1 >>> print i 3 2014/9/1 H26年度オープンハウス・アドバンストコース 23
  24. 24. while文 • 条件がTrueの間繰り返し >>> i= 0 >>> while i< 3: # iが3未満の間繰り返し ... i= i+ 1 >>> print i 3 2014/9/1 H26年度オープンハウス・アドバンストコース 24
  25. 25. for文 • コンテナ(list等)の要素に順次アクセス >>> for iin range(3): ... print i 0 1 2 2014/9/1 H26年度オープンハウス・アドバンストコース 25 range(n) 0~nまでの整数の リストを返す 組み込み関数
  26. 26. for文 • コンテナ(list等)の要素に順次アクセス >>> for iin range(3): ... print i 0 1 2 2014/9/1 H26年度オープンハウス・アドバンストコース 26 range(n) 0~nまでの整数の リストを返す 組み込み関数
  27. 27. for文 • 順次アクセスのイメージ 2014/9/1 H26年度オープンハウス・アドバンストコース 27
  28. 28. for文, while文の制御 • continue – 次のループに進む • break – ループから抜け出す 2014/9/1 H26年度オープンハウス・アドバンストコース 28
  29. 29. def文 • 関数の定義 • return文で値を返すor 関数を抜ける >>> defadd(a, b): ... return a + b >>> add(1, 2) 3 2014/9/1 H26年度オープンハウス・アドバンストコース 29
  30. 30. def文 • 関数の定義 • return文で値を返すor 関数を抜ける >>> defadd(a, b): ... return a + b >>> add(1, 2) 3 2014/9/1 H26年度オープンハウス・アドバンストコース 30
  31. 31. データ型
  32. 32. データ型 • Pythonに変数宣言は無い – 値を代入することで自動で型付けされる – 別の値を代入すると型は動的に変化する • 型にはint, float, str, list, dict等がある(後述) 2014/9/1 H26年度オープンハウス・アドバンストコース 32
  33. 33. データ型 >>> a = 1 # aは自動的にint型になる >>> print a 1 >>> a = "Hello World!" # 今度はstr型になる >>> print a Hello World! 2014/9/1 H26年度オープンハウス・アドバンストコース 33
  34. 34. データ型 >>> a = 1 # aは自動的にint型になる >>> print a 1 >>> a = "Hello World!" # 今度はstr型になる >>> print a Hello World! 2014/9/1 H26年度オープンハウス・アドバンストコース 34
  35. 35. int型,float型 • 数値を格納する型(int:整数,float:実数) • 演算子による四則演算が可能 >>> a = 2 # int >>> b = 3.0 # float >>> a + b 5.0 演算子 演算内容 + 足し算 - 引き算 * 掛け算 / 割り算(型に注意) // 商 % 剰余 ** 累乗 2014/9/1 H26年度オープンハウス・アドバンストコース 35
  36. 36. int型,float型 • 数値を格納する型(int:整数,float:実数) • 演算子による四則演算が可能 >>> a = 2 # int >>> b = 3.0 # float >>> a + b 5.0 演算子 演算内容 + 足し算 - 引き算 * 掛け算 / 割り算(型に注意) // 商 % 剰余 ** 累乗 2014/9/1 H26年度オープンハウス・アドバンストコース 36
  37. 37. list型 • 複数の値を格納する型 >>> a = [1, 2.0,"ab", 4] # 要素の型は混在可能 >>> print a[2] 2.0 >>> print a[-1] 4 2014/9/1 H26年度オープンハウス・アドバンストコース 37
  38. 38. list型 • 複数の値を格納する型 >>> a = [1, 2.0,"ab", 4] # 要素の型は混在可能 >>> print a[2] 2.0 >>> print a[-1] 4 2014/9/1 H26年度オープンハウス・アドバンストコース 38
  39. 39. list型 >>> a[1:3] # スライスで範囲を取出す [2.0, "ab"] # 結果もlist >>> a[1:] [2.0, "ab", 4] >>> a[:2] [1, 2.0] 2014/9/1 H26年度オープンハウス・アドバンストコース 39
  40. 40. list型 >>> a[1:3] # スライスで範囲を取出す [2.0, "ab"] # 結果もlist >>> a[1:] [2.0, "ab", 4] >>> a[:2] [1, 2.0] 2014/9/1 H26年度オープンハウス・アドバンストコース 40
  41. 41. >>> a.append("xyz") # 要素の追加 >>> print a [1, 2.0, "ab", 4, "xyz"] >>> a.insert(2, "three") # 要素の挿入 >>> print a [1, 2.0, “three”, "ab", 4, "xyz"] list型 2014/9/1 H26年度オープンハウス・アドバンストコース 41
  42. 42. >>> a.append("xyz") # 要素の追加 >>> print a [1, 2.0, "ab", 4, "xyz"] >>> a.insert(2, "three") # 要素の挿入 >>> print a [1, 2.0, “three”, "ab", 4, "xyz"] list型 2014/9/1 H26年度オープンハウス・アドバンストコース 42
  43. 43. >>> del a[2] # 要素の削除(位置指定) >>> print a [1, 2.0, "ab", 4, "xyz"] >>> a.remove("xyz") # 要素の削除(要素指定) >>> print a [1, 2.0, "ab“, 4] list型 2014/9/1 H26年度オープンハウス・アドバンストコース 43
  44. 44. >>> del a[2] # 要素の削除(位置指定) >>> print a [1, 2.0, "ab", 4, "xyz"] >>> a.remove("xyz") # 要素の削除(要素指定) >>> print a [1, 2.0, "ab", 4] list型 2014/9/1 H26年度オープンハウス・アドバンストコース 44
  45. 45. >>> b = [5, 6, 7] >>> a + b # listの足し算 [1, 2.0, "ab", 4, 5, 6, 7] >>> b * 2 # listの整数倍 [5, 6, 7, 5, 6, 7] list型 2014/9/1 H26年度オープンハウス・アドバンストコース 45
  46. 46. >>> b = [5, 6, 7] >>> a + b # listの足し算 [1, 2.0, "ab", 4, 5, 6, 7] >>> b * 2 # listの整数倍 [5, 6, 7, 5, 6, 7] list型 2014/9/1 H26年度オープンハウス・アドバンストコース 46
  47. 47. list型 >>> a = [5, 2, 7, 9] >>> a.sort() # 要素の値でソート >>> print a [2, 5, 7, 9] >>> a.reverse() # 逆順 >>> print a [9, 7, 5, 2] 2014/9/1 H26年度オープンハウス・アドバンストコース 47
  48. 48. list型 >>> a = [5, 2, 7, 9] >>> a.sort() # 要素の値でソート >>> print a [2, 5, 7, 9] >>> a.reverse() # 逆順 >>> print a [9, 7, 5, 2] 2014/9/1 H26年度オープンハウス・アドバンストコース 48
  49. 49. list型 >>> a = [1, 2, 1, 1] >>> len(a) # 全要素の数 4 >>> a.count(1) # 特定の要素の数 3 2014/9/1 H26年度オープンハウス・アドバンストコース 49
  50. 50. list型 >>> a = [1, 2, 1, 1] >>> len(a) # 全要素の数 4 >>> a.count(1) # 特定の要素の数 3 2014/9/1 H26年度オープンハウス・アドバンストコース 50
  51. 51. ※備考2 • Pythonはオブジェクト指向言語でもある – すべてのデータはオブジェクト c.f.) Java: int型等はオブジェクトではない • オブジェクトはメソッドとよばれる 関数(のようなもの)を持つ >>> a.append(2) 2014/9/1 H26年度オープンハウス・アドバンストコース 51 メソッド
  52. 52. str型 • 文字列を格納する型 • 1文字でもstr型(charのような型はない) >>> a = "Hello" # ''でも""でも良い >>> print a Hello 2014/9/1 H26年度オープンハウス・アドバンストコース 52
  53. 53. str型 • 一部のメソッドはlistと共通, スライス,len()も使用可 >>> a.count("l") # countメソッド 2 >>> a[1:3] #スライス "el" 2014/9/1 H26年度オープンハウス・アドバンストコース 53
  54. 54. str型 • 一部のメソッドはlistと共通, スライス,len()も使用可 >>> a.count("l") # countメソッド 2 >>> a[1:3] #スライス "el" 2014/9/1 H26年度オープンハウス・アドバンストコース 54
  55. 55. str型 >>> b = "World" >>> a + b # 文字列の足し算 'HelloWorld' >>> a * 3 # 文字列の整数倍 'HelloHelloHello' 2014/9/1 H26年度オープンハウス・アドバンストコース 55
  56. 56. str型 >>> b = "World" >>> a + b # 文字列の足し算 'HelloWorld' >>> a * 3 # 文字列の整数倍 'HelloHelloHello' 2014/9/1 H26年度オープンハウス・アドバンストコース 56
  57. 57. str型 >>> a.find("e") # 文字列の位置検索 1 >>> a.replace("llo", "y") # 部分文字列の置換 'Hey' 2014/9/1 H26年度オープンハウス・アドバンストコース 57
  58. 58. str型 >>> a.find("e") # 文字列の位置検索 1 >>> a.replace("llo", "y") # 部分文字列の置換 'Hey' 2014/9/1 H26年度オープンハウス・アドバンストコース 58
  59. 59. str型 >>> text = "This is a pen" >>> words = text.split() # 空白文字で区切る >>> print words ['This', 'is', 'a', 'pen'] # 結果はlist >>> "_".join(words) # listを連結する 'This_is_a_pen' 2014/9/1 H26年度オープンハウス・アドバンストコース 59
  60. 60. str型 >>> text = "This is a pen" >>> words = text.split() # 空白文字で区切る >>> print words ['This', 'is', 'a', 'pen'] # 結果はlist >>> "_".join(words) # listを連結する 'This_is_a_pen' 2014/9/1 H26年度オープンハウス・アドバンストコース 60
  61. 61. str型 >>>text.lower() # 小文字化 'this is a pen' >>> text.upper() # 大文字化 'THIS IS A PEN' >>> text.startswith("pen")# 先頭はpenかどうか False >>> text.endswith("pen") # 末尾はpenかどうか True 2014/9/1 H26年度オープンハウス・アドバンストコース 61
  62. 62. str型 >>>text.lower() # 小文字化 'this is a pen' >>> text.upper() # 大文字化 'THIS IS A PEN' >>> text.startswith("pen")# 先頭はpenかどうか False >>> text.endswith("pen") # 末尾はpenかどうか True 2014/9/1 H26年度オープンハウス・アドバンストコース 62
  63. 63. str型 >>> a = "Nagaoka" >>> len(a) 7 >>> a = "長岡技大" >>> len(a) 12 2014/9/1 H26年度オープンハウス・アドバンストコース 63
  64. 64. str型 >>> a = "Nagaoka" >>> len(a) 7 >>> a = "長岡技大" >>> len(a) 12 # !? 2014/9/1 H26年度オープンハウス・アドバンストコース 64
  65. 65. unicode型 • 日本語のような多バイト文字を扱うには unicode型を用いる >>> a = u"いろは" # u"文字列"の形 • str型とほぼ同じメソッドを持っているが, あくまで異なる型であることに注意 >>> "abc" + u"いろは" # エラーになる 2014/9/1 H26年度オープンハウス・アドバンストコース 65
  66. 66. str型とunicode型 >>> unicode("Hello") # str-> unicode u'Hello' >>> u"Hello".encode("utf-8") # unicode-> str 'Hello' ※「utf-8(unicode)」でエンコードされたstr型と, unicode型は異なるものなので注意 2014/9/1 H26年度オープンハウス・アドバンストコース 66
  67. 67. ※備考3 • 今回の演習で使っているPythonは2.x系 • 現在は3.x系もある – printが関数化 – str型を廃止しunicode型に統一 • ただし,一部ライブラリが未対応の場合も – 徐々に対応してきている 2014/9/1 H26年度オープンハウス・アドバンストコース 67
  68. 68. dict型 • 他の言語では「ハッシュ」や「連想配列」と 呼ばれる型 • keyとvalueの組が格納される • keyを指定してvalueにアクセスする >>> a = {"name": "Tom", "age": 20} >>> a["name"] 'Tom' 2014/9/1 H26年度オープンハウス・アドバンストコース 68
  69. 69. dict型 • 他の言語では「ハッシュ」や「連想配列」と 呼ばれる型 • keyとvalueの組が格納される • keyを指定してvalueにアクセスする >>> a = {"name": "Tom", "age": 20} >>> a["name"] 'Tom' 2014/9/1 H26年度オープンハウス・アドバンストコース 69
  70. 70. dict型 >>> a["name"] = "Ken" # valueの上書き >>> print a {"age": 20, "name": "Ken"} # 順番を保持しない >>> a["job"] = "student" # 要素の追加 >>>print a {"job": "student", "age": 20, "name": "Ken"} 2014/9/1 H26年度オープンハウス・アドバンストコース 70
  71. 71. dict型 >>> a["name"] = "Ken" # valueの上書き >>> print a {"age": 20, "name": "Ken"} # 順番を保持しない >>> a["job"] = "student" # 要素の追加 >>>print a {"job": "student", "age": 20, "name": "Ken"} 2014/9/1 H26年度オープンハウス・アドバンストコース 71
  72. 72. dict型 >>> len(a) 3 >>> a.keys() # 全てkeyを返す ["job", "age", "name"] #結果はlist >>> a.values() # 全てのvalueを返す ["student", 20, "Ken"] # 結果はlist 2014/9/1 H26年度オープンハウス・アドバンストコース 72
  73. 73. dict型 >>> len(a) 3 >>> a.keys() # 全てkeyを返す ["job", "age", "name"] #結果はlist >>> a.values() # 全てのvalueを返す ["student", 20, "Ken"] # 結果はlist 2014/9/1 H26年度オープンハウス・アドバンストコース 73
  74. 74. 入出力
  75. 75. ファイルから入力 • openを使ってファイルオブジェクトを生成 • メソッドでファイル内容にアクセス # file.txtを読み込み専用で開く >>> fin = open("file.txt", "r") >>> fin.close() # 使い終わったらclose()
  76. 76. ファイルから入力 • 一度にファイル内容全てを読み出す fin.read() • 一行ずつ読み出す fin.readline() • 各行をlistの要素として一度に全て読み出す fin.readlines() 2014/9/1 H26年度オープンハウス・アドバンストコース 76
  77. 77. ファイルから入力 • for文によるアクセスも可能(1行ずつ) >>> fin = open("file.txt", "r") >>> for line in fin: ... print line.strip() 2014/9/1 H26年度オープンハウス・アドバンストコース 77 str.strip() 文字列両端の空白文字 (スペースや改行) を取り除くstr型のメソッド
  78. 78. 標準入力 • 組み込みモジュールsysをimportする • sys.stdinが標準入力を表す • ファイルオブジェクトと同様にアクセス可能 >>> import sys >>> text = sys.stdin.read() 2014/9/1 H26年度オープンハウス・アドバンストコース 78
  79. 79. 標準出力 • print文を利用 >>> a = "Hello" >>> b = "World" >>> print a, b # ,(カンマ)区切り 'Hello World' 2014/9/1 H26年度オープンハウス・アドバンストコース 79
  80. 80. 標準出力 • print文を利用 >>> a = "Hello" >>> b = "World" >>> print a, b # ,(カンマ)区切り Hello World 2014/9/1 H26年度オープンハウス・アドバンストコース 80
  81. 81. 標準出力 • str型のformatメソッド >>> a = "Hello" >>> b = "Tom" >>> print "{0}, {1}".format(a, b) 'Hello, Tom' >>> print "{greets}, {name}".format(greets=a,name=b) 'Hello, Tom' 2014/9/1 H26年度オープンハウス・アドバンストコース 81
  82. 82. 標準出力 • str型のformatメソッド >>> a = "Hello" >>> b = "Tom" >>> print "{0}, {1}".format(a, b) Hello, Tom >>> print "{greets}, {name}".format(greets=a,name=b) Hello, Tom 2014/9/1 H26年度オープンハウス・アドバンストコース 82
  83. 83. その他の機能 2014H/296/1年度オープンハウス・アドバンストコース 83
  84. 84. その他の機能 • その他にもできることは沢山ある – 乱数,数学関数,正規表現等 • なにか欲しい機能があったら – TAに聞いてみる – 公式ドキュメントを調べる • http://docs.python.jp/2/ 2014/9/1 H26年度オープンハウス・アドバンストコース 84
  85. 85. 課題 2014H/296/1年度オープンハウス・アドバンストコース 85
  86. 86. FizzBuzz問題 • 1~100までの数字を順に1行ずつ出力する • ただし, – 3で割り切れる場合は代わりにFizz と – 5で割り切れる場合は代わりにBuzz と – 3と5両方で割り切れる場合は代わりにFizz Buzzと 出力する 2014/9/1 H26年度オープンハウス・アドバンストコース 86

×