Slide 1

Slide 1 text

Raspberry pi 講習会 Part2.5 : 初めてのpython 2018年1⽉9⽇ B2 ⼩野輝也

Slide 2

Slide 2 text

今⽇の予定 1. とりあえずPythonをインストール 2. シェル、rootについて 3. プログラミング⾔語いくつ知ってる︖ 4. Python3に⼊⾨しよう

Slide 3

Slide 3 text

Python3をインストール 時間がかかるので先にこっちをやる。 インストールを待ってる間に⾊々説明 https://gist.github.com/dschep/24aa61672a2092246eaca282 4400d37f

Slide 4

Slide 4 text

https://gist.github.com/dschep/24aa61672a2092246eaca2824400d37f を⾒ながら進めよう。 $ sudo apt update $ sudo apt install build-essential tk-dev libncurses5-dev libncursesw5- dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl- dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev $ wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz $ tar xf Python-3.6.0.tar.xz $ cd Python-3.6.0 $ ./configure $ make $ sudo make altinstall wgetコマンド︓webからダウンロード makeコマンド︓ソフトウェアのビルド つまりコンパイル&ライブラリのリンク

Slide 5

Slide 5 text

シェルスクリプトのシェルとは • シェル(shell)とは、OSの⼼臓部(カーネルという)とユー ザーの橋渡しとなるプログラムである。 OSカーネル シェル ユーザー ユーザーとの 対話能⼒を持 たない ユーザーからの コマンドを解釈 してOSに引き渡 す。 僕たち ls 3e 29 ea … 4a 8b 3c … lchika.sh タ | ミ ナ ル ソ フ ト

Slide 6

Slide 6 text

rootについて さっきからスドスド何なんだよ︕︕︕︕と思っている頃かな︖ n Linuxにはデフォルトでrootというユーザが⽤意されている。 n rootはいわゆる「管理者」。windowsではadministratorという。 n rootはLinuxにおける全知全能の神。なんでもできる。

Slide 7

Slide 7 text

rootについて 全部rootで操作すればいいんじゃないの︖ n ⼤事なファイルをミスって削除したらRPIが起動しな いかも n セキュリティ的に良くない

Slide 8

Slide 8 text

rootについて ならrootじゃないといじれないファイルはどうするのか n そんな時にはコマンドの前にsudo(superuser do) をつける。 n $ sudo nano hogehoge n 普通はsudo付きでコマンド実⾏しようとするとパ スワード⼊⼒が求められる・・・。

Slide 9

Slide 9 text

CUIのメリット CUIでしか動作しないソフトウェアは⼭のようにある u プログラミング関係は特にそう。 u マニュアルにも「コマンド使えて当然でしょ︖」と⾔わんばかりに 環境構築⽅法などが書いてある。

Slide 10

Slide 10 text

CUIのメリット 2 ・⼀括操作、連続実⾏などが⼀瞬で終わる。 u 1000個のファイルから各10個ずつあるjpgとtxtとpptだけ抜き出し てzipにするとか u 毎⽇午前3時にバックアップを取るとか u pdfをまとめてダウンロードするとか

Slide 11

Slide 11 text

プログラミング言語、いくつ知ってる?

Slide 12

Slide 12 text

C⾔語 u古くからある伝統的な⾔語。 u速くて軽い。 u主にハードウェア制御(低レイヤ)に使われる。 u情エレ2年は授業でやります。

Slide 13

Slide 13 text

C++ uこちらも伝統がある. uCの進化版 u⾔語仕様全て理解してる奴マジで0⼈説が有⼒ u⿊魔術の1つでもある。

Slide 14

Slide 14 text

Java uモバイルアプリ(Android)やwebアプリ、業務シ ステムなど幅広く使われている。 u⼤規模で堅牢なシステムを構築するのに向いて いる。

Slide 15

Slide 15 text

コンパイラ型⾔語 コンパイルが必要な⾔語をコンパイラ型⾔語という。 先にあげた3つの⾔語はコンパイラ型⾔語の代表格

Slide 16

Slide 16 text

Python u直感的で理解しやすい⽂法 uweb、⼈⼯知能、科学計算など幅広い分野で活 ⽤されている。 u今最もアツい⾔語

Slide 17

Slide 17 text

JavaScript uwebページの修飾が主な⽬的 uフロントエンド界のスター u最近はnode.jsというやべー奴が流⾏っている。 uJavaと混同すると⼈権が剥奪されることが憲法 に明記されている。

Slide 18

Slide 18 text

PHP uサーバーサイド記述⾔語 u割と簡単にwebアプリケーションプログラムが書ける。

Slide 19

Slide 19 text

インタプリタ型⾔語 インタプリタ 実⾏と同時に逐⼀プログラムを解釈して機械語に変換する。 同時翻訳機のようなもの。 先ほどの3つの⾔語はインタプリタ型⾔語。 ⼀般的にコンパイラ型に⽐べて動作が遅いもののお⼿軽。

Slide 20

Slide 20 text

Python3に⼊⾨しよう。 今回はこれらの有名⾔語の中からPython3に⼊⾨しよう。 Pythonをマスターしたら年収5000兆円も夢じゃない︕︕︕

Slide 21

Slide 21 text

Pythonの特徴 n Python2系とPython3系があり、それらに互換性がない。 n コマンドラインからでも操作できる(お⼿軽︕︕) n 豊富な標準ライブラリ(Cでいう標準関数) n 外部からライブラリ(プログラムの部品となるもの)をインス トールすることが多い。

Slide 22

Slide 22 text

さあPython3のインストールだ︕︕︕ 本来、Pythonを使うにはwebからインタプリタや標準ライブラリを インストールしなければならない。 しかし、ラズパイにはPython2が最初からインストールされている。 $ python --version python 2.7.9 ただし、Python3は⼊ってないので、これからインストールします。 (プリインストールされているバージョンもあります。) インストールされてるかな︖と思ったら --versionオプションを試してみる

Slide 23

Slide 23 text

パッケージとは︖ ソフトウェアを1つの製品としてまとめたもの ⼤抵2つ以上のファイルから構成される これらを探したり、依存ライブラリを調べたりするのは⾯倒 パッケージマネージャ

Slide 24

Slide 24 text

パッケージマネージャのココがすごい︕ • 簡単にインストール、アンインストールができる︕ • パッケージ間の依存関係を解決してくれる。

Slide 25

Slide 25 text

パッケージ管理に使うコマンド $ sudo apt update ローカルに保存されている「インストールできるパッケージ リスト」の更新 $ sudo apt install hogehoge hogehogeパッケージをインストール

Slide 26

Slide 26 text

コマンドラインからPython3 $ python3.6 Python 3.6.0 (default, Dec 4 2017, 04:10:59) [GCC 4.9.2] on linuxType "help", "copyright", "credits" or "license" for more information. >>> print("hello, python!") hello, python! こんな感じで、気軽にコマンドラインから利⽤できる。 $ python だとpython2系が 起動する 注意︕

Slide 27

Slide 27 text

Python3の⽂法をガーっと学ぶ >>> a = 10 >>> b = 20 >>> print(a+b) 30 C⾔語だと #include int main(){ int a = 10; int b = 20; printf(“%d”, a+b); return 0; }

Slide 28

Slide 28 text

Python3の⽂法をガーっと学ぶ >>> a = “hoge” >>> print(a) hoge

Slide 29

Slide 29 text

Python3の⽂法をガーっと学ぶ >>> a = 3 >>> b = 2 >>> a/b 1.5 >>> a*b 6

Slide 30

Slide 30 text

Python3の⽂法をガーっと学ぶ *リスト >>> a = [1, 2, “hogehoge”, 3.14] >>> print(a[0]) 1 >>> print(a[-2]) hogehoge

Slide 31

Slide 31 text

Python3の⽂法をガーっと学ぶ *リスト >>> newlist = a[0:2] >>> print(newlist) [1, 2] >>> newlist.append(5) >>> print(newlist) [1, 2, 5]

Slide 32

Slide 32 text

Python3の⽂法をガーっと学ぶ *ディクショナリ >>> b = {“Japan”: ”Tokyo”, “USA”: “WashingtonD.C.”} >>> print(b[“Japan”]) ‘Tokyo’

Slide 33

Slide 33 text

Python3の⽂法をガーっと学ぶ >>> a = [0, 1, 2, 3] >>> for i in a: ... print(i) 0 1 2 3

Slide 34

Slide 34 text

Python3の⽂法をガーっと学ぶ >>> a = "robot-architect" >>> for c in a: ... print(c.upper()) R O ...

Slide 35

Slide 35 text

Python3の⽂法をガーっと学ぶ *リスト内包 >>> a = [ i for i in range(10) ] >>> print(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b = [ i**2 for i in range(10) if i%2 == 0 ] >>> print(b) [0, 4, 16, 36, 64]

Slide 36

Slide 36 text

シーケンス リスト、⽂字列、ディクショナリなどはシーケンスという。 シーケンスはどれも似たようなアクセス⽅式、機能を備える

Slide 37

Slide 37 text

Python3の⽂法をガーっと学ぶ >>> hoge = 5000 >>> print("I want {} trillioin yen".format(hoge)) I want 5000 trillioin yen

Slide 38

Slide 38 text

pythonファイルを作成 $ nano sample.py ファイルにプログラムを書く $ python3.6 sample.py

Slide 39

Slide 39 text

ステートメント import time while True: print("spam!") time.sleep(1)

Slide 40

Slide 40 text

関数 def hoge(foo): print(foo) return foo+10 bar = hoge(2) print(bar)

Slide 41

Slide 41 text

Python3の⽂法をガーっと学ぶ n Pythonにおけるオブジェクトとは︖ 数値や⽂字列、リスト、辞書、関数、クラス(後述)、モジュール、 パッケージといったデータのこと。 n クラスとは オブジェクトの設計図となるもの。なんちゃらオブジェクトはこんな 値を持ってこんな操作ができますよというのを定義できる。 この辺はスライド1枚で理解できるものではないので割愛

Slide 42

Slide 42 text

Python3でfizbuz 1から100までの整数のうち、3の倍数でfiz,5の倍数でbuz,15の倍数 でfizbuzと表⽰されるようなプログラムを書こう。 *if⽂の書き⽅を調べてみよう $ python3.6 fizbuz.py 3:fiz 5:buz 6:fiz 9:fiz 15:fizbuz ...

Slide 43

Slide 43 text

python2と3を⾒分けよう ネット上にはPythonとだけ書いて2系が3系かわからない記事 がいっぱいある。 だがこれらには互換性がないため、⾒分けるのがとても重要。

Slide 44

Slide 44 text

python2と3を⾒分けよう Python2系 Python3系 プログラム冒頭に、 -*- coding: utf-8 -*- なし print "hello" print("hello")

Slide 45

Slide 45 text

お疲れ様でした。 $ sudo poweroff 次回はpythonでもっと遊びましょう