Python超入門 久保 幹雄 東京海洋大学.

Slides:



Advertisements
Similar presentations
ゲームプログラミング講習 第2章 関数の使い方
Advertisements

サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
ヒトの思考プロセスの解明を目的とするワーキングメモリの研究
第27講 オームの法則 電気抵抗の役割について知る オームの法則を使えるようにする 抵抗の温度変化を理解する 教科書P.223~226
コラッツ予想の変形について 東邦大学 理学部 情報科 白柳研究室 山中 陽子.
コンパイラ 第3回 字句解析 ― 決定性有限オートマトンの導出 ―
第5章 家計に関する統計 ー 経済統計 ー.
公共財 公共経済論 II no.3 麻生良文.
VTX alignment D2 浅野秀光 2011年12月15日  放射線研ミーティング.
冷却フランシウム原子を用いた 電子の永久電気双極子能率探索のための ルビジウム磁力計の研究
生命情報学 (8) スケールフリーネットワーク
前半戦 「史上最強」風 札上げクイズ.

認知症を理解し 環境の重要性について考える
フッ化ナトリウムによる洗口 2010・9・13 宮崎市郡東諸県郡薬剤師会 学校薬剤師  日高 華代子.
食品の安全性に関わる社会システム:総括 健康弱者 ハイリスク集団 HACCP (食肉処理場・食品工場) 農場でのQAP 一般的衛生管理
規制改革とは? ○規制改革の目的は、経済の活性化と雇用の創出によって、   活力ある経済社会の実現を図ることにあります。
地域保健対策検討会 に関する私見(保健所のあり方)
公共政策大学院 鈴木一人 第8回 専門化する政治 公共政策大学院 鈴木一人
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
平成26年度 呼吸器学会からの提案結果 (オレンジ色の部分が承認された提案) 新規提案 既収載の変更 免疫組織化学染色、免疫細胞化学染色
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
自動吸引は 在宅を変えるか 大分協和病院 院長         山本 真.
毎月レポート ビジネスの情報 (2016年7月号).
医療の歴史と将来 医療と医薬品産業 個人的経験 3. 「これからの医療を考える」 (1)医薬品の研究開発 -タクロリムスの歴史-
社会福祉調査論 第4講 2.社会調査の概要 11月2日.
2015年12月28日-2016年3月28日 掲載分.
2010度 民事訴訟法講義 補論 関西大学法学部教授 栗田 隆.
腫瘍学概論 埼玉医科大学国際医療センター 包括的がんセンター 緩和医療科/緩和ケアチーム 奈良林 至
“企業リスクへの考え方に変化を求められています。 トータルなリスクマネジメント・サービスをプロデュースします。“
情報漏えい 経済情報学科 E  西村 諭 E  釣 洋平.
金融班(ミクロ).
第11回 2009年12月16日 今日の資料=A4・4枚+解答用紙 期末試験:2月3日(水)N2教室
【ABL用語集】(あいうえお順) No 用語 解説 12 公正市場価格 13 債権 14 指名債権 15 事業収益資産 16 集合動産 17
基礎理論(3) 情報の非対称性と逆選択 公共政策論II No.3 麻生良文.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
COPYRIGHT(C) 2011 KYUSHU UNIVERSITY. ALL RIGHTS RESERVED
Blosxom による CMS 構築と SEO テクニック
記入例 JAWS DAYS 2015 – JOB BOARD 会社名 採用職種 営業職/技術職/その他( ) 仕事内容 待遇 募集数
ネットビジネスの 企業と特性 MR1127 まさ.
Future Technology活用による業務改革
ネットビジネス論(杉浦) 第8回 ネットビジネスと情報技術.
g741001 長谷川 嵩 g740796 迫村 光秋 g741000 西田 健太郎 g741147 小井出 真聡
自然独占 公共経済論 II no.5 麻生良文.
Autonomic Resource Provisioning for Cloud-Based Software
Webショップにおける webデザイン 12/6 08A1022 甲斐 広大.
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
【1−1.開発計画 – 設計・開発計画】 システム開発計画にはシステム開発を効率的、効果的に実行する根拠(人員と経験、開発手順、開発・導入するシステム・アプリケーション・サービス等)を記述すること。 システム開発の開始から終了までの全体スケジュールを記載すること。 アプリケーション機能配置、ソフトウェア、インフラ構成、ネットワーク構成について概要を示すこと。
6 日本のコーポレート・ガバナンス 2008年度「企業論」 川端 望.
急成長する中国ソフトウェア産業 中国ソフトウェアと情報サービス産業の規模 総売上高は5年間で約5.3倍の成長
米国ユタ州LDS病院胸部心臓外科フェローの経験
公益社団法人日本青年会議所 関東地区埼玉ブロック協議会 JCの情熱(おもい)育成委員会 2011年度第1回全体委員会
次世代大学教育研究会のこれまでの活動 2005年度次世代大学教育研究大会 明治大学駿河台校舎リバティタワー9階1096教室
子どもの本の情報 大阪府内の協力書店の情報 こちらをクリック 大阪府内の公立図書館・図書室の情報
第2回産業調査 小島浩道.
〈起点〉を示す格助詞「を」と「から」の選択について
広東省民弁本科高校日語専業骨幹教師研修会 ①日本語の格助詞の使い分け ②動詞の自他受身の選択について   -日本語教育と中日カルチャーショックの観点から- 名古屋大学 杉村 泰.
■5Ahバッテリー使用報告 事例紹介/東【その1】 ■iphon4S(晴れの昼間/AM8-PM3) ◆約1時間で68%⇒100%
『ワタシが!!』『地域の仲間で!!』 市民が始める自然エネルギー!!
ポイントカードの未来形を形にした「MUJI Passport」
SAP NetWeaver を支える Microsoft テクノロジーの全貌 (Appendix)
ガイダンス(内業) 測量学実習 第1回.
熱力学の基礎 丸山 茂夫 東京大学大学院 工学系研究科 機械工学専攻
京都民医連中央病院 CHDF学習推進委員会
資料2-④ ④下水道.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
コンピュータの構造2 (OSとアプリケーション)
Presentation transcript:

