第4章 Python超入門
この章の目的
Section titled “この章の目的”この章では、後の演習で使用するサンプルコードを読むために、 必要最小限のPython文法を確認します。
Pythonを体系的に学ぶことや、長いプログラムをゼロから作ることが目的ではありません。 完成済みのコードについて、「どの順番で動くか」「どの値を変更できるか」を 読み取れることを目指します。
この章でできるようになること
Section titled “この章でできるようになること”- プログラムが基本的に上から順に実行されることを説明できる
print()で値を表示できる- コメント、変数、数値、文字列、真偽値を区別できる
- 比較演算子と
ifによる条件分岐を読める whileによる繰り返しを読めるimport、関数の呼び出し、defによる関数定義を読める- インデントが処理のまとまりを表すことを説明できる
使用するもの
Section titled “使用するもの”| 分類 | 使用するもの |
|---|---|
| 制御用ボード | Raspberry Pi Pico WまたはPico WH |
| PC | Windows PC |
| 接続 | データ通信対応Micro USBケーブル |
| ソフトウェア | Thonny |
この章では、ブレッドボードや電子部品を使用しません。
第3章を終え、ThonnyのShellに>>>が表示される状態から始めます。
4-1 プログラムを実行する
Section titled “4-1 プログラムを実行する”短い命令はShellへ1行ずつ入力できますが、 複数行のプログラムはThonnyのエディターへ入力します。
まず、次のプログラムをエディターへ入力します。
temperature = 27print("測定値")print(temperature)講師の指示に従って、PC側へch04_python_basics.pyという名前で保存し、
プログラムを実行します。
Shellに次のように表示されます。
測定値27Pythonのプログラムは、通常は上の行から順に実行されます。
temperatureへ27を代入する測定値という文字列を表示するtemperatureに入っている値を表示する
=は「左右が等しい」という意味ではなく、
右側の値を左側の変数へ代入する記号です。
4-2 表示、コメント、変数
Section titled “4-2 表示、コメント、変数”print()で表示する
Section titled “print()で表示する”print()は、文字や数値をShellへ表示する関数です。
temperature = 27print("温度:", temperature, "℃")実行結果:
温度: 27 ℃"温度:"や"℃"は、文字列としてそのまま表示されます。
temperatureは変数のため、その中に入っている値が表示されます。
コメントを付ける
Section titled “コメントを付ける”#から行末まではコメントです。
コメントはプログラムの説明に使い、実行されません。
temperature = 27 # 測定した温度を想定print(temperature)変数へ値を代入する
Section titled “変数へ値を代入する”変数は、プログラムで使用する値に名前を付けて保持するものです。
temperature = 27status = "範囲内"led_on = Falseこの例では、次の3種類の値を使用しています。
| 種類 | 例 | 主な用途 |
|---|---|---|
| 整数 | 27 | 回数、センサー値、しきい値 |
| 文字列 | "範囲内" | メッセージ、状態名 |
| 真偽値 | True、False | オン/オフ、成立/不成立 |
小数は26.5のように記述します。
文字列は"または'で囲みます。
TrueとFalseの先頭は大文字です。
変更してみる
Section titled “変更してみる”temperature = 27をtemperature = 31へ変更して再実行します。
変更した値が表示されれば、変数への代入を確認できています。
4-3 計算と比較
Section titled “4-3 計算と比較”後の章では、測定値の計算や状態判定を行います。
| 記号 | 意味 | 例 |
|---|---|---|
+ | 加算 | temperature + 1 |
- | 減算 | temperature - 1 |
* | 乗算 | value * 2 |
/ | 除算 | total / count |
| 記号 | 意味 | 例 |
|---|---|---|
> | より大きい | temperature > 30 |
>= | 以上 | temperature >= 30 |
< | より小さい | temperature < 20 |
<= | 以下 | temperature <= 20 |
== | 等しい | status == "注意" |
!= | 等しくない | status != "注意" |
比較した結果は、TrueまたはFalseになります。
temperature = 31print(temperature >= 30)実行結果:
True=は代入、==は比較です。
記号の数を間違えないようにします。
4-4 条件によって処理を分ける
Section titled “4-4 条件によって処理を分ける”ifを使うと、条件によって実行する処理を分けられます。
temperature = 31
if temperature >= 30: print("注意")elif temperature >= 25: print("やや高め")else: print("範囲内")このプログラムは、上から順に条件を確認し、 最初に成立した1つの処理を実行します。
| 条件 | 表示 |
|---|---|
| 30以上 | 注意 |
| 25以上30未満 | やや高め |
| 25未満 | 範囲内 |
行の先頭にある空白をインデントと呼びます。 Pythonでは、インデントによって処理のまとまりを表します。
if temperature >= 30: print("注意") # ifの内側
print("判定終了") # ifの外側本教材のサンプルコードでは、インデントに半角スペース4個を使用します。
ifやelif、elseの行末にある:も必要です。
変更してみる
Section titled “変更してみる”temperatureを31、27、20へ変更し、
表示がどのように変わるか確認します。
4-5 処理を繰り返す
Section titled “4-5 処理を繰り返す”whileは、条件がTrueである間、内側の処理を繰り返します。
import time
count = 0
while count < 3: print("測定", count) time.sleep(1) count = count + 1
print("終了")実行結果:
測定 0測定 1測定 2終了このプログラムでは、countが0、1、2のときに処理を繰り返します。
1回ごとにcount = count + 1で値を1増やすため、
やがてcount < 3がFalseになり、繰り返しが終了します。
import timeは、時間に関する機能を使えるようにする命令です。
time.sleep(1)は、プログラムを1秒間待機させる関数呼び出しです。
後のセンサー測定では、次のような終わりのない繰り返しも使用します。
while True: # センサーの値を読み取る処理 time.sleep(1)while Trueは、停止操作を行うまで繰り返します。
実行を止めるときは、Thonnyの停止操作を使用します。
4-6 関数を呼び出す、関数を定義する
Section titled “4-6 関数を呼び出す、関数を定義する”これまでに使用したprint()やtime.sleep()は、
用意されている機能を呼び出す関数呼び出しです。
繰り返し使う処理には、自分で名前を付けて関数として定義できます。
def judge_temperature(value): if value >= 30: return "注意" elif value >= 25: return "やや高め" else: return "範囲内"
temperature = 27status = judge_temperature(temperature)print(status)主な部分を確認します。
| 記述 | 意味 |
|---|---|
def | 関数を定義する |
judge_temperature | 関数の名前 |
value | 関数が受け取る値につけた名前 |
return | 呼び出し元へ結果を返す |
judge_temperature(temperature) | 関数を呼び出す |
defの内側にifがあるため、インデントが2段階になっています。
後の割り込みの章では、イベント発生時に呼び出される関数も登場します。
4-7 importとドットを使った記述
Section titled “4-7 importとドットを使った記述”Pico Wの入出力や時間待ちなどの機能は、 モジュールを読み込んで使用します。
import timeモジュール名を付けて関数を呼び出すときは、.でつなぎます。
time.sleep(1)モジュールから必要な名前だけを読み込む書き方もあります。
from machine import Pin後の章では、次のようなコードが登場します。
led.value(1)これは、ledが持っている機能を呼び出す記述です。
この章では仕組みを詳しく扱わず、
「.の後ろにある機能を呼び出している」と読めれば十分です。
4-8 エラーメッセージを確認する
Section titled “4-8 エラーメッセージを確認する”プログラムに誤りがあると、Shellにエラーメッセージが表示されます。 エラーは故障ではなく、プログラムを確認するための情報です。
| 表示例 | 主な確認箇所 |
|---|---|
SyntaxError | :、括弧、引用符など、文法上の記号 |
IndentationError | 行頭の空白と処理のまとまり |
NameError | 変数名の入力間違い、代入前の使用 |
エラーが表示されたら、次の順序で確認します。
- エラーの種類を確認する
- 行番号が表示されていれば、その行と直前の行を確認する
- 大文字と小文字、
:、括弧、引用符、インデントを確認する - 分からない場合は、メッセージを消さずに講師へ知らせる
設定やコード全体を無作為に変更すると、原因が分からなくなります。 まず、エラーが示している周辺を確認します。
確認プログラム
Section titled “確認プログラム”ここまでの内容を1つのプログラムで確認します。
import time
def judge_temperature(value): if value >= 30: return "注意" elif value >= 25: return "やや高め" else: return "範囲内"
temperature = 28count = 0
while count < 3: status = judge_temperature(temperature) print("温度:", temperature, "℃", "状態:", status)
temperature = temperature + 1 count = count + 1 time.sleep(1)
print("確認終了")実行結果:
温度: 28 ℃ 状態: やや高め温度: 29 ℃ 状態: やや高め温度: 30 ℃ 状態: 注意確認終了このプログラムでは、実際のセンサーの代わりに、
temperatureを1ずつ増やして測定値の変化を再現しています。
変更してみる
Section titled “変更してみる”次のいずれか1つを変更し、結果を確認します。
temperature = 28の値value >= 30のしきい値count < 3の繰り返し回数time.sleep(1)の待ち時間
- エディターのプログラムを実行できる
- 変数の値を変更し、表示の変化を確認できる
-
=と==の違いを説明できる -
ifとインデントの範囲を読み取れる -
whileが繰り返す範囲を読み取れる - 関数の定義と呼び出しを見分けられる
- エラーが表示されたとき、種類と行番号を確認できる
- Pythonのプログラムは、通常は上から順に実行されます
- 変数へ値を代入すると、値に名前を付けて利用できます
print()は、文字列や変数の値をShellへ表示しますifは条件によって処理を分け、whileは条件が成立する間、処理を繰り返します- Pythonでは、インデントが処理のまとまりを表します
importで必要な機能を読み込み、関数を呼び出して利用しますdefで関数を定義し、必要な場所から呼び出せます- エラーメッセージは、種類、行番号、周辺の記号から確認します
次の第5章では、Pythonから内蔵LEDと外付けLEDを制御し、 デジタル出力の基本を確認します。