Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ラズパイ講習会 No2.5
Search
teru0x1
January 09, 2018
Technology
0
34
ラズパイ講習会 No2.5
Pythonの文法について説明するおまけ回
teru0x1
January 09, 2018
Tweet
Share
More Decks by teru0x1
See All by teru0x1
マルチクラスタの認知負荷に立ち向かう! Ubieのプラットフォームエンジニアリング
teru0x1
4
3.6k
ブラウザの外側でWasmを使おう
teru0x1
0
300
スタブサーバ自動生成ツール 〜負荷試験をもっと楽に〜
teru0x1
0
1.7k
バッチシステムをクラウドネイティブにするために考えたこと
teru0x1
17
8.1k
クラウド環境をFargateに 移行して得た知見
teru0x1
0
1.5k
Goと定数 DMM.go #3
teru0x1
0
2.5k
はてなインターン2020成果発表
teru0x1
0
1k
入門QUIC
teru0x1
0
500
【衝撃】Archlinuxをインストールした結果がヤバすぎた!
teru0x1
0
70
Other Decks in Technology
See All in Technology
DevinでAI AWSエンジニア製造計画 序章 〜CDKを添えて〜/devin-load-to-aws-engineer
tomoki10
0
190
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
150
エンジニア主導の企画立案を可能にする組織とは?
recruitengineers
PRO
1
280
OPENLOGI Company Profile for engineer
hr01
1
20k
フォーイット_エンジニア向け会社紹介資料_Forit_Company_Profile.pdf
forit_tech
1
1.7k
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
510
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
210
Amazon Aurora のバージョンアップ手法について
smt7174
2
180
実は強い 非ViTな画像認識モデル
tattaka
3
1.4k
Two Blades, One Journey: Engineering While Managing
ohbarye
4
2.3k
困難を「一般解」で解く
fujiwara3
7
1.6k
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
280
Featured
See All Featured
A designer walks into a library…
pauljervisheath
205
24k
How to Ace a Technical Interview
jacobian
276
23k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Building Applications with DynamoDB
mza
93
6.2k
Designing Experiences People Love
moore
140
23k
Building an army of robots
kneath
303
45k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
How to Think Like a Performance Engineer
csswizardry
22
1.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Transcript
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に引き渡 す。 僕たち ls 3e 29 ea … 4a 8b 3c … lchika.sh タ | ミ ナ ル ソ フ ト
rootについて さっきからスドスド何なんだよ︕︕︕︕と思っている頃かな︖ n Linuxにはデフォルトでrootというユーザが⽤意されている。 n rootはいわゆる「管理者」。windowsではadministratorという。 n rootはLinuxにおける全知全能の神。なんでもできる。
rootについて 全部rootで操作すればいいんじゃないの︖ n ⼤事なファイルをミスって削除したらRPIが起動しな いかも n セキュリティ的に良くない
rootについて ならrootじゃないといじれないファイルはどうするのか n そんな時にはコマンドの前にsudo(superuser do) をつける。 n $ sudo nano
hogehoge n 普通はsudo付きでコマンド実⾏しようとするとパ スワード⼊⼒が求められる・・・。
CUIのメリット CUIでしか動作しないソフトウェアは⼭のようにある u プログラミング関係は特にそう。 u マニュアルにも「コマンド使えて当然でしょ︖」と⾔わんばかりに 環境構築⽅法などが書いてある。
CUIのメリット 2 ・⼀括操作、連続実⾏などが⼀瞬で終わる。 u 1000個のファイルから各10個ずつあるjpgとtxtとpptだけ抜き出し てzipにするとか u 毎⽇午前3時にバックアップを取るとか u pdfをまとめてダウンロードするとか
プログラミング言語、いくつ知ってる?
C⾔語 u古くからある伝統的な⾔語。 u速くて軽い。 u主にハードウェア制御(低レイヤ)に使われる。 u情エレ2年は授業でやります。
C++ uこちらも伝統がある. uCの進化版 u⾔語仕様全て理解してる奴マジで0⼈説が有⼒ u⿊魔術の1つでもある。
Java uモバイルアプリ(Android)やwebアプリ、業務シ ステムなど幅広く使われている。 u⼤規模で堅牢なシステムを構築するのに向いて いる。
コンパイラ型⾔語 コンパイルが必要な⾔語をコンパイラ型⾔語という。 先にあげた3つの⾔語はコンパイラ型⾔語の代表格
Python u直感的で理解しやすい⽂法 uweb、⼈⼯知能、科学計算など幅広い分野で活 ⽤されている。 u今最もアツい⾔語
JavaScript uwebページの修飾が主な⽬的 uフロントエンド界のスター u最近はnode.jsというやべー奴が流⾏っている。 uJavaと混同すると⼈権が剥奪されることが憲法 に明記されている。
PHP uサーバーサイド記述⾔語 u割と簡単にwebアプリケーションプログラムが書ける。
インタプリタ型⾔語 インタプリタ 実⾏と同時に逐⼀プログラムを解釈して機械語に変換する。 同時翻訳機のようなもの。 先ほどの3つの⾔語はインタプリタ型⾔語。 ⼀般的にコンパイラ型に⽐べて動作が遅いもののお⼿軽。
Python3に⼊⾨しよう。 今回はこれらの有名⾔語の中からPython3に⼊⾨しよう。 Pythonをマスターしたら年収5000兆円も夢じゃない︕︕︕
Pythonの特徴 n Python2系とPython3系があり、それらに互換性がない。 n コマンドラインからでも操作できる(お⼿軽︕︕) n 豊富な標準ライブラリ(Cでいう標準関数) n 外部からライブラリ(プログラムの部品となるもの)をインス トールすることが多い。
さあ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の⽂法をガーっと学ぶ n Pythonにおけるオブジェクトとは︖ 数値や⽂字列、リスト、辞書、関数、クラス(後述)、モジュール、 パッケージといったデータのこと。 n クラスとは オブジェクトの設計図となるもの。なんちゃらオブジェクトはこんな 値を持ってこんな操作ができますよというのを定義できる。 この辺はスライド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でもっと遊びましょう