Python超入門 久保 幹雄 東京海洋大学

“Hello, world!” “Hello, world!”と出力するプログラム C++版(この講義では覚える必要なし!) #include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; } Python版 print "Hello, world!"

インデント(字下げ)が重要 Pythonではインデント(字下げ)によって,実行文をグループ化をする! if (x > 1) { y=x+1; (行儀の悪い)C++ z=x+y; } else { y=0; z=0; } if x > 1: Pythonだと誰でも y=x+1 z=x+y else: y=z=0 この高さ(インデント)がそろっていないとエラーする!

Pythonをお薦めする訳 キーワード(覚えるべき予約語)が30程度と圧倒的に少ない. 字下げの強要で,誰でも読みやすいプログラム 短時間で開発可能(行数が短く,モジュール豊富) 変数の宣言必要なし インタープリタ(コンパイルする必要なし) メモリ管理も必要なし 多くのプラットフォームで動作(Windows, Mac, Linux) オブジェクト指向(すべてがオブジェクト) しかもフリーソフト

データ型 (1) 標準型 整数型: 32ビットで表現される範囲の整数 長整数型:無限長の整数; 1324L と L を付けて書く. ブール型:真(True)もしくは偽(False) 浮動小数点数型:倍精度の小数; 5.4 や 1.0 文字列型:文字から成る(不変)順序型; ”abcd”,’CDEF’

データ型 (2) 複合型 リスト(list):任意の要素から成る(可変)順序型;[1,2,3,”a”], [1,”b”, [2,3,”c”] ] タプル(tuple):任意の要素から成る(不変)順序型;(1,2,3,”a”), ( (1,2), (2,”f”,”g”)) 辞書(dictionary): キー(key)と 値(value)の組(key:value)から構成される(可変)マップ型 { "Mary": 126, "Jane": 156} 集合(set):集合を表現する型.

数と型変換 変数の型(type)を調べるには type(引数) 型を変換するには: type(124) type(3.1415) 整数型 int(引数) 長整数型 long(引数) 浮動小数点型 float(引数) int(3.14) long(3.14) float(3) type, int, long, floatは,関数(function)といって,何かを入れると,何かを返すプログラムの部品; 入力するものを引数 出力は返値

ブール型・文字列と型変換 変数の型(type)を調べるには type(引数) 型を変換するには: type(True) type(“Hello”) 型を変換するには: ブール型 bool(引数) 0はFalse,それ以外はTrue 文字列 str(引数) bool(3.14) bool(0) bool(“0”) str(3+5) str(True)

文字列(1) ‘abc’ や “abc” や """ 解を評価する関数.以下の値を返す. - 目的関数値 - 実行可能解からの逸脱量 """ とクォート(’)で囲んで記述 トリプルクォート( """ )は複数行も可

a b c d 文字列(2) x[0] x[1] x[2] x[3] 順序型 (添え字は 0から始まる) x= “abcd” に対して,x[1] は “b” を返す. a b c d x[0] x[1] x[2] x[3]

a b c d スライス表記(1) x[0] x[1] x[2] x[3] スライス表記 (slicing)   i:j は i≦k<j なる整数k iの省略は先頭,jの省略は最後 x= “abcd” に対して,x[1:3] は “b,c”, x[1:]は “bcd” a b c d x[0] x[1] x[2] x[3]

a b c d スライス表記(2) x[0] x[1] x[2] x[3] 文字列の長さは,関数 len()   x[i:j] の長さ len(x[i:j]) は j-I に等しい 末尾からの添え字:最後の文字は x[-1] 添え字(インデックス)は区間の間の数字と考える 1 2 3 4 a b c d -4 -3 -2 -1 x[0] x[1] x[2] x[3]

リストと辞書の導入のための絵本 パイソンくんは,とてもだらしない性格です. いつもおもちゃをかたづけられないので, お母さんにおこられています. 「どうやったらきちんとかたづけられるようになるのかな?」

そのときです.空からへびの神様の声が聞こえてきました. 「リストを使うのじゃ.リストのおまじないは L= [ ] じゃ. 」 パイソンくんが,教わったおまじないを唱えると,あらふしぎ. 空から箱が落ちてきました. 「その箱におもちゃを入れて片付けるのじゃ.」

神様は続けました. 「その箱におもちゃを入れて片付けるのじゃ.」 パイソンくんは言われたとおり箱におもちゃを入れました. するとどうでしょう. あのちらかっていた部屋が たちまちきれいに整頓されました. くまさん(Teddy)を出すにはには L[3] とするだけでOKです.

「でも,これじゃおもちゃをどこにしまったか忘れちゃう.」 パイソンくんのつぶやきに,神様は答えました. 「ソートメソッドを使うのじゃ.おまじないは .sort()じゃ」 パイソンくんが教わったおまじないを唱えるとあらふしぎ. おもちゃたちがアルファベット順に並んだではありませんか.

実はパイソンくんはとてもせっかちです.さらに神様に要求しました. 「でも,ほしいおもちゃはすぐ使えないと困るな.」 神様は答えました. 「辞書を使うのじゃ.おまじないは D={ }じゃ」 パイソンくんが教わったおまじないを唱えるとあらふしぎ. おもちゃと名前を書いた紙がひもでつながって,ひもを引いただけで おもちゃが取り出せるようになりました.

リストと辞書とおかげでパイソンくんは,とても整理上手になりました. 「へびの神様ありがとう.」 パイソンくんは大好きなおもちゃに囲まれて,幸せに暮らしましたとさ.

リスト (1) リスト(list):任意の要素から成る順序型 [1,2,3,”a”],[“a”,[“b”,5,5],”c”] と角括弧 [] の中にカンマ区切りで入力 可変(mutable; 変更可能):中身を変更できる. L=[1,1,5,4] に対して L[1]=100とすると L=[1,100,5,4] スライス表記を用いた代入 L=[1,1,5,4] に対して L[1:3]=[100,200,300] とするとL=[1,100,200,300,4] (長さも増える)

リスト (2) リスト L=[1,1,5,4] に対するメソッド ( .の後ろにキーワードを記述する操作) L.count(x):L内での xの生起回数を返す. L.count(1) -> 2 L.index(x):L内で xが最初に発生する添え字を返す. L.index(5) -> 2 L.reverse():Lを逆順にする. L.reverse() -> L=[4,5,1,1] L.sort(): L を小さい順に並べ替える. L.sort()-> L=[1,1,4,5]

辞書 辞書(dictionary): キー(key)と値(value)の組から構成されるマップ型 波括弧 { }の中にカンマに区切って (キー: 値 ) を入力 D={ "Mary": 126, "Jane": 156, "Sara": 170} キーを使って値を取り出す. D[“Sara”] は170を返す. 可変(mutable): D[“Sara”]=130 とすると辞書が変更される. { "Mary": 126, "Jane": 156, "Sara": 130}

タプル タプル(tuple;組):任意の要素から成る順序型 a,b とカンマで区切るか,丸括弧に入れて(1,2,3,”a”)と記述.入れ子でタプルを定義するときには,括弧は必須 T= ((1,5),("a","b",6)) 不変(immutable):中身の交換はできない. タプルを使った交換 a,b = b,a

集合 要素の重複を削除したり,和集合(union),共通部分(intersection),差集合(difference),対称差集合(symmetric difference)などの集合に対する演算を行うときに用いられる型 可変(変更可能な)型であるset 不変(変更不能な)型であるfronzenset 文字列やリストからset(文字列,リスト)で生成できる.

演算子 (1) 加算,乗算は文字列,リストにも適用可能. 演算の優先順序 比較演算子 括弧 () べき乗(指数演算)** 乗算 * もしくは除算 / 加算 + もしくは減算 - の順 比較演算子 <= は以下 >= は以上 == は等しい != は等しくない

演算子 (2) リストの要素 ブール演算子 (1<4) or (5<4) in はリスト(文字列,辞書,集合など)の要素であるとき真 not in はリストの要素でないとき真 ブール演算子 and は論理積 or は論理和 (1<4) or (5<4) (“a” in “banana”) and (“c” in [1,5,”c”])

If と else文 条件分岐に用いる. if 条件文: 「・・・せよ」(条件文が真のときに実行される命令) else: 「・・・せよ」(条件文が偽のときに実行される命令) 例 if x<0: print “赤字だよ!” print “なんとかなるさ! ”

for文 反復のための基本 リストや辞書などの反復可能な型を用いる. for 反復ごとに代入される変数 in リスト: 繰り返ししたい命令 i ≦k < j を満たす整数 kから成るリストを返す関数range(i,j)を用いる. range(i)は 0からi-1までのリスト 例:0,1,2,3,4を出力 for x in range(5): print x

リスト内包表記 リスト内包表記(list comprehension) リストの中にfor文を書き,リストを反復生成する. [ (x,x**2,2**x) for x in range(5)] 結果 [(0, 0, 1), (1, 1, 2), (2, 4, 4), (3, 9, 8), (4, 16, 16)] から成るタプルのリストの生成

反復を入力としたその他の関数 リスト内包表記のように,反復を入力とし, 1つの値を返す関数: sum, min, max 例  リスト内包表記のように,反復を入力とし, 1つの値を返す関数: sum, min, max 例 sum(x for x in range(11)) 結果 55

while文 条件を満たす間は繰り返す while 真のときに繰り返しを行う文: 繰り返ししたい命令 例: 変数 x が正の間だけ 2*x を出力 x=10 while x>0: print 2*x x =x-1

breakとcontinue 反復の途中で抜けるためのキーワード break:反復から抜ける. continue:次の反復処理に飛ばされる. 例: 変数 x が正の間だけ 2*x を出力 x=10 while True: print 2*x x =x-1 if x<=0: break

for-else文 forやwhileの直後のelseブロックが実行される. 例 y=11 for x in range(2,y): forやwhileのループの中で,breakで抜けないときに, forやwhileの直後のelseブロックが実行される. 例 y=11 for x in range(2,y): if y % x==0: break else: print "素数だよ!"

関数 関数の作成 def 関数名(引数): 関数内で行う処理 (return 返値) 例:文字列を合体し,3回繰り返したものを返す. def concatenate3(a,b): c=a+b return 3*c concatenate3(“a”,“b”)と呼び出すと,ababab が返される.

再帰 (1) 関数内で自分自身を呼び出し 例:階乗の計算 n! =n×(n-1) ×・・・×2×1 n!=n × (n-1)! (初期条件 0!=1) と再帰的に定義 def factorial(n): if n==0: return 1 else: return n*factorial(n-1)

再帰 (2) 例:フィボナッチ数 F(0)=1, F(1)=1, F(n)=F(n-1)+F(n-2) def fibonacci (n): if n == 0 or n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2)

組み込み関数 set(), list() も組み込み関数 list(“kuma”) は [‘k’, ‘u’, ‘m’, ‘a’] を返す. 関数 sorted() は昇順に並べ替えた結果を返す. 例 sorted([6,2,4,5,4]) 結果 [2, 4, 4, 5, 6]

モジュール モジュール プログラムを分割して「ファイル名.py」のファイルに保管したもの.他のプログラムから呼び出して使う. 方法1:モジュールの読み込み import ファイル名 例:平方根の印刷(数学モジュールmathの読み込みと,その中の平方根関数 sqrt()の利用) import math print math.sqrt(2) 方法2:モジュール内の関数の読み込み from ファイル名 import 関数名 (もしくはワイルドカード *) from math import * print sqrt(2)

擬似乱数発生モジュール 擬似乱数発生モジュール random の主要関数 seed(x): xを用いて乱数の初期化を行う.x を省略した場合には現在のシステム時間で初期化される. random(): [0.0, 1.0) の一様ランダムな浮動小数点型の数を返す. 例:random() -> 0.48777947886 randint(i,j): 整数 i,j に対して i ≦k <=j の一様ランダムな整数 k を返す. 例:randint(-5,1) -> -3 shuffle(L): リストLを順序をランダムに混ぜる. 例: L=[1,2,3,4], shuffle(L) -> L=[4, 1, 3, 2] choice(L): リストLからランダムに1つの要素を選択する. 例: L=[1,2,3,4], choice(L) -> 3

クラス 組み込み型:整数,文字列,リストなど ユーザーが設計する型,C言語の構造体 class クラス名: 中身

座標を保管するクラス 例: class Point: “ 2次元の座標を保管するためのクラス” # Pointクラスのインスタンスの生成 p1=Point() #座標を表すx,y属性に値を代入 p1.x =100 p1.y =200

self は自分自身(クラスのインスタンス) メソッド (1) メソッド:クラス内に記述された関数 class Point: def printMe( self ): print self.x, self.y p1=Point() p1.x=100 p1.y=200 p1.printMe() メソッドの最初の引数は self self は自分自身(クラスのインスタンス) クラスを生成するときには self は省略

self は自分自身(クラスのインスタンス) メソッド (2) 座標を移動させるメソッド move class Point: def move( self, right, up ): self.x +=right self.y +=up p1=Point() p1.x=100 p1.y=200 p1.move(10,20) p1.printMe() メソッドの最初の引数は self self は自分自身(クラスのインスタンス)

コンストラクタなどの特別なクラスは アンダースコア2回(_ _ )で挟んで記述 コンストラクタ:インスタンスが初めて作られたときに呼ばれるメソッド 最初にかならずx,y座標を入力 class Point: _ _init_ _ (self, x,y): self.x = x self.y = y p1=Point(100,200) コンストラクタなどの特別なクラスは アンダースコア2回(_ _ )で挟んで記述 クラスを生成するときには self は省略

__str__ インスタンスの文字列としての表現を返す class Point: _ _str_ _ (self): return "("+str(self.x)+","+str(self.y)+")" p1=Point(100,200) print p1 >> (100,200)

__add__ インスタンスに対して加算(+)が行われたときに呼び出されるメソッド.第1引数は自分自身(self),第2引数が加算される対象 class Point: _ _ add_ _ (self, other): return Point(self.x+other.x,self.y+other.y) p1=Point(100,200) p2=Point(10,20) print p1+p2 >> (110,220)