Weitere ähnliche Inhalte
Ähnlich wie Python入門 (20)
Mehr von Shohei Okada (20)
Python入門
- 2. はじめに
•
これから1日かけて多くのことを教えますが 全て暗記しようとは思わず,Pythonで何が出来 るのかを何となく頭に入れた上で, あとでこの資料等を参照しながらプログラム 出来るようにしましょう.
•
スライド中の空欄は,適宜自分で試してみて 結果を記入していきましょう.
- 4. Pythonとは?
•
スクリプト言語と呼ばれる言語の一種
–
他のスクリプト言語:Perl, Ruby など
•
シンプルな構文
•
豊富な標準ライブラリ
•
Google, Yahoo!, NASAなどでも使われている
2014/9/1 H26年度オープンハウス・アドバンストコース 4
- 11. 動作確認
•
次の内容のプログラムファイルを作成
•
プログラムを実行し,出力を確認
% python (ファイル名).py
Hello World!
#! /usr/bin/ python# coding: utf-8print "Hello World!"
2014/9/1 H26年度オープンハウス・アドバンストコース 11
- 12. 動作確認
•
次の内容のプログラムファイルを作成
•
プログラムを実行し,出力を確認
% python (ファイル名).py
Hello World!
#! /usr/bin/ python
# coding: utf-8
print "Hello World!"
2014/9/1 H26年度オープンハウス・アドバンストコース 12
- 14. これからの演習
•
今日のPython講座の演習は 対話型インタプリタ上でやります
•
明日以降の機械翻訳機の作成は テキストエディタでプログラムファイルを作成 することになると思います
2014/9/1 H26年度オープンハウス・アドバンストコース 14
- 16. インデント
•
Pythonではコードのブロックを インデントで表す
–
同じレベルのインデントは高さを揃える
–
1つのインデントはスペース4つ推奨
>>> if a == b:
... print "same"
2014/9/1 H26年度オープンハウス・アドバンストコース 16
- 17. if文
•
条件分岐にはif文を使う
>>> if a == b:
... print "a==b"
... elifa == c:
... print "a==c"
... else:
print "nothing"
2014/9/1 H26年度オープンハウス・アドバンストコース 17
- 18. 条件部分
•
True/Falseを返す演算子やメソッド
–
比較演算子==, >, <, =>, =<
–
論理演算子and, or, not
>>> 2 == 3
False
>>> 1 < 2 and not 2 == 3
True
2014/9/1 H26年度オープンハウス・アドバンストコース 18
- 19. 条件部分
•
True/Falseを返す演算子やメソッド
–
比較演算子==, >, <, =>, =<
–
論理演算子and, or, not
>>> 2 == 3
False
>>> 1 < 2 and not 2 == 3
True
2014/9/1 H26年度オープンハウス・アドバンストコース 19
- 20. 条件部分
–
演算子in
–
startswith, endswithなどのメソッド
>>> 2 in [1, 2, 3]
True
>>> "Hello".startswith("He")
True
2014/9/1 H26年度オープンハウス・アドバンストコース 20
- 21. 条件部分
–
演算子in
–
startswith, endswithなどのメソッド
>>> 2 in [1, 2, 3]
True
>>> "Hello".startswith("He")
True
2014/9/1 H26年度オープンハウス・アドバンストコース 21
- 22. ※備考1
•
True/False の2値だけを持つデータ型を bool型という
•
数値の0や,空のコンテナ(list, dictなど)は Falseとして評価される
>>> if not 0:
... print "empty" # 結果,"empty"と表示
2014/9/1 H26年度オープンハウス・アドバンストコース 22
- 23. while文
•
条件がTrueの間繰り返し
>>> i= 0
>>> while i< 3: # iが3未満の間繰り返し
... i= i+ 1
>>> print i
3
2014/9/1 H26年度オープンハウス・アドバンストコース 23
- 24. while文
•
条件がTrueの間繰り返し
>>> i= 0
>>> while i< 3: # iが3未満の間繰り返し
... i= i+ 1
>>> print i
3
2014/9/1 H26年度オープンハウス・アドバンストコース 24
- 25. for文
•
コンテナ(list等)の要素に順次アクセス
>>> for iin range(3):
... print i
0
1
2
2014/9/1 H26年度オープンハウス・アドバンストコース 25
range(n)
0~nまでの整数の リストを返す 組み込み関数
- 26. for文
•
コンテナ(list等)の要素に順次アクセス
>>> for iin range(3):
... print i
0
1
2
2014/9/1 H26年度オープンハウス・アドバンストコース 26
range(n)
0~nまでの整数の リストを返す 組み込み関数
- 28. for文, while文の制御
•
continue
–
次のループに進む
•
break
–
ループから抜け出す
2014/9/1 H26年度オープンハウス・アドバンストコース 28
- 29. def文
•
関数の定義
•
return文で値を返すor 関数を抜ける
>>> defadd(a, b):
... return a + b
>>> add(1, 2)
3
2014/9/1 H26年度オープンハウス・アドバンストコース 29
- 30. def文
•
関数の定義
•
return文で値を返すor 関数を抜ける
>>> defadd(a, b):
... return a + b
>>> add(1, 2)
3
2014/9/1 H26年度オープンハウス・アドバンストコース 30
- 32. データ型
•
Pythonに変数宣言は無い
–
値を代入することで自動で型付けされる
–
別の値を代入すると型は動的に変化する
•
型にはint, float, str, list, dict等がある(後述)
2014/9/1 H26年度オープンハウス・アドバンストコース 32
- 33. データ型
>>> a = 1 # aは自動的にint型になる
>>> print a
1
>>> a = "Hello World!" # 今度はstr型になる
>>> print a
Hello World!
2014/9/1 H26年度オープンハウス・アドバンストコース 33
- 34. データ型
>>> a = 1 # aは自動的にint型になる
>>> print a
1
>>> a = "Hello World!" # 今度はstr型になる
>>> print a
Hello World!
2014/9/1 H26年度オープンハウス・アドバンストコース 34
- 35. int型,float型
•
数値を格納する型(int:整数,float:実数)
•
演算子による四則演算が可能
>>> a = 2 # int
>>> b = 3.0 # float
>>> a + b
5.0
演算子
演算内容
+
足し算
-
引き算
*
掛け算
/
割り算(型に注意)
//
商
%
剰余
**
累乗
2014/9/1 H26年度オープンハウス・アドバンストコース 35
- 36. int型,float型
•
数値を格納する型(int:整数,float:実数)
•
演算子による四則演算が可能
>>> a = 2 # int
>>> b = 3.0 # float
>>> a + b
5.0
演算子
演算内容
+
足し算
-
引き算
*
掛け算
/
割り算(型に注意)
//
商
%
剰余
**
累乗
2014/9/1 H26年度オープンハウス・アドバンストコース 36
- 37. list型
•
複数の値を格納する型
>>> a = [1, 2.0,"ab", 4] # 要素の型は混在可能
>>> print a[2]
2.0
>>> print a[-1]
4
2014/9/1 H26年度オープンハウス・アドバンストコース 37
- 38. list型
•
複数の値を格納する型
>>> a = [1, 2.0,"ab", 4] # 要素の型は混在可能
>>> print a[2]
2.0
>>> print a[-1]
4
2014/9/1 H26年度オープンハウス・アドバンストコース 38
- 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. 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. >>> 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. >>> 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. >>> 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. >>> 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. >>> 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. >>> 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. 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. 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. list型
>>> a = [1, 2, 1, 1]
>>> len(a) # 全要素の数
4
>>> a.count(1) # 特定の要素の数
3
2014/9/1 H26年度オープンハウス・アドバンストコース 49
- 50. list型
>>> a = [1, 2, 1, 1]
>>> len(a) # 全要素の数
4
>>> a.count(1) # 特定の要素の数
3
2014/9/1 H26年度オープンハウス・アドバンストコース 50
- 51. ※備考2
•
Pythonはオブジェクト指向言語でもある
–
すべてのデータはオブジェクト
c.f.) Java: int型等はオブジェクトではない
•
オブジェクトはメソッドとよばれる 関数(のようなもの)を持つ
>>> a.append(2)
2014/9/1 H26年度オープンハウス・アドバンストコース 51
メソッド
- 52. str型
•
文字列を格納する型
•
1文字でもstr型(charのような型はない)
>>> a = "Hello" # ''でも""でも良い
>>> print a
Hello
2014/9/1 H26年度オープンハウス・アドバンストコース 52
- 53. str型
•
一部のメソッドはlistと共通, スライス,len()も使用可
>>> a.count("l") # countメソッド
2
>>> a[1:3] #スライス
"el"
2014/9/1 H26年度オープンハウス・アドバンストコース 53
- 54. str型
•
一部のメソッドはlistと共通, スライス,len()も使用可
>>> a.count("l") # countメソッド
2
>>> a[1:3] #スライス
"el"
2014/9/1 H26年度オープンハウス・アドバンストコース 54
- 55. str型
>>> b = "World"
>>> a + b # 文字列の足し算
'HelloWorld'
>>> a * 3 # 文字列の整数倍
'HelloHelloHello'
2014/9/1 H26年度オープンハウス・アドバンストコース 55
- 56. str型
>>> b = "World"
>>> a + b # 文字列の足し算
'HelloWorld'
>>> a * 3 # 文字列の整数倍
'HelloHelloHello'
2014/9/1 H26年度オープンハウス・アドバンストコース 56
- 57. str型
>>> a.find("e") # 文字列の位置検索
1
>>> a.replace("llo", "y") # 部分文字列の置換
'Hey'
2014/9/1 H26年度オープンハウス・アドバンストコース 57
- 58. str型
>>> a.find("e") # 文字列の位置検索
1
>>> a.replace("llo", "y") # 部分文字列の置換
'Hey'
2014/9/1 H26年度オープンハウス・アドバンストコース 58
- 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. 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. 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. 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. str型
>>> a = "Nagaoka"
>>> len(a)
7
>>> a = "長岡技大"
>>> len(a)
12
2014/9/1 H26年度オープンハウス・アドバンストコース 63
- 64. str型
>>> a = "Nagaoka"
>>> len(a)
7
>>> a = "長岡技大"
>>> len(a)
12 # !?
2014/9/1 H26年度オープンハウス・アドバンストコース 64
- 65. unicode型
•
日本語のような多バイト文字を扱うには unicode型を用いる
>>> a = u"いろは" # u"文字列"の形
•
str型とほぼ同じメソッドを持っているが, あくまで異なる型であることに注意
>>> "abc" + u"いろは" # エラーになる
2014/9/1 H26年度オープンハウス・アドバンストコース 65
- 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. ※備考3
•
今回の演習で使っているPythonは2.x系
•
現在は3.x系もある
–
printが関数化
–
str型を廃止しunicode型に統一
•
ただし,一部ライブラリが未対応の場合も
–
徐々に対応してきている
2014/9/1 H26年度オープンハウス・アドバンストコース 67
- 68. dict型
•
他の言語では「ハッシュ」や「連想配列」と 呼ばれる型
•
keyとvalueの組が格納される
•
keyを指定してvalueにアクセスする
>>> a = {"name": "Tom", "age": 20}
>>> a["name"]
'Tom'
2014/9/1 H26年度オープンハウス・アドバンストコース 68
- 69. dict型
•
他の言語では「ハッシュ」や「連想配列」と 呼ばれる型
•
keyとvalueの組が格納される
•
keyを指定してvalueにアクセスする
>>> a = {"name": "Tom", "age": 20}
>>> a["name"]
'Tom'
2014/9/1 H26年度オープンハウス・アドバンストコース 69
- 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. 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. dict型
>>> len(a)
3
>>> a.keys() # 全てkeyを返す
["job", "age", "name"] #結果はlist
>>> a.values() # 全てのvalueを返す
["student", 20, "Ken"] # 結果はlist
2014/9/1 H26年度オープンハウス・アドバンストコース 72
- 73. dict型
>>> len(a)
3
>>> a.keys() # 全てkeyを返す
["job", "age", "name"] #結果はlist
>>> a.values() # 全てのvalueを返す
["student", 20, "Ken"] # 結果はlist
2014/9/1 H26年度オープンハウス・アドバンストコース 73
- 76. ファイルから入力
•
一度にファイル内容全てを読み出す
fin.read()
•
一行ずつ読み出す
fin.readline()
•
各行をlistの要素として一度に全て読み出す
fin.readlines()
2014/9/1 H26年度オープンハウス・アドバンストコース 76
- 77. ファイルから入力
•
for文によるアクセスも可能(1行ずつ)
>>> fin = open("file.txt", "r")
>>> for line in fin:
... print line.strip()
2014/9/1 H26年度オープンハウス・アドバンストコース 77
str.strip()
文字列両端の空白文字 (スペースや改行) を取り除くstr型のメソッド
- 78. 標準入力
•
組み込みモジュールsysをimportする
•
sys.stdinが標準入力を表す
•
ファイルオブジェクトと同様にアクセス可能
>>> import sys
>>> text = sys.stdin.read()
2014/9/1 H26年度オープンハウス・アドバンストコース 78
- 79. 標準出力
•
print文を利用
>>> a = "Hello"
>>> b = "World"
>>> print a, b # ,(カンマ)区切り
'Hello World'
2014/9/1 H26年度オープンハウス・アドバンストコース 79
- 80. 標準出力
•
print文を利用
>>> a = "Hello"
>>> b = "World"
>>> print a, b # ,(カンマ)区切り
Hello World
2014/9/1 H26年度オープンハウス・アドバンストコース 80
- 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. 標準出力
•
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
- 84. その他の機能
•
その他にもできることは沢山ある
–
乱数,数学関数,正規表現等
•
なにか欲しい機能があったら
–
TAに聞いてみる
–
公式ドキュメントを調べる
•
http://docs.python.jp/2/
2014/9/1 H26年度オープンハウス・アドバンストコース 84