Skip to content

第4章 Python超入門

この章では、後の演習で使用するサンプルコードを読むために、 必要最小限のPython文法を確認します。

Pythonを体系的に学ぶことや、長いプログラムをゼロから作ることが目的ではありません。 完成済みのコードについて、「どの順番で動くか」「どの値を変更できるか」を 読み取れることを目指します。

この章でできるようになること

Section titled “この章でできるようになること”
  • プログラムが基本的に上から順に実行されることを説明できる
  • print()で値を表示できる
  • コメント、変数、数値、文字列、真偽値を区別できる
  • 比較演算子とifによる条件分岐を読める
  • whileによる繰り返しを読める
  • import、関数の呼び出し、defによる関数定義を読める
  • インデントが処理のまとまりを表すことを説明できる
分類使用するもの
制御用ボードRaspberry Pi Pico WまたはPico WH
PCWindows PC
接続データ通信対応Micro USBケーブル
ソフトウェアThonny

この章では、ブレッドボードや電子部品を使用しません。 第3章を終え、ThonnyのShellに>>>が表示される状態から始めます。

短い命令はShellへ1行ずつ入力できますが、 複数行のプログラムはThonnyのエディターへ入力します。

まず、次のプログラムをエディターへ入力します。

ch04_python_basics.py
temperature = 27
print("測定値")
print(temperature)

講師の指示に従って、PC側へch04_python_basics.pyという名前で保存し、 プログラムを実行します。

Shellに次のように表示されます。

測定値
27

Pythonのプログラムは、通常は上の行から順に実行されます。

  1. temperature27を代入する
  2. 測定値という文字列を表示する
  3. temperatureに入っている値を表示する

=は「左右が等しい」という意味ではなく、 右側の値を左側の変数へ代入する記号です。

print()は、文字や数値をShellへ表示する関数です。

ch04_print.py
temperature = 27
print("温度:", temperature, "")

実行結果:

温度: 27 ℃

"温度:""℃"は、文字列としてそのまま表示されます。 temperatureは変数のため、その中に入っている値が表示されます。

#から行末まではコメントです。 コメントはプログラムの説明に使い、実行されません。

ch04_comment.py
temperature = 27 # 測定した温度を想定
print(temperature)

変数は、プログラムで使用する値に名前を付けて保持するものです。

ch04_variables.py
temperature = 27
status = "範囲内"
led_on = False

この例では、次の3種類の値を使用しています。

種類主な用途
整数27回数、センサー値、しきい値
文字列"範囲内"メッセージ、状態名
真偽値TrueFalseオン/オフ、成立/不成立

小数は26.5のように記述します。 文字列は"または'で囲みます。 TrueFalseの先頭は大文字です。

temperature = 27temperature = 31へ変更して再実行します。 変更した値が表示されれば、変数への代入を確認できています。

後の章では、測定値の計算や状態判定を行います。

記号意味
+加算temperature + 1
-減算temperature - 1
*乗算value * 2
/除算total / count
記号意味
>より大きいtemperature > 30
>=以上temperature >= 30
<より小さいtemperature < 20
<=以下temperature <= 20
==等しいstatus == "注意"
!=等しくないstatus != "注意"

比較した結果は、TrueまたはFalseになります。

ch04_compare.py
temperature = 31
print(temperature >= 30)

実行結果:

True

=は代入、==は比較です。 記号の数を間違えないようにします。

4-4 条件によって処理を分ける

Section titled “4-4 条件によって処理を分ける”

ifを使うと、条件によって実行する処理を分けられます。

ch04_if.py
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個を使用します。 ifelifelseの行末にある:も必要です。

temperature312720へ変更し、 表示がどのように変わるか確認します。

whileは、条件がTrueである間、内側の処理を繰り返します。

ch04_while.py
import time
count = 0
while count < 3:
print("測定", count)
time.sleep(1)
count = count + 1
print("終了")

実行結果:

測定 0
測定 1
測定 2
終了

このプログラムでは、count012のときに処理を繰り返します。 1回ごとにcount = count + 1で値を1増やすため、 やがてcount < 3Falseになり、繰り返しが終了します。

import timeは、時間に関する機能を使えるようにする命令です。 time.sleep(1)は、プログラムを1秒間待機させる関数呼び出しです。

後のセンサー測定では、次のような終わりのない繰り返しも使用します。

while True:
# センサーの値を読み取る処理
time.sleep(1)

while Trueは、停止操作を行うまで繰り返します。 実行を止めるときは、Thonnyの停止操作を使用します。

4-6 関数を呼び出す、関数を定義する

Section titled “4-6 関数を呼び出す、関数を定義する”

これまでに使用したprint()time.sleep()は、 用意されている機能を呼び出す関数呼び出しです。

繰り返し使う処理には、自分で名前を付けて関数として定義できます。

ch04_function.py
def judge_temperature(value):
if value >= 30:
return "注意"
elif value >= 25:
return "やや高め"
else:
return "範囲内"
temperature = 27
status = 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変数名の入力間違い、代入前の使用

エラーが表示されたら、次の順序で確認します。

  1. エラーの種類を確認する
  2. 行番号が表示されていれば、その行と直前の行を確認する
  3. 大文字と小文字、:、括弧、引用符、インデントを確認する
  4. 分からない場合は、メッセージを消さずに講師へ知らせる

設定やコード全体を無作為に変更すると、原因が分からなくなります。 まず、エラーが示している周辺を確認します。

ここまでの内容を1つのプログラムで確認します。

ch04_check.py
import time
def judge_temperature(value):
if value >= 30:
return "注意"
elif value >= 25:
return "やや高め"
else:
return "範囲内"
temperature = 28
count = 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ずつ増やして測定値の変化を再現しています。

次のいずれか1つを変更し、結果を確認します。

  • temperature = 28の値
  • value >= 30のしきい値
  • count < 3の繰り返し回数
  • time.sleep(1)の待ち時間
  • エディターのプログラムを実行できる
  • 変数の値を変更し、表示の変化を確認できる
  • ===の違いを説明できる
  • ifとインデントの範囲を読み取れる
  • whileが繰り返す範囲を読み取れる
  • 関数の定義と呼び出しを見分けられる
  • エラーが表示されたとき、種類と行番号を確認できる
  • Pythonのプログラムは、通常は上から順に実行されます
  • 変数へ値を代入すると、値に名前を付けて利用できます
  • print()は、文字列や変数の値をShellへ表示します
  • ifは条件によって処理を分け、whileは条件が成立する間、処理を繰り返します
  • Pythonでは、インデントが処理のまとまりを表します
  • importで必要な機能を読み込み、関数を呼び出して利用します
  • defで関数を定義し、必要な場所から呼び出せます
  • エラーメッセージは、種類、行番号、周辺の記号から確認します

次の第5章では、Pythonから内蔵LEDと外付けLEDを制御し、 デジタル出力の基本を確認します。