SlideShare a Scribd company logo
Raspberry pi 講習会
Part2.5 : 初めてのpython
2018年1月9日
B2 小野輝也
今日の予定
1. とりあえずPythonをインストール
2. シェル、rootについて
3. プログラミング言語いくつ知ってる?
4. Python3に入門しよう
Python3をインストール
時間がかかるので先にこっちをやる。
インストールを待ってる間に色々説明
https://gist.github.com/dschep/24aa61672a2092246eaca282
4400d37f
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コマンド:ソフトウェアのビルド
つまりコンパイル&ライブラリのリンク
シェルスクリプトのシェルとは
• シェル(shell)とは、OSの心臓部(カーネルという)とユー
ザーの橋渡しとなるプログラムである。
OSカーネル シェル ユーザー
ユーザーとの
対話能力を持
たない
ユーザーからの
コマンドを解釈
してOSに引き渡
す。
僕たち
ls3e 29 ea …
4a 8b 3c … lchika.sh
タ
|
ミ
ナ
ル
ソ
フ
ト
rootについて
さっきからスドスド何なんだよ!!!!と思っている頃かな?
 Linuxにはデフォルトでrootというユーザが用意されている。
 rootはいわゆる「管理者」。windowsではadministratorという。
 rootはLinuxにおける全知全能の神。なんでもできる。
rootについて
全部rootで操作すればいいんじゃないの?
 大事なファイルをミスって削除したらRPIが起動しな
いかも
 セキュリティ的に良くない
rootについて
ならrootじゃないといじれないファイルはどうするのか
 そんな時にはコマンドの前にsudo(superuser do)
をつける。
 $ sudo nano hogehoge
 普通はsudo付きでコマンド実行しようとするとパ
スワード入力が求められる・・・。
そこのお前!!こんなこと思って
ないか!?!?
CUIなんてクソ!GUI万歳!!!!
まあ一理ある
• 確かにマウス操作の方が直感的でわかりやすい。何よりコ
マンド覚えるのが面倒
CUIはいいぞ〜
CUIでしか動作しないソフトウェアは山のようにある
 プログラミング関係は特にそう。
 マニュアルにも「コマンド使えて当然でしょ?」と言わんばかりに
環境構築方法などが書いてある。
CUIはいいぞ〜
・一括操作、連続実行などが一瞬で終わる。
 1000個のファイルから各10個ずつあるjpgとtxtとpptだけ抜き出し
てzipにするとか
 毎日午前3時にバックアップを取るとか
 pdfをまとめてダウンロードするとか
プ ロ グ ラ ミ ン グ 言 語 、 い く つ 知 っ て る ?
C言語
古くからある伝統的な言語。
速くて軽い。
主にハードウェア制御(低レイヤ)に使われる。
情エレ2年は授業でやります。
C++
こちらも伝統がある.
Cの進化版
言語仕様全て理解してる奴マジで0人説が有力
黒魔術の1つでもある。
Java
モバイルアプリ(Android)やwebアプリ、業務シ
ステムなど幅広く使われている。
大規模で堅牢なシステムを構築するのに向いて
いる。
コンパイラ型言語
コンパイルが必要な言語をコンパイラ型言語という。
先にあげた3つの言語はコンパイラ型言語の代表格
Python
直感的で理解しやすい文法
web、人工知能、科学計算など幅広い分野で活
用されている。
今最もアツい言語
 python2系は滅びろ
JavaScript
webページの修飾が主な目的
フロントエンド界のスター
最近はnode.jsというやべー奴が流行っている。
Javaと混同すると人権が剥奪されることが憲法
に明記されている。
PHP
サーバーサイド記述言語
割と簡単にwebアプリケーションプログラムが書ける。
PHPしか書けない人はPHPerと呼ばれて蔑まれる[要出典]
インタプリタ型言語
インタプリタ
実行と同時に逐一プログラムを解釈して機械語に変換する。
同時翻訳機のようなもの。
先ほどの3つの言語はインタプリタ型言語。
一般的にコンパイラ型に比べて動作が遅いもののお手軽。
Python3に入門しよう。
今回はこれらの有名言語の中からPython3に入門しよう。
Pythonをマスターしたら年収5000兆円も夢じゃない!!!
Pythonの特徴
 Python2系とPython3系があり、それらに互換性がない。
 コマンドラインからでも操作できる(お手軽!!)
 豊富な標準ライブラリ(Cでいう標準関数)
 外部からライブラリ(プログラムの部品となるもの)をインス
トールすることが多い。
さあPython3のインストールだ!!!
本来、Pythonを使うにはwebからインタプリタや標準ライブラリを
インストールしなければならない。
しかし、ラズパイにはPython2が最初からインストールされている。
$ python --version
python 2.7.9
ただし、Python3は入ってないので、これからインストールします。
(プリインストールされているバージョンもあります。)
インストールされてるかな?と思ったら
--versionオプションを試してみる
パッケージとは?
ソフトウェアを1つの製品としてまとめたもの
大抵2つ以上のファイルから構成される
これらを探したり、依存ライブラリを調べたりするのは面倒
パッケージマネージャ
パッケージマネージャのココがすごい!
• 簡単にインストール、アンインストールができる!
• パッケージ間の依存関係を解決してくれる。
パッケージ管理に使うコマンド
$ sudo apt update
ローカルに保存されている「インストールできるパッケージ
リスト」の更新
$ sudo apt install hogehoge
hogehogeパッケージをインストール
コマンドラインから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系が
起動する 注意!
Python3の文法をガーっと学ぶ
>>> a = 10
>>> b = 20
>>> print(a+b)
30
C言語だと
#include <stdio.h>
int main(){
int a = 10;
int b = 20;
printf(“%d”, a+b);
return 0;
}
Python3の文法をガーっと学ぶ
>>> a = “hoge”
>>> print(a)
hoge
Python3の文法をガーっと学ぶ
>>> a = 3
>>> b = 2
>>> a/b
1.5
>>> a*b
6
Python3の文法をガーっと学ぶ
*リスト
>>> a = [1, 2, “hogehoge”, 3.14]
>>> print(a[0])
1
>>> print(a[-2])
hogehoge
Python3の文法をガーっと学ぶ
*リスト
>>> newlist = a[0:2]
>>> print(newlist)
[1, 2]
>>> newlist.append(5)
>>> print(newlist)
[1, 2, 5]
Python3の文法をガーっと学ぶ
*ディクショナリ
>>> b = {“Japan”: ”Tokyo”, “USA”: “WashingtonD.C.”}
>>> print(b[“Japan”])
‘Tokyo’
Python3の文法をガーっと学ぶ
>>> a = [0, 1, 2, 3]
>>> for i in a:
... print(i)
0
1
2
3
Python3の文法をガーっと学ぶ
>>> a = "robot-architect"
>>> for c in a:
... print(c.upper())
R
O
...
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]
シーケンス
リスト、文字列、ディクショナリなどはシーケンスという。
シーケンスはどれも似たようなアクセス方式、機能を備える
Python3の文法をガーっと学ぶ
>>> hoge = 5000
>>> print("I want {} trillioin yen".format(hoge))
I want 5000 trillioin yen
pythonファイルを作成
$ nano sample.py
ファイルにプログラムを書く
$ python3.6 sample.py
ステートメント
import time
while True:
print("spam!")
time.sleep(1)
関数
def hoge(foo):
print(foo)
return foo+10
bar = hoge(2)
print(bar)
Python3の文法をガーっと学ぶ
 Pythonにおけるオブジェクトとは?
数値や文字列、リスト、辞書、関数、クラス(後述)、モジュール、
パッケージといったデータのこと。
 クラスとは
オブジェクトの設計図となるもの。なんちゃらオブジェクトはこんな
値を持ってこんな操作ができますよというのを定義できる。
この辺はスライド1枚で理解できるものではないので割愛
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
...
python2と3を見分けよう
ネット上にはPythonとだけ書いて2系が3系かわからない記事
がいっぱいある。
だがこれらには互換性がないため、見分けるのがとても重要。
python2と3を見分けよう
Python2系 Python3系
プログラム冒頭に、
-*- coding: utf-8 -*- なし
print "hello" print("hello")
お疲れ様でした。
$ sudo poweroff
次回はpythonでもっと遊びましょう

More Related Content

PDF
Python入門
PDF
Scapy presentation Remake(訂正)
PDF
Scapy presentation
PPT
ZFSのソースコードをチラ見してみる
PPT
Python入門からpython twitter利用のハンズオン
PDF
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
PDF
Subprocess no susume
PDF
R3.0.0 is relased
Python入門
Scapy presentation Remake(訂正)
Scapy presentation
ZFSのソースコードをチラ見してみる
Python入門からpython twitter利用のハンズオン
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Subprocess no susume
R3.0.0 is relased

What's hot (19)

KEY
ひのきのぼうだけで全クリ目指す
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
PDF
Scapyで作る・解析するパケット
PDF
PDF
import dpkt したよ #ssmjp 2014/02/28
PDF
謎の言語Forthが謎なので実装した
PDF
Cython ことはじめ
PDF
Ocamlでpfffを拡張した話
PPTX
Node.js - sleep sort algorithm
PDF
Python と私の事情
PPT
IPv6アドレスでお絵かき
PDF
Wrapping a C++ library with Cython
PDF
Rpn and forth 超入門
PDF
Pelican の紹介 / World Plone Day 2017 Tokyo
PDF
One - Common Lispでもワンライナーしたい
PDF
Python twitter data_150709
PDF
RとWeb API
PDF
Jailが起動しないので調査してみた
PDF
Rでreproducible research
ひのきのぼうだけで全クリ目指す
Python 機械学習プログラミング データ分析ライブラリー解説編
Scapyで作る・解析するパケット
import dpkt したよ #ssmjp 2014/02/28
謎の言語Forthが謎なので実装した
Cython ことはじめ
Ocamlでpfffを拡張した話
Node.js - sleep sort algorithm
Python と私の事情
IPv6アドレスでお絵かき
Wrapping a C++ library with Cython
Rpn and forth 超入門
Pelican の紹介 / World Plone Day 2017 Tokyo
One - Common Lispでもワンライナーしたい
Python twitter data_150709
RとWeb API
Jailが起動しないので調査してみた
Rでreproducible research
Ad

Similar to rpi_handson_2.5 (20)

PDF
「Python言語」はじめの一歩 / First step of Python
PDF
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
PDF
Python Kyoto study
PDF
Python東海Vol.5 IPythonをマスターしよう
PDF
おまえらこのライブラリ使ってないの? m9 (2013-07)
ODP
Introduction of Python
PDF
多次元配列の効率的利用法の検討
PPTX
2017/12/21 虎の穴 Python勉強会
PPT
Python開発環境三種の神器
PDF
Introduction to Numpy (and Python) [JPN]
PDF
Git pyfes201207-presen
PPTX
ROSチュートリアル ROBOMECH2018
PDF
ALPSチュートリアル(4) Python入門
PDF
BPStudy#54 そろそろPython3
PDF
PDF
研究生のためのC++ no.2
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
PDF
PostgreSQLとpython
PDF
C83 λカ娘の販促にやってきました
PDF
Node予備校 vol.1 名古屋
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Python Kyoto study
Python東海Vol.5 IPythonをマスターしよう
おまえらこのライブラリ使ってないの? m9 (2013-07)
Introduction of Python
多次元配列の効率的利用法の検討
2017/12/21 虎の穴 Python勉強会
Python開発環境三種の神器
Introduction to Numpy (and Python) [JPN]
Git pyfes201207-presen
ROSチュートリアル ROBOMECH2018
ALPSチュートリアル(4) Python入門
BPStudy#54 そろそろPython3
研究生のためのC++ no.2
ホームディレクトリに埋もれた便利なコードをさがせ!
PostgreSQLとpython
C83 λカ娘の販促にやってきました
Node予備校 vol.1 名古屋
Ad

More from teruyaono1 (8)

PDF
Klab expert camp 成果発表
PDF
Docker講習会資料
PPTX
Serverlessに触れてみる
PPTX
Mikrotikルーターが仮想通貨採掘マルウェアに感染していました
PDF
ラズパイ講習会(第3回)
PDF
rpi_handson_3
PPTX
rpi_handson_2
PPTX
rpi_handson_1
Klab expert camp 成果発表
Docker講習会資料
Serverlessに触れてみる
Mikrotikルーターが仮想通貨採掘マルウェアに感染していました
ラズパイ講習会(第3回)
rpi_handson_3
rpi_handson_2
rpi_handson_1

rpi_handson_2.5