Python3学習とLEDチカチカ

2017/10/24 通信処理ネットワーク研究室 河田直樹

お品書き

今日の流れ

※始める前に日本語入力切替機能のインストールを ここ から済ませておくとよい(upgradeはしない)

今日は Python3系の学習 と ラズパイを使ったLEDチカチカ を行う.

Pythonにはバージョンがあり,Python2系とPython3系に分かれる.

前回Python2系の学習を行った(時間の関係でそこまで進んでいない人がほとんどだと思うが).

今回はより使い勝手の良いPython3をメインに学習する.

そのあと,PythonとラズパイのGPIOを使ってLEDを点滅するプログラムを書いてもらう.

3-1. Python3 基礎

Python3とPython2の違い

Python2からPython3になって大きい変更点は以下のようになっている.

Python3の実行方法(おさらい)

インタプリタで実行する方法

インタプリタは以下のコマンドを入力することによって開始できる.

$ python3

これでプログラムを書き込める状態になる.

例でプログラムを打ち込んでみる.

>>> print ("Hello World")
Hello World

このように即座に入力したプログラムに対する処理が行われる.

ファイルから実行する方法

※ファイルの作成方法,エディタについては

「第一回 1-5. コマンド」を学ぶの nanoコマンド を参照

ファイルからは以下のコマンドを入力することでプログラムが実行される.

$ python3 ファイル名

あらかじめ以下のプログラムを記述したファイル test.py を用意する.


作成したtest.pyの中身

print ("Hello World")

そしてtest.pyファイルをPython3で実行すると以下のようになる.

pi@raspberrypi:~ $ python3 test.py
Hello World

このようにプログラムを実行することができる.


Python3の基礎的な構文(おさらい)

前回はインタプリタでPython2の構文を紹介したが,今回はファイルから実行する形式でPython3の基本的な構文の紹介をする.

print関数

文字や数値,式の結果などを出力する関数

print ("文字列")
print (式や変数などの値)

「"」や「'」を使わずに以下のように数値を入れれば計算結果を出力することもできる.


具体例

作成したtpri.pyの中身

print ("1+2")
print (1+2)

コマンドラインでの実行結果

pi@raspberrypi:~ $ python3 tpri.py
1+2
3

変数

宣言するときのルール

リスト(配列)

配列のようなもので,データをまとめるときに使う.

まとめるデータは型の種類が違っていてもよい.

添え字は0からスタート

変数名 = [数値1,文字列1,...]

具体例

作成したtlis.pyの中身

list = [2014,2015,2016,2017]
print (list)
print (list[3])

コマンドラインでの実行結果

pi@raspberrypi:~ $ python3 tlis.py
[2014, 2015, 2016, 2017]
2017

文字列と数値

文字列は「'」(シングルクォーテーション)と「"」(ダブルクォーテーション)の両方で表現できる.

str()やint()で以下のように文字列から数値へ,またその逆へと変換することができる.

また,異なった型を合わせようとするとエラーが出る.


具体例

作成したtsi.pyの中身

s = "100"
print ("文字列s:100 を出力")
print (s)

print ("int(s):数値に変換した100 と数値200を+で加算")
print (int(s) + 200)

print ("数値i:100 を出力")
i = 100
print (i)

print ("str(i):文字列に変換した100 と文字列200を+で連結")
print (str(i) + "200")

コマンドラインでの実行結果

pi@raspberrypi:~ $ python3 tsi.py
文字列s:100 を出力
100
int(s):数値に変換した100 と数値200を+で加算
300
数値i:100を出力
100
str(i):文字列に変換した100 と文字列200を+で連結
100200

input関数

input関数で以下のように入力の受け取りができる.

変数名 = input("文字列")

具体例

作成したtinp.pyの中身

a = input ("入力:")
print (a)

コマンドラインでの実行結果(「test」を入力)

pi@raspberrypi:~ $ python3 tinp.py
入力:test
test

if文

if文は条件分岐を行える.

インデントでブロック構造を表現する.

if 条件式1:
	条件式1が真の時の処理
elif 条件式2:
	条件式1を満たさず、条件式2を満たす時の処理
else:
	条件式1も条件式2も満たさない時の処理

具体例

作成したtif.pyの中身

n=2
if n<=0:
	print ("nは0以下")
else:
	print ("nは0より大きい")

コマンドラインでの実行結果

pi@raspberrypi:~ $ python3 tif.py
nは0より大きい

while文

条件を満たしている間だけ繰返し.

インデントでブロック構造を表現する.

while 条件式:
	条件式が真の時の処理1
	条件式が真の時の処理2

具体例

作成したtwhi.pyの中身

num = 0
while num<5:
	print (num, "hello")
	num += 1

コマンドラインでの実行結果

pi@raspberrypi:~ $ python3 twhi.py
0 hello
1 hello
2 hello
3 hello
4 hello

for文

オブジェクトに含まれる要素の数だけ繰り返し

インデントでブロック構造を表現する.

for 変数 in オブジェクト:
	実行する処理1
	実行する処理2

具体例

作成したtfor.pyの中身

※range(x,y)は[x,...,y-1]のリストを意味する.

下の例だとrange(0,5)は[0,1,2,3,4]となる.

for num in range(0,5):
	print (num, "hello")

コマンドラインでの実行結果

pi@raspberrypi:~ $ python3 tfor.py
0 hello
1 hello
2 hello
3 hello
4 hello

3-2. Python3 演習

基本的な構文だけでできる項目と追加で知識が必要な項目に分けて出題する.

問題に入る前にC言語とPtyhon言語を比較するために具体例を示す。

C言語とPython言語

入力された整数が素数か否かを判定するプログラム

pythonの特徴はインデントによるブロック構造の表現である。

これによりほかの言語よりも比較的簡単に実装できる。

基礎問題

(1) 1から50までの和を計算して表示せよ


(2) 整数を入力させ,入力された数字の偶数・奇数を判別して表示せよ


(3)次の計算結果を予想せよ

1. 1 + 2

2. 3 + 1.2

3. 1 + True

4. [3,1,4][False]


(4) 1から100までに存在する奇数の足し算結果を出力せよ.


(5) 1から100までの数をプリントするプログラムを書け.

 ただし3の倍数のときは数の代わりに「Fizz」と,

 5の倍数のときは「Buzz」とプリントし,

 3と5両方の倍数の場合には「FizzBuzz」とプリントすること.

発展問題

(1)与えられた数が素数かどうか調べるプログラム(自作関数を使おう)

(2) 次のHello関数を Hello() 以外で呼び出せ

def Hello():
print ("Hello")


(3)1-99までの奇数と偶数を表示する(自作関数を使おう)


3-3. ラズパイでLEDチカチカ

こちら


参考文献

  1. Python入門から応用までの学習サイト (http://www.python-izm.com/)
  2. エンジニアの入口 (https://eng-entrance.com/)
  3. yuukiclass - Qiita (https://qiita.com/yuukiclass)
dspトップへ