python begin

49
PYTHON でなにできんの? twitter: @ashigirl96 あしがる96 1 13426日金曜日

Upload: reon-nishimura

Post on 27-Jul-2015

509 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Python begin

PYTHON でなにできんの?twitter: @ashigirl96 

あしがる96

113年4月26日金曜日

Page 2: Python begin

スクリプト言語

文法が簡単で、読みやすい

モジュールやドキュメントが豊富

やりたいと思うことが(他の言語に比べて)すぐに出来てしまう(かもしれない)

そもそもPythonってなに?

213年4月26日金曜日

Page 3: Python begin

事前事項

※別に他の言語をdisったりしてるわけではないのでご了承ください。

権力とかマジこわいんで・・・。

313年4月26日金曜日

Page 4: Python begin

PYTHONの紹介

Pythonは オランダ人のすごい人が作りました

彼はPython を 万人が使えるためにした(らしい)

Pythonの目標 :  簡易で直感な言語で、主要言語と同程度の強力  オープンソースで誰もが開発可  平易な英語のようにわかりやすい  開発時間を極力短くする                     らしい

413年4月26日金曜日

Page 5: Python begin

(続き)

Pythonは ぱいそん と呼びます

Pythonを使ってる人を Pythonista と呼びます (ダサくないです)

Python は ニシキヘビ って意味です

513年4月26日金曜日

Page 6: Python begin

インストールしようぜ!

http://www.python.org/download/

OSにあわせてNE !!

613年4月26日金曜日

Page 7: Python begin

そろそろ本題に。

713年4月26日金曜日

Page 8: Python begin

機械語へ変換する手順を省略して実行出来る言語

スクリプト言語って?

813年4月26日金曜日

Page 9: Python begin

それでは、

コンパイル言語 と スクリプト言語 を比較します。

  コンパイル言語は 機械語になおしてから実行します。速いです。

  コンパイル言語で有名なのは C言語(様)です。

913年4月26日金曜日

Page 10: Python begin

 1 #include<stdio.h> 2  3 int main(void) 4 { 5   int a; 6   char b[]={"@Ashigirl96"}; 7   printf("Hello World\n"); 8   a=100; 9   printf("%d\n%s\n",a,b);10   11   return 0;12 }

C言語 (様)

1013年4月26日金曜日

Page 11: Python begin

実行結果 と その行程

ashigirl96% vim c.c [~/Desktop]ashigirl96% gcc c.c [~/Desktop]ashigirl96% ./a.out [~/Desktop]Hello World100@Ashigirl96

1113年4月26日金曜日

Page 12: Python begin

Python (さん)

1 b="@Ashigirl96"2 print "Hello World"3 a=1004 print "%d\n%s"%(a,b)

寂しい

1213年4月26日金曜日

Page 13: Python begin

実行結果 と その行程

ashigirl96% vim c.py [~/Desktop]ashigirl96% python c.py [~/Desktop]Hello World100@Ashigirl96

1313年4月26日金曜日

Page 14: Python begin

他にも

 1 #include<stdio.h> 2  3 int main(void) 4 { 5   int i; 6   for(i=0;i<10;i++){ 7     printf("Hello World\n"); 8   } 9   while(i != 20){10     printf("@ashigirl96\n");11     i+=1;12   }13   return 0;14 }15 

1 for i in range(10):2     print "Hello World"3 while i!=20:4     print "@ashigirl96"5     i+=16 

C言語(様) Python

1413年4月26日金曜日

Page 15: Python begin

実行結果Hello World

Hello World

Hello World

Hello World

Hello World

Hello World

Hello World

@ashigirl96

@ashigirl96

@ashigirl96

@ashigirl96

@ashigirl96

@ashigirl96

@ashigirl961513年4月26日金曜日

Page 16: Python begin

某サイトの某問題

 1 z=lambda:raw_input().split() 2 while True: 3     t={} 4     c=input() 5     if c==0:break 6     for i in range(c): 7         f,q=z() 8         t[f]=int(q) 9     for i in range(input()):10         f=z()11         m=sum([t[j] if j in t else 0 for j in f[2:]])12         q=t[f[0]]13         t[f[0]]=q if m>q else m14     print t[raw_input()]

C言語(様) Python

1 #include <map> 2 #include <iostream> 3 #include <vector> 4 using namespace std; 5 map<string,int> item; 6 map<string,vector<string> > rec; 7   8 int saiki(string str){ 9     int ret = 0;10     if(rec[str].size()){11         for(int i=0;i<rec[str].size();i++){12             ret += saiki(rec[str][i]);13         }14     }else{15         ret=item[str];16     }17     if(item[str]&&item[str]<ret)ret=item[str];18     return ret;19 }20  21 int main(){22     int n,m,t;23     string s,rs;24     while(cin >> n && n){25         item.clear();26         rec.clear();27         for(int i=0;i<n;i++){28             cin >>    s;29             cin >> item[s];30         }31         cin >> m;32         for(int i=0;i<m;i++){33             cin >> rs >> t;34             for(int j=0;j<t;j++){35                 cin >> s;36                 rec[rs].push_back(s);37             }38         }39         cin >> s;40         cout << saiki(s) << endl;41     }42 }

1613年4月26日金曜日

Page 17: Python begin

ちなみに、

さっきの問題を(C言語で)解いたのは 我らプロ研の誇りである

   『世界一』の人(部長)。

Pythonで解いたのは僕です。

1713年4月26日金曜日

Page 18: Python begin

( ˘⊖˘)。o(C言語って長いし、

  何書いてるか分かりづらいな。)

1813年4月26日金曜日

Page 19: Python begin

コレは何の言語ですか?

おぃ!てめぇ!

何C言語 disってんだよ!

例が悪いんだよ殺すぞ!

1913年4月26日金曜日

Page 20: Python begin

殺すぞ。

2013年4月26日金曜日

Page 21: Python begin

※申し訳ねぇ。

Pythonが良いように書きました。

殺さないでください。

2113年4月26日金曜日

Page 22: Python begin

じゃあ見やすいのか。

理由 オブジェクト指向だから。

2213年4月26日金曜日

Page 23: Python begin

オブジェクト指向とは

設計や開発で、操作手順より操作対象に重点を置く考え方。

データの集合とそれに対するメソッドを『オブジェクト』として、まとめて、

  組み合わせて何かを作る指向。

2313年4月26日金曜日

Page 24: Python begin

よは、

車を作るには、

・タイヤ

・ハンドル

・ボディ

・エンジン

・.etc

   っていう部品(メソッド)で組み合わせて作ろうぜ? っていう指向。

2413年4月26日金曜日

Page 25: Python begin

よって、

見やすい

部品(メソッド)で見れるから、組み合わせを変えたら違うものができたり。

2513年4月26日金曜日

Page 26: Python begin

オブジェクト指向の言語

Pythonは オブジェクト指向の代表的な言語ですが、

他にも Ruby , Perl , Objective-C , C# などなどたくさんあります!!

2613年4月26日金曜日

Page 27: Python begin

インタプリタに話題転換

2713年4月26日金曜日

Page 28: Python begin

インタプリタってなんぞ?

ソースコードなしで、実行可!! 1.ソースコードを直接実行する 2.何らかの効率で中間表現にかえ、即座に実行 3.コンパイル済みの中間表現を実行!

例をみよう。

2813年4月26日金曜日

Page 29: Python begin

ashigirl96% python [~/Desktop]

Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin

Type "help", "copyright", "credits" or "license" for more information.>>> for i in range(3):

... print i,'Hello World'

...

0 Hello World1 Hello World

2 Hello World

Python って入れてみ

2913年4月26日金曜日

Page 30: Python begin

>>> a = raw_input().split()100 3000 hoge 340023 asldkfja>>> print a['100', '3000', 'hoge', '340023', 'asldkfja']>>> print a[0]'100'>>> a[1]'3000'>>> a[2]'hoge'>>> a[3]'340023'>>>

print はなくても良い

3013年4月26日金曜日

Page 31: Python begin

すっごい楽(しい)やろ?

3113年4月26日金曜日

Page 32: Python begin

おもんない。話題変えろ

3213年4月26日金曜日

Page 33: Python begin

例えば、

奇数の配列(リスト)作る。

『for文で 整数 i を10回まわす、

そのとき i%2(iを2で割った余)が ゼロでない場合の i だけリストに入れる』

Pythonがどれぐらい英語っぽいか

>>>print [i for i in range(10) if i%2 is not 0][1, 3, 5, 7, 9]>>>

3313年4月26日金曜日

Page 34: Python begin

続き

もし 文字列に “kyuri” が入っていたら、配列(リスト)から取り除く。

>>> LIST = ['kyuridenamida' , 'homodenamida' , 'kyuri ha sekai iti', 'homo ha sekai iti' , 'butyoukyuri' , 'tatarikun' , 'mossan' ]>>> print [i for i in LIST if 'kyuri' not in i]['homodenamida', 'homo ha sekai iti', 'tatarikun', 'mossan']>>>

これ

3413年4月26日金曜日

Page 35: Python begin

ところで、

3513年4月26日金曜日

Page 36: Python begin

どうせ、お前も、厨二病だろW

3613年4月26日金曜日

Page 37: Python begin

ブラッディ・マンデイもPYTHONを使ってるよ

3713年4月26日金曜日

Page 38: Python begin

あっそ。話題変えろ

3813年4月26日金曜日

Page 39: Python begin

PYTHONで何ができるのか。

3913年4月26日金曜日

Page 40: Python begin

Scapyをやりましょう

Scapyってなに?

http://www.slideshare.net/reonnishimura5/scapy-presentation-16806081←解説してます(ごめんなさい

Scapyは Pythonによって作られた パケット生成ツール

ネットワークについて勉強したい人は必ずやっておくべきです!!

ネットワーク興味ある方

4013年4月26日金曜日

Page 41: Python begin

こういう感じのやつです。

4113年4月26日金曜日

Page 42: Python begin

Pythonでバイナリ解析できるらしいです。

結構知識が必要です、めっちゃ必要です。けど楽しいです。

⬇この本が良いです。僕は今の所(理解して)読めないです。

リバースエンジニアリング ―Pythonによるバイナリ解析技法 (Art Of Reversing) 

セキュリティに興味ある方

4213年4月26日金曜日

Page 43: Python begin

こういう感じのやつです。

4313年4月26日金曜日

Page 44: Python begin

Google App Engine っていうGoogleが提供してるサービスで、

 Python,Java,Goなどの言語で、作ることが出来ます。

Python用SDK(ソフトデベロップキット)などもあるので、

 調べてみたら簡単に作れると思います。

Webアプリ制作に興味ある方

4413年4月26日金曜日

Page 45: Python begin

Django っていうPythonのwebフレームワークがあります。

簡単に好きなサイトが作れてしまいます。

開発やテスト用の軽量サーバなども提供されてます。

データベースの言語も色々使えて便利です。

Webサイトに興味ある方

4513年4月26日金曜日

Page 46: Python begin

Pygame を調べてみましょう

ビデオゲームを作るために制作されたモジュールのことです。

チュートリアル(説明)がたくさんあるので、勉強しやすいです。

ゲーム制作に興味ある方

4613年4月26日金曜日

Page 47: Python begin

こういう感じのやつです。

http://www.pygame.org/project-Spacemax-1698-3491.html

4713年4月26日金曜日

Page 48: Python begin

このようにたくさんできることがあります。もしなにからしていいかわからない。

けどプログラミングしたい。そんな方はPYTHONがおすすめです。

4813年4月26日金曜日

Page 49: Python begin

ご清聴ありがとうございました!

4913年4月26日金曜日