Pythonロボティクスコース レッスン 2
テーマ.1-1 Pythonのデータ
Python であつかう「数値」や「文字列」のデータについて学ぼう
チャプター1
このレッスンで学ぶこと
このレッスンでは、これからPythonを学習していくために使う教材とソフトウェアの使い方を確認したあと、プログラムで最もよく扱う数値と文字列のデータについて学習します。レッスンの最後ではLEDディスプレイに自分の名前を表示する課題に取り組みます。
チャプター2
講座で使う教材について
この講座では、5×5マスのLEDディスプレイや電子ブザー、各種センサーが内蔵された電子制御基板「Studuino:bit」を使いながら、プログラミング言語「Python」の基礎とプログラムによる電子制御の基礎を学習します。
図. Studuino:bit
Studuino:bitはプログラミングの学習で使える様々な機能をもっています。例えば、順番に色を変えながら綺麗に点灯するイルミネーションライトも簡単に作成することができます。
また、LEDディスプレイやブザーの制御だけでなく、内蔵されているボタンや光(明るさ)センサー、温度センサー、加速度センサー、ジャイロセンサー、コンパスを使って周囲の情報を計測することもできます。これらのStuduino:bitの機能はPythonのプログラムを書いて利用します。
図. カバーを外したStuduino:bit
チャプター3
Python用テキストエディタの準備
Pythonのプログラムを書くためには、テキストエディタが必要です。Pythonに対応したテキストエディタは数多くありますが、この講座ではオープンソース※として配布されている「Mu」というテキストエディタを使用します。
※オープンソース・・・ソースコード(プログラミング言語で書かれたプログラムを表す文字列やテキストのこと。単にコードともいいます。)を無償で公開し、誰でも自由に改変したり、再配布したりできるようにしたソフトウェア。
3. 1 Muの画面
Muは画面構成は比較的シンプルです。高度な機能はありませんが、その分初心者でも扱いやすくなっています。
3. 2 Muのインストール
MuはWindows版とMac版があります。もし、まだ使用しているPCにMuがインストールされていない場合は、下記リンク先からOSに合ったインストーラーをダウンロードして、インストール作業を行ってください。
Windows用Muのダウンロード
- 64bit版
https://www.artec-kk.co.jp/artecrobo2/data/mu-editor_64bit.exe - 32bit版
https://www.artec-kk.co.jp/artecrobo2/data/mu-editor_32bit.exe
Mac用Muのダウンロード
これから紹介していく、多くのサンプルプログラムをこのテキストエディタに入力し、実際に動かして結果を確認することで、Pythonプログラミングの基礎を身につけていきます。このプログラミングの学習方法は、ある意味で修行に近い取り組みになります。決して楽ではありませんが、メンターがしっかりとサポートしていきますので、安心して取り組んでください。
チャプター4
レッスンを進める前の準備
これから様々なレッスンを受けていきますが、各レッスンを始める前に必ず次の準備を行ってください。
4. 1 Studuino:bitの接続
テキストエディタで作成したプログラムはUSBケーブルを介して、パソコンからStuduino:bitへ転送します。付属のUSBケーブルでパソコンとStuduino:bitを接続してください。
- パソコンにUSBケーブルの大きい方の端子をつなぎます。
2.Studuino:bitにUSBケーブルの小さい方の端子をつなぎます。
4. 2 テキストエディタの起動
- 次のアイコンをダブルクリックして、「Mu」を立ち上げます。
- 初回起動時のみ、どのモードで起動するかを選択する画面が表示されます。この中からStuduino:bitを選択し、「OK」ボタンをクリックします。2回目以降は前に選択したモードで自動的に起動します。
- 表示された画面の上方中央にある「REPL※」ボタンをクリックします。
※REPLとは、「Read-Eval-Print Loop」の略で、入力された情報を評価して、その結果を出力する処理ループのことです。この処理ループ中は、対話形式でPythonのソースコードを実行することができます。
- REPL中は、画面の下方に対話用のウィンドウが表示されます。このときは、パソコンとStuduino:bitが常に通信を行っていますので、USBケーブルを外さないようにしてください。もう一度「REPL」ボタンをクリックすると、REPLを終了します。
チャプター6
Pythonの数値データ
プログラミングでは、数値や文字、画像、音楽、動画など様々なデータを扱うことができます。ここでは、データの基本となる「数値」の扱い方を確認します。
6. 1 数値データの扱い方
コンピュータを使って計算を行うものとして初めに思い浮かぶのは「電卓」ではないでしょうか。Pythonでも電卓と同じように様々な計算を行うことができます。
■数値データの種類
電卓を使用するときは、整数と小数の違いを意識することはありませんが、プログラムでは、この2つを別の種類のデータとして扱います。
- 整数
0, 自然数(1, 2, …)、負の整数(-1, -2, …)は整数データとして扱います。 - 浮動小数点数
小数点以下の情報がある数値は浮動小数点数データとして扱います。
■数値演算子
計算を行うことを「演算」といいます。Pythonでは「足し算」「引き算」「掛け算」「割り算」の四則演算をはじめ、様々な数値演算を行えます。
プログラミング言語では、「+」や「-」など計算に使う記号を「演算子」といいます。足し算と引き算の演算子「+」と「-」はそのままですが、掛け算と割り算は半角の「×」「÷」の記号が存在していないため、代わりに掛け算は「 * (アスタリスク)」を、割り算は「/(スラッシュ)」を使います。
演算の種類 | 演算子 |
---|---|
足し算 | + |
引き算 | – |
掛け算 | * |
割り算 | / |
※「+」は「Shift」キー+「;(セミコロン)」キーを、「 * 」は「Shift」キー+「:(コロン)」キーを同時に押すと、それぞれ入力できます。
また、プログラムは基本的に半角文字で書いていきます。そのため、誤った場所で全角入力をしてしまうとエラーが発生してしまいます。特に最初のうちは、全角スペースを入力して、エラーメッセージが表示されることがよくあります。プログラムを書くときは常に半角文字入力になっているか注意しておくと良いでしょう。
では早速、演算を行うプログラムを書いて実行していきましょう。
■整数の足し算
まずは、簡単な「1+2」の足し算を計算します。この計算のように1行のコードで済むプログラムはREPLのウィンドウに書いてすぐに実行することができます。このウィンドウは一般には、「ターミナルウィンドウ」や、単に「ターミナル」と呼ばれています。今後はこの講座でもターミナルと呼んでいきます。
REPLを開き、ターミナルの最後の行の「»>」の横をクリックします。続けて次のコードを書きましょう。
>>> 1+2
※「+」は「Shift」キー+「;(セミコロン)」キーを同時に押すと、入力できます。
書いたプログラムは「Enter」キーを押すと実行されます。次のように3という演算結果が表示されることを確認しましょう。
>>> 1+2
3
>>>
※ターミナルに入力ができないときは、パソコンとStuduino:bitが通信に失敗しています。USBケーブルがしっかりと差し込まれていることを確認し、REPLボタンを押してターミナルを閉じます。そして、もう一度REPLボタンを押してターミナルを再表示してください。
■浮動小数点数の足し算
次は、「1.2+1.8」の小数の足し算を計算しましょう。計算式を入力したら「Enter」キーを押してコードを実行します。
※ターミナルの表示は消去することができません。下のように、続けて計算式を入力していきましょう。
>>> 1+2
3
>>> 1.2+1.8
3.0
>>>
結果は先ほどと同じ3ですが、データが浮動小数点数として扱われているため、表示が小数点以下の付いた「3.0」になっています。
■整数と浮動小数点数の引き算
今度は、「4.9-0.9」の小数の引き算を計算しましょう。
>>> 1+2
3
>>> 1.2+1.8
3.0
>>> 4.9-0.9
4.0
>>>
引かれる数と引く数とのどちらか一方でも浮動小数点数の場合は、演算結果も浮動小数点数として扱われます。
■整数の掛け算
続けて、「4×9」の整数の掛け算を計算しましょう。掛け算では「×」の記号の代わりに、「*(アスタリスク)」を使います。
「 *(アスタリスク) 」は「Shift」キー+「:(コロン)」キーを同時に押すと、入力できます。
>>> 1+2
3
>>> 1.2+1.8
3.0
>>> 4.9-0.9
4.0
>>> 4*9
36
>>>
掛け算では、整数どうしの場合は演算結果は整数として、どちらか一方でも浮動小数点数の場合は演算結果も浮動小数点数として扱われます。
■整数の割り算
最後に、「54÷6」の整数の割り算を計算しましょう。割り算では「÷」の記号の代わりに、「/(スラッシュ)」を使います。
>>> 1+2
3
>>> 1.2+1.8
3.0
>>> 4.9-0.9
4.0
>>> 4*9
36
>>> 54/6
9.0
>>>
答えが「9」ではなく「9.0」となっていることに注目してください。割り算では、答え(商)が割り切れたとしても、常に演算結果は浮動小数点数として扱われます。
■その他の演算子
上の4つの演算子以外にもPythonには次の数値計算に関する演算子が用意されています。
演算の種類 | 演算子 |
---|---|
余りのある割り算の商を求める計算(切り捨ての割り算) | // |
余りのある割り算のあまりを求める計算(剰余) | % |
べき乗計算 | ** |
(演算例)
>>> 10//3
3
>>> 10%3
1
>>> 2**3
8
>>>
■演算子の優先順位
演算子には計算の優先順位が設定されています。1つの式の中に複数の演算子が含まれている場合は、優先順位の高い演算子から演算が行われます。
■Pythonの演算子の優先順位(上から順に優先順位が高い)
演算子 | 演算の種類 |
---|---|
** | べき乗 |
*, /, //, % | 掛け算、割り算、切り捨ての割り算、剰余 |
+, – | 足し算、引き算 |
通常の算術と同じように「+」と「 * 」であれば「 * 」の方が優先されます。ただし、「 ( ) 」で囲まれた式は優先して演算が行われます。
※「 ( 」は「Shift」キー+「8」キーを、「 ) 」は「Shift」キー+「9」キーを同時に押すと、それぞれ入力できます。
(演算例)
>>> 9+2*3
15
>>> (9+2)*3
33
>>>
6. 2 数値データの型変換
ここまでの様々な演算を通して、整数と浮動小数点数は異なるデータとして扱われることを確認してきました。Pythonをはじめとするプログラミング言語では、すべてのデータはそれぞれ決められた「型」に当てはめて扱われます。
■数値データの型を調べる
type()
という命令を使うと、データがどような型で扱われているかを調べることができます。
type( 型を調べたいデータ ) ・・・ データの型を調べます。
実際に次のプログラムを実行して、整数と浮動小数点数がどのような型として扱われているかを調べてみましょう。
>>> type(1)
<class ‘int’>
>>> type(1.1)
<class ‘float’>
>>>
<class
の後に続く'int'
と 'float'
がそれぞれのデータの型名です。「int」は整数を「float」は浮動小数点数を表しています。
※整数は英語で「integer number」、浮動小数点数は「floating-point number」といいます。そのため、それぞれの言葉の始めを取って、「int」「float」で型の名前を表しています。
■数値データの型を変換する
では、浮動小数点数の「9.0」を整数の「9」とするように、別のデータ型として扱うにはどうすれば良いでしょうか。Pythonには、数値データの型を変換する次の命令が用意されています。
int( 整数型へ変換したいデータ )
・・・ データを整数型(int)に変換します。
float( 浮動小数点数へ変換したいデータ )
・・・ データを浮動小数点数型(float)へ変換します。
次のプログラムを実行して、データ型が変換されることを確認しましょう。
※ 型を調べるtype()
の命令の中に、さらにint()
やfloat()
の命令があることに注意してください。
>>> type(float(1))
<class ‘float’>
>>> type(int(1.1))
<class ‘int’>
>>>
上の結果で、1.1という浮動小数点数が整数のデータ型に変換されていることに疑問を持ったのではないでしょうか。実は、int()
を実行すると小数点以下の数は切り捨てられます。
>>> int(1.1)
1
>>>
そのため、上の例では結果的に「1」という整数データの型をtype()
で調べていたことになります。
チャプター7
Pythonの文字列データ
次は、数値と並んで基本となる「文字列」の扱い方を確認します。
注意
WindowsでMuエディタを使用する場合、プログラム内で「¥」を使用することができません。
カリキュラムにあるプログラムや、メンターの共有するプログラムにて「¥」が使用されている場合は、「¥」の代わりに、「\」を使用してプログラムを作成しましょう。
7. 1 文字列データの扱い方
プログラミング言語では、 文字や文章を文字列として扱います。Pythonでは半角英数の他に日本語の全角文字も文字列データとして扱うことができます。
■文字列データの作り方
次のコードのように、文字列をそのまま書いて実行するとエラーが起きます。
>>> hello
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name ‘hello’ isn’t defined
>>>
最後のNameError: name 'hello' isn't defined
がエラーの内容を表していて、「helloという名前のデータが定義されていない」ことを示しています。このようなエラーが起きた理由は、「変数」について学ぶ次のレッスンNo.1-2で説明します。
Pythonで文字列を扱う場合は「 ’(シングルクォーテーション)
」か、「 ”(ダブルクォーテーション)」で文字を囲みます。そうすると、さきほどのエラーは起きません。
※シングルクォーテーションは「Shift」キー+「7」キーを、ダブルクォーテーションは「Shift」キー+「2」キーを同時に押すと、それぞれ入力できます。
>>> ‘hello’
‘hello’
>>>
文字列を扱うときは、文字列をシングルクォーテーションかダブルクォーテーションで囲むことを忘れないでください。なお、Pythonではシングルクォーテーションで囲った文字列とダブルクォーテーションで囲った文字列に明確な違いはありません。
■文字列をターミナルに表示する
Pythonでターミナルへ文字列を文章として表示させるときは、print()
という命令を使います。
print( 文字列データ )
・・・指定された文字列データを文章としてターミナルに表示します。
実際に、次のコードを実行して動作を確認しましょう。
>>> print(‘hello’)
hello
>>>
文章として表示しているので、さきほどと違い、結果にシングルクォ―テーションがありません。
■特殊な文字を文字列データとして扱う方法
文字列はクォーテーションを使用して表記することを学びました。しかし、シングルクォーテーションやダブルクォーテーションそのものを文字列データとして扱いたい場合は注意が必要です。
例えば、「hello ‘python’」という文字列データを扱いたいとき、次のようにコードを書くとエラーが起きます。
>>> print(‘hello ‘python”)
Traceback (most recent call last):
File “<stdin>”, line 1
SyntaxError: invalid syntax
>>>
このエラーは、python
の手前の 「’」が、hello
手前の「’」 に対応した文字列を閉じる用途としてのシングルクォーテーションと判断されてしまうことが原因で起きています。このような場合は、以下のどちらかの対策で文字列データとして扱えるようになります。
- 対策1
シングルクォーテーションを文字列で扱いたいときはダブルクォーテーションで囲みます。逆にダブルクォーテーションを文字列で扱いたいときは、シングルクォーテーションで囲みます。
>>> print(“hello ‘python'”)
hello ‘python’
>>> print(‘hello “python”‘)
hello “python”
>>>
- 対策2
「¥(エン)」や「\(バックスラッシュ)」をクォーテーションの手前につけることで、そのクォーテーションが「文字列のクォーテーション」として扱われます。このときの「¥」や「\」をエスケープシーケンスと呼んでいます。
※Macでは「¥」を、Windowsでは「\」を使います。
>>> print(‘hello \’python\”)
hello ‘python’
>>>
文字列を途中で改行して表示したい場合にも「¥」や「\」を使います。「¥n」や「\n」とすることで、「n」という入力が改行として扱われます。これもエスケープシーケンスです。
>>> print(‘hello\npython’)
hello
python
■文字列を連結する
数値の足し算で使用した演算子「+」を文字列に用いると、2つの文字列を連結することができます。下の例では、文字列の「abc」と「def」を連結して、「abcdef」という文字列データを作成しています。
>>> ‘abc’+’def’
‘abcdef’
>>>
■文字列を繰り返す
数値の掛け算で使用した演算子「 * 」を文字列に用いると、掛けた数字の回数だけ繰り返した新たな文字列データを作成できます。下の例では、文字列の「abc」に「3」を掛けたことで、「abcabcabc」と3回繰り返した文字列データを作成しています。
>>> ‘abc’*3
‘abcabcabc’
>>>
7. 2 数値と文字列の相互変換
数値の「123」と文字列の「’123’」は全く別のデータとして扱われます。数値は数値データとして計算処理に使うことの方が多いかもしれませんが、型変換を行い、文字列として扱った方が便利な場合もあります。
■数値を文字列に変換する
len()
という命令を使うと、文字列データの文字数を調べることができます。
※「len」は英語で「長さ」を表す「length」を省略した表記になっています。
len( 文字列データ )
・・・ 指定した文字列データの文字数を調べます。
例として、「python」という文字列の文字数をlen()
を使って調べてみましょう。
>>> len(‘python’)
6
>>>
これを応用すると、数値データの桁数を簡単に調べることができます。しかし、len()
という命令は、数値データには対応していないため、そのまま指定するとエラーが起きてしまいます。
>>> len(123456)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
そこで、先に数値データを文字列データに変換します。この変換に使えるのが、str()
という命令です。
※「str」はコンピューター用語の英語で「文字列」を表す「string」を省略した表記になっています。
str( 文字列に変換したいデータ )
・・・ 指定したデータを文字列に変換します。
では、str()
を使って書き換えた次のコードを実行してみましょう。
>>> len(str(123456))
6
このように便利な使い方があるため、プログラムの中では、数値を文字列に変換したり、逆に文字列から数値に戻したりすることがよくあります。
■文字列を数値に変換する
文字列から数値に戻したい場合は、既に学習したint()
やfloat()
を使います。
下の例では、文字列の ‘123’ と ‘456’ をint()
で数値に変換し、足し算を行うことで「579」という演算結果となっています。
>>> int(‘123’)+int(‘456’)
579
>>>
チャプター8
課題:Studuino:bitのLEDディスプレイに名前を表示する
レッスンの最後に、文字列のデータを使用して、Studuino:bitのLEDディスプレイに自分の名前をスクロール表示してみましょう。
8. 1 プログラムの作成
ここまでは、ターミナルに1行だけのコードを書いて実行してきましたが、Studuino:bitを制御するためには複数行のコードを書く必要があります。そこで、ここからはエディタエリアを使用していきます。
まずは、下の2行のコードをコピーして、エディタエリアに貼り付けましょう。このたった2行のコードで文字をスクロール表示することができます。
※このコードについての詳しい説明は続きのレッスンで少しずつ行っていきます。
- from pystubit.board import display
- display.scroll(‘Please write your name here.’)
(コピーの手順)※エラーが出たらクオーテーションを書き直してください。
- 上の2行のコードをドラッグしてすべて選択します。選択範囲の上で右クリックをして表示された選択肢から「コピー」をクリックします。
- Muのエディタエリアをクリックして選択し、右クリックで表示された選択肢から「Paste」をクリックします。
少しだけコピーしたコードを解説をすると、1行目はLEDディスプレイ(display
)を使う機能を呼び出す命令になっています。
- from pystubit.board import display
そして、2行目のコードで、呼び出したdisplay
の文字列をスクロール表示するscroll()
という命令を実行しています。この命令は後ろに続く「( )」の中に表示させたい文字列を指定します。
- display.scroll(‘Please write your name here.’)
では、上のコードの「'Please write your name here.'
」の部分を自分の名前の文字列に変更します。Studuino:bitのLEDディスプレイは半角英数字しか表示できないため、名前はローマ字表記にして、文字列データを作成しましょう。
また、scroll()
で数字を表示させたい場合は、数値ではなく文字列として指定する必要があります。次のいずれかの方法を使いましょう。
- クォーテーションで囲んで文字列にする
- from pystubit.board import display
- display.scroll(‘123’)
str()
で文字列に変換する
- from pystubit.board import display
- display.scroll(str(123))
8. 2 プログラムの実行
作成したプログラムを実行するときは、画面上方の「実行」ボタンをクリックします。
実行すると、ターミナルウィンドウが開き、以下のようなメッセージが表示されたあと、Studuio:bitのLEDディスプレイに自分の名前がスクロール表示されます。
MicroPython v1.10-222-g1afc30c-dirty on 2019-06-17; ESP32
module with ESP32 Type “help()” for more information.
>>>
>>>
>>>
>>>
>>>
raw REPL; CTRL-B to exit
>OK
8. 3 プログラムの保存
プログラムを保存するときは、画面上方の「保存」ボタンをクリックします。保存先のフォルダと名前を指定し、プログラムファイルとして保存することができます。
Pythonのプログラムファイルには「.py」という拡張子が付きます。拡張子はコンピューターがファイルの種類を識別するために使われるもので、「.py」の拡張子が付いたファイルは、Pythonのプログラムファイルとして認識されます。
また、保存したプログラムファイルは、画面上方の「開く」ボタンから、開いて編集することができます。
チャプター9
おわりに
9. 1 このレッスンのまとめ
このレッスンでは、以下のことを新たに学習しました。
- これから講座で使用していく電子制御基板「Studuino:bit」の構成
- Pythonのプログラムを作成するソフトウェアの使い方
- 数値データの扱い方
- 文字列データの扱い方
Pythonでは他にも、「リスト」や「タプル」、「辞書」など様々な型のデータを扱うことができます。これらのデータの扱い方は、レッスンNo.2-1で詳しく説明していきます。
9. 2 次回のレッスンについて
次回のNo.1-2では、プログラムでデータを一時的に保存するために使う「変数」について学習していきます。