V1.0 2020/1/31

抜粋編
Ｐｙｔｈｏｎで組み立てるＦＭラジオキット～Ｐｙｔｈｏｎプログラミングを完全マスターするための実践キット～

Ｐｙｔｈｏｎ学習編

ＦＭラジオ
スペクトラム・テクノロジー株式会社
https://spectrum-tech.co.jp
sales@spectrum-tech.co.jp
all rights reserved 2020 spectrum technology co.

1

python学習編 目次
①
••
•
•
•
•
•
•

②

ページ

pythonとはpythonの設定
Python2,3 の違い
仮想環境の利用
プログラムの実行
対話モード
プログラムの構造プログラム作成ツール

3
4
5
6
8
910
12

基本•
•
•
•
•
•
•

③

数値・文字列・型
リスト、タプル、辞書演算子
制御文
関数
クラス
モジュール、パッケージ
日付・時刻
画面作成
グラフ
数値計算

13
14
17
18
19
20
21
23
24
25
26

例• ヒストグラム• ボタン表示⑤⑥

抜粋編になります。目次と内容は一致しません。

便利なモジュール
••••

④

概要

python入門
http://tohoho-web.com/python/index.html
python-izm
http://www.python-izm.com/
python公式ＨＰ
https://docs.python.jp/2.7/tutorial/index.html
python自習テキスト
http://giraffe.topaz.ne.jp/wiki/doku.php/py:python_curriculum

練習問題
jupyter notebook

27
28

29
30

all rights reserved 2020 spectrum technology co.

2

python基礎編①．概要• Ｐｙｔｈｏｎとは• Pythonはさまざまな分野のアプリケーションで使われている、極めてパワフルな動的プログラミング言語です。Pythonはよく、Tcl、Perl、Scheme、Javaなどと比較されます。Pythonには次のような特徴があります:• とてもクリーンで読みやすい文法• 強力な内省(イントロスペクション)機能• 直感的なオブジェクト指向• 手続き型のコードによる、自然な表現• パッケージの階層化もサポートした、完全なモジュール化サポート• 例外ベースのエラーハンドリング• 高レベルな動的データ型• 事実上すべてのタスクをこなせる、広範囲に及ぶ標準ライブラリとサードパーティのモ
ジュール• 拡張とモジュールはC/C++で書くのが容易(JythonではJava、IronPythonでは.NET言語を利用)• アプリケーションに組み込んでスクリプトインタフェースとして利用することが可能

出典：http://www.python.jp/about/より

all rights reserved 2020 spectrum technology co.

3

python基礎編①．概要

詳細は、こちらをご覧ください
https://postd.cc/the-key-differences-between-python-2-7-xand-python-3-x-with-examples/
python2は2020年1月にサポート終了になりました。

• Python２，３の違い
Python2

Python3

コメント

Print文print 'Hello, World!'

print(‘Hello, World!')3は()が必ず必要になりますxrange

range, xrange

rangeのみ

unicodeu”unicode”

エラー
テキストはstr
データはbytes

整数除算

3/2=1
3/2.0=1.5

3/2=1.5
3/2.0=1.5

計算速度

早い

遅い

分母の数字をfloat,intをきちんと定義する必要がある

本資料に記載しているプロ
グラムはpython3で動作します
all rights reserved 2020 spectrum technology co.

4

python基礎編①．概要• Ｐｙｔｈｏｎ学習用ディレクトリ 全て体験できます。
• /home/pi/Documents/python/study
cdコマンドでディレクトリを使用するところに切り替え
pi@raspberrypi:~ $ cd /home/pi/Documents/python/study
python プログラム名でプログラムを実行します。
root@raspberrypi:/home/pi/Documents/tensorflow/study# python
1_hello_world.pyall rights reserved 2020 spectrum technology co.

5

python基礎編①．概要• プログラムの実行• Pythonの入ったディレクトリに移動して、pythonコマンドで実行します。
• hello_world.pyのプログラムの中身

print "Hello world!"

以下、プログラムの場合の様式• コマンド• pythonプログラムに入った
pi@raspberrypi:~ $ cd /home/pi/Documents/python/study
pi@raspberrypi:/home/pi/Documents/python/study$ python3 1_hello_world.py ディレクトリに移動• プログラムの実行
Hello world!
• Hello worldの表示

以下、コマンドプロンプトの場合の様式
右クリックでリンクをコピーしてコマンド画面にｃｄの後に貼り付けると簡単です。
なお、リンクが消える場合は一度上のフォルダに戻って再度開いてください

raspberry pi画面
all rights reserved 2020 spectrum technology co.

6

python基礎編①．概要

仮想環境は構築していません。

• 対話モード• Pythonのひとつの特徴でもあり、プログラムを作成せず、直接コマンドを入力して、その結果を直ぐに得ることができます。
• 簡単なテストをする場合に有効です。
• python3と入力すると対話モードに入り、CTL+dで抜け出します• コマンドpi@raspberrypi:~/Documents/python/study $ python3
Python 3.7.3 (default, Apr 3 2019, 05:39:12)[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a=1>>> b=2>>> c=a+b>>> print(c)3all rights reserved 2020 spectrum technology co.

• python3と入力• ＞＞＞のプロンプトになると対話型7

python基礎編①．概要• プログラムの構造• エンコード宣言# coding: utf-8

１行目で使用するエンコードを宣言します。

• インテンド

pythonの場合インテンドが重要になります。C++などの｛｝の役割と同じです。スペース（空白４個）又はタブを使用します。
if a == 5:
print “AAA”#if文の対象はこの文まで。
print （“Hello world”）#ｉｆ文の対象外• コメントプログラムの説明するためにコメントを加えます#で以降がコメントになります
また複数文をコメントアウトする場合は、”””で囲みます。インテンドを同じ位置にします。

1_hello_world.py# coding: utf-8
a=5
if a == 5:
print "AAA" # if文の対象
print （“Hello world”） # 文字列やコメントに日本語を使えるようになります””” a=1
b=3
all rights reserved 2020 spectrum technology co.
”””8

python基礎編①．概要• プログラムの構造• 関数定義def main()#main関数を定義します。
アンダーバー２個にprint （“hello world”）
なります• プログラムの実行文
if __name__ == “__main__”:main()#__name__は現在のモジュール名、__main__が設定、別のモジュールから呼び出された時は実行しない。
#main()プログラムが実行されます。

2_hello_world.py# coding: utf-8
def main():print（ “hello world”）
if __name__ == "__main__":main()

大きなプログラムも関数の定義部分が大きくなるだけですall rights reserved 2020 spectrum technology co.

9

python基礎編①．概要• プログラム作成ツール• エディタ• 複数人で作成する場合は、別のツールをお勧めしますが、一人で開発する場合は、さくらエディタなどを使うと簡単です。特に文字の一括置換には便利です。色が変わらないのでその点は他のものが便利かもしれません• eclipse• 統合型の開発環境• pydevのプラグインを入れて使用

all rights reserved 2020 spectrum technology co.

10

python基礎編③．便利なモジュール• 画面作成：tkinter• ＧＵＩ画面を作成するのに使います。ラベル、ボタン、リストボックス、メニュースクロール
バーなどがあり、簡単に作成できるので便利です。
• pythonで一番時間がかかるのは、入出力などのプログラムを作成するところです。根
気強く実施しましょう。
import tkinter as tk
ボタンのｗｉｄｇｅｔです。
root = tk.Tk()
button = tk.Button(root, text = 'Python/Tkinter')button.pack()root.mainloop()# coding: utf-8
import tkinter as tk
root = tk.Tk()
str = 'Hello, world, こんにちは世界'
tk.Label(root, text=str, font=(u'ＭＳ ゴシック', 12)).pack()
tk.Label(root, text=str, font=(u'ＭＳ 明朝', 12, 'italic')).pack()
tk.Label(root, text=str, font=(u'ＭＳ ゴシック', 16, 'underline')).pack()root.mainloop()
all rights reserved 2020 spectrum technology co.

ラベルのｗｉｄｇｅｔです。

11python基礎編③．便利なモジュール• グラフ：matplotlib• 非常に便利なツールです。内容によって表示に時間がかかる場合もあります。
import numpy as np
from matplotlib import pyplot

いろいろなグラフが書けます。
https://matplotlib.org/

pi = 3.1415
x = np.linspace(0, 2*pi, 100)y = np.sin(x)pyplot.plot(x, y)
pyplot.show()

all rights reserved 2020 spectrum technology co.

12

python基礎編③．便利なモジュール• 数値計算：numpy• 積分、フーリエ変換、統計など数値計算用モジュールです。test1.py# -*- coding: utf-8 -*import numpy as np

正規分布（平均値：１０、標準偏差：２）:test2.py

def main():ans = np.random.normal(10,2)
print(ans) # 結果を表示# -*- coding: utf-8 -*import numpy as np
import matplotlib.pyplot as plt

if __name__ == '__main__':main()

def main():
X = [1,2,3,4,5]
Y = [1.1, 2.1, 2.8, 4.3, 5.1]
A = np.array([X,np.ones(len(X))])A = A.Ta,b = np.linalg.lstsq(A,Y)[0]plt.plot(X,Y,"ro")plt.plot(X,(int(a)*X+b),"g--")plt.grid()
plt.show()

最小二乗法

if __name__ == '__main__':main()
all rights reserved 2020
spectrum technology co.

13

python基礎編④．例• ヒストグラム histogram.py
import matplotlib.pyplot as mpt
import mathdef sqr(x):return x * xdata = [66, 59, 62, 64, 63, 68, 65, 59, 68, 64, 65, 51, 67, 64, 83,59, 61, 62, 57, 72, 65, 64, 54, 60, 53, 65, 67, 60, 53, 79,74, 53, 61, 68, 75, 50, 57, 55, 66, 56, 55, 61, 70, 71, 49,69, 70, 80, 73, 72]

出典
http://y-okamotopsy1949.la.coocan.jp/Python/sa
mpleprgs/

n = len(data)# The number of scores
print ("n =%d"%n)print ("Data...")
i=1
for x in data:
print("%5d:"%i + " %f"%x)i+=1
mpt.title("Histogram") # The title of the histogram
mpt.xlabel("Score")# The label of the x-axis
mpt.ylabel("Frequency") # The label of the y-axis
mpt.hist(data, bins = 10) # Making the histogram
mpt.show()# Show the histogram

all rights reserved 2020 spectrum technology co.

14

python基礎編④．例• ボタン表示button1.py

import Tkinterclass my_button(Tkinter.Button):
def __init__(self,master=None,cnf={},**kw):
Tkinter.Button.__init__(self,master,cnf,**kw)
self.configure( font = ("",14), bg = "yellow", fg = "red" )root = Tkinter.Tk()
button1 = my_button(root,text="MyButton1")
button1.pack()
button2 = my_button(root,text="MyButton2")
button2.pack()root.mainloop()

all rights reserved 2020 spectrum technology co.

15

python基礎編⑤．練習問題• home/pi/Documents/python/exercise• 0_exercise_question100_list.txt:練習問題：ＰＣのローカル側にコピペして開いてください。
• ＰＣ側のローカルでさくらエディタなどで回答を作成して、ｐｉ側にｓａｍｂａ経由で移動させてプログラムを動作させ、エラーがなくなったら模範解答を見てください。

all rights reserved 2020 spectrum technology co.

16