
武蔵野個別指導塾の特徴
【情報I】プログラミングの基礎①を図解で総まとめ—変数・演算・データ型・入出力(Python の例)|武蔵野個別指導塾

代入で値が変わる順序、整数と文字列の違い、入力を数値に変える方法を、3枚の図と例題でたどります。エラーの読み方まで学び、自分で出力を予測して確かめられるようにしましょう。
よくあるのは、冬期講習の初日の教室で、画面にある「x = x + 1」を見て、数学では成り立たない式なのに、なぜプログラムは動くのかと手が止まる場面です。右辺から左辺を引けば「0 = 1」になりそうですが、この行は等式の主張ではありません。いまの値を使って計算し、その結果を次の値として覚える命令です。
プログラミングの最初の壁は、長い命令を暗記することよりも、普段使う数字や記号を別の決まりで読むことにあります。同じ「3」でも、計算する整数なのか、画面から受け取った文字なのかによって、その後にできる処理が変わります。見た目だけを追うと、短いプログラムでも結果を読み違えてしまいます。
まずは変数の値を1行ずつ追い、演算とデータ型を区別して、入力から出力までをつなぎましょう。最後には、エラーが出たときにも、どの行の何を確かめればよいかを自分の言葉で説明できることを目指します。
この単元で身につけること
- 変数と代入を区別します。変数は値を名前で扱う仕組みで、代入はその名前に値を結びつける操作です。代入前と代入後を分けて記録できるようにします。
- 演算の種類と順序を読み取ります。足し算だけでなく、割り算の結果、商と余り、累乗、括弧の役割を確かめ、意図した計算式を書けるようにします。
- 整数・実数・文字列・論理の違いを説明します。見えている文字が同じでも型が違う場合を見つけ、どの処理に使う値なのかを考えます。
- 入力・処理・出力をつなぎます。入力した文字列を必要な型に変換し、計算結果を表示するまでを、途中の値も含めて追えるようにします。
- コメントとエラー表示を活用します。処理の目的を短く残し、エラーの種類と該当箇所を手がかりに、原因を絞って修正します。
前の単元で学ぶアルゴリズムの「手順を順番に実行する」という考え方を、ここではPythonの具体的な命令に移します。数学で身につけた計算の順序は使えますが、代入記号の読み方や入力の扱いには新しい約束があります。
基本の考え方
変数は名前、代入は値を結び直す操作です
変数は、プログラムの中で値を名前によって扱うための仕組みです。たとえば点数に score、人数に count という名前をつければ、その値が何を表すのかを読み取りやすくなります。初めは「名前のついた箱に値を入れる」と考えてもよいですが、Pythonでは、正確には名前が値を表すオブジェクトに結びつきます。この単元の数値や文字列の例は、各名前がいまどの値を指しているかを追えば読めます。
代入に使う「=」は、左右が等しいという宣言ではありません。右辺を先に評価し、得られた結果を左辺の変数に結びつけます。x の値が5なら、x = x + 1 は、右辺の x を5として足し算を行い、結果の6を x の新しい値にする操作です。左辺の x が先に変わってから右辺を計算するわけではありません。
図1のように、処理の前後を別の枠にして書くと、同じ変数名が出てきても混乱しにくくなります。右辺を計算している間は古い値を読み、計算が終わったところで新しい値に置き換える、と順番をつけて読んでください。

同じ変数に再び代入すると、その名前から取り出す値は新しくなります。一方、先に y = x として y に数値を代入していても、その後の x の変更に合わせて y まで自動的に変わるわけではありません。代入は将来ずっと成り立つ関係式を登録する操作ではなく、その行を実行した時点の値を扱う操作だからです。
名前は、自分が読み返したときに意味のわかるものにします。Pythonでは大文字と小文字を区別するため、score と Score は別の名前です。数字を先頭に置くことや、途中に空白を入れることはできません。複数の語をつなぐなら total_score のように下線を使うと読みやすくなります。また、print や input のような既存の機能と同じ名前は避けると、その機能を使えなくしてしまう混乱を防げます。
データ型によって値の意味と扱いが決まります
データ型とは、値の種類と、その値に対して可能な操作を定めるものです。この単元では、整数型の int、実数を近似して扱う浮動小数点数型の float、文字列型の str、論理型の bool を押さえます。Pythonでは通常、変数を使う前に型名を書いて宣言する必要はなく、代入する値に応じてその時点の型が決まります。厳密には型を持つのは値の側であり、同じ変数名に異なる型の値を代入することもできます。
整数は 12 や -3 のような値です。float は 2.5 や 4.0 のように小数点を含む形で書けます。4 と 4.0 は数として等しくても型は異なります。float は実数すべてを正確に表す仕組みではないため、小数の計算には丸めによる誤差が出ることがあります。「画面上で小数だから常に正確な値」とは考えないようにします。
文字列は、"12" や "合計" のように引用符で囲んで書きます。引用符は文字列の範囲を示す記号であり、通常、表示される文字列の中身には含まれません。文字列の "12" は数字の形をした文字の並びであって、整数の12そのものではありません。2つの文字列を「+」でつなぐと連結になり、"12" + "3" の結果は "123" になります。
論理型は True と False の2つの値で、条件が成り立つかどうかなどを表します。先頭を大文字で書き、引用符をつけないことが必要です。"True" と書けば、それは論理値ではなく4文字の文字列です。論理型は次の単元の条件分岐につながりますが、ここでは「真偽を値として扱える」という点を押さえましょう。値の型を調べたいときは type という機能を利用でき、見た目では判断しにくい場面の確認に役立ちます。
演算・入力・出力をひと続きで考えます
Pythonの算術演算では、加算に「+」、減算に「-」、乗算にアスタリスク1個、除算に「/」、累乗にアスタリスク2個を使います。「//」は商を負の無限大の方向へ丸めた値を求める演算で、正の整数どうしなら割り算の整数部分を求めるものとして読めます。「%」は余りを求めます。たとえば17を5で割ると、通常の除算は3.4、整数の商は3、余りは2です。
負の値を扱うときには、「//」を単に小数部分を取り除く操作と覚えないことが重要です。-17 を5で割った値は -3.4 ですが、「//」の結果は -4 です。余りは、割られる数が「割る数と商の積に余りを足した値」になるように決まり、この場合は3です。最初は正の整数の商と余りから確かめ、負の値では丸める方向に戻って判断します。
演算の順序は、括弧の中、累乗、乗除や商・余り、加減という基本を押さえます。同じ優先順位の加減や乗除は通常左から計算しますが、累乗を連続させる場合などは別の決まりがあるので、意図が伝わるように括弧を使うと確実です。数式で省略する乗算記号も、プログラムでは省けません。括弧の前に数値を置くだけでは掛け算の命令になりません。
入力には input、出力には print を使います。input が返すのは文字列です。数字を入力したという人間側のつもりだけで、自動的に整数へ変わることはありません。整数として使うなら int、実数として使うなら float によって変換します。一方、出席番号のように足し算をしない識別用の文字は、先頭の0を残したいこともあるため、文字列のまま扱うほうが適切な場合があります。
print の括弧内に複数の値をカンマで区切って渡すと、標準では値の間に空白を入れ、末尾で改行して表示します。変数に値を代入するだけでは、プログラムをファイルとして実行したときにその値は表示されません。計算することと、結果を人が見える形に出すことを分けて考えましょう。
例題で解き方を確かめる
例題1 代入の順序から出力を予測する
次のプログラムを実行すると、何が表示されるでしょうか。x と y の最終値を、実行前に予測します。
x = 5
y = x
x = x + 1
print(x, y)
- 1行目のあとに x の値を5と記録します。次の行の右辺は、この時点で覚えている値を使って評価するからです。
- 2行目では右辺の x が5なので、y の値も5と記録します。ここで y に入るのはその時点の数値であり、x を後から追い続ける命令ではありません。
- 3行目の右辺を5 + 1として計算し、x の欄だけを6に書き換えます。y への代入は行われていないので、y の欄を変える理由はありません。
- print に渡す値を左から読み、6と5を空白で区切って表示します。表示の順序は変数を作った順ではなく、括弧内に書いた順で決まります。
答え:出力は 6 5 です。
紙で追うなら、行番号、x、y の3列を用意すると整理できます。1行目では y はまだ未定義、2行目では x と y がともに5、3行目では x が6で y が5です。未定義の欄に勝手に0を書かないようにしてください。まだ値が結びついていないことと、数値の0が入っていることは別です。
もし2行目を3行目の後へ移せば、y に入る値も変わります。プログラムは使われた記号だけで意味が決まるのではなく、命令の並ぶ順序も意味の一部です。図1の矢印に沿って右辺の評価と代入を順番にたどる読み方が、この違いを見つける手がかりになります。
例題2 商・余りと演算の優先順位を確かめる
17個の品物を5個ずつまとめるとき、まとまりの数と余りを求めます。あわせて、括弧がある式とない式の結果を比べましょう。
items = 17
size = 5
print(items // size, items % size)
print(items / size)
print(2 + 3 * 4, (2 + 3) * 4)
print(2 ** 3)
- 最初の出力は正の整数どうしの商と余りなので、5個のまとまりを何組作れるか考えます。3組なら15個を使い、2個余るため、商が3、余りが2です。
- 次の出力は「/」による除算なので、余りを切り離さず17 ÷ 5を計算します。Pythonの「/」では整数どうしの除算でも float の結果になり、ここでは3.4です。
- 括弧のない式は乗算を先に行い、2 + 12で14にします。括弧のある式は2 + 3を先に行うため、5の4倍で20です。
- 最後は2の3乗を計算します。同じ数を何回掛けるかを表す演算なので、結果は8です。
答え:出力は順に 3 2、3.4、14 20、8 の4行です。
商と余りは、時間を分と秒に分けるときや、同じ個数ずつ配るときにも使えます。ただし、何を1まとまりにするかを先に決めなければ、除数が定まりません。式から意味を想像するだけでなく、「何個を何個ずつに分けるのか」を言葉にしてから変数名を選ぶと、値を取り違えにくくなります。
また、計算の途中で割る数が0になる場合、除算や商・余りの演算はできず、ZeroDivisionError になります。数値として入力できたことと、その処理に使ってよい数値であることは別です。入力の範囲を確かめる考え方は、後で条件分岐を学ぶときにも必要になります。
例題3 入力した数を計算に使う
1箱に6本入っている鉛筆について、箱の数を入力して合計本数を表示します。入力する値を3としたとき、型の変化と結果を説明しましょう。
raw = input()
boxes = int(raw)
pencils = boxes * 6 # 1箱に6本
print("合計", pencils, "本")
- input が受け取った値を文字列として確認します。キーボードから3を入力しても、raw に結びつくのは文字列の
"3"だからです。 - int によって文字列を整数へ変換し、boxes に3を代入します。鉛筆の本数を算術演算で求めたいので、文字の連結や繰り返しとは区別する必要があります。
- 整数の3に6を掛けて、pencils に18を代入します。右側の番号記号から行末までのコメントは、計算の目的を人に伝えるもので、処理の対象にはなりません。
- print が受け取る3つの値を順に表示します。文字列と整数をカンマで区切って渡しているため、無理に同じ型へそろえて足し算する必要はありません。
答え:入力が 3 のとき、プログラムの出力は 合計 18 本 です。
図2のように、入力の後に型の変換を置くと、どこから数として計算するのかが見えるようになります。図中の引用符は文字列であることを示すためのもので、入力するときに引用符まで打ち込むという意味ではありません。

この例では input の括弧内が空なので、入力を促す案内文はプログラムから表示されません。実行環境によっては、打ち込んだ3が画面に見えますが、それと print が出した結果は区別します。input の括弧内に文字列を渡して案内を表示する書き方もありますが、その場合は案内も画面表示に含まれます。
コメントは「掛け算する」のように命令をそのまま読み上げるより、「1箱に6本」のように数値の意味を残すと役に立ちます。値の由来がわかれば、箱の中身を変えるときに直す場所を判断できます。なお、引用符の中の番号記号は文字列の一部であり、コメントの始まりにはなりません。
つまずきやすいところと直し方
誤り1 代入を等式と読み、左右を逆にする
誤った書き方は 5 = x として、x を5にしたつもりになることです。数学の等式なら左右を入れ替えても同じ関係ですが、Pythonの代入では、左辺は値を受け取れる対象でなければならず、数値の5には代入できません。正しい書き方は x = 5 です。
同じ発想で、x + 1 = x と書いて値を1増やそうとしても動きません。右辺で新しい値を作り、左辺に変数名を書くという順番に戻して、x = x + 1 と直します。2つの値が等しいか調べる比較には「==」を使いますが、それは代入とは別の操作です。「=」を見たら、まず右辺に読む順序を置く習慣をつけましょう。
誤り2 文字列と数値を見た目で混ぜる
誤った書き方は、raw が文字列の "3" なのに raw + 2 として5を求めようとすることです。この組み合わせは文字列の連結にも数の足し算にもそのまま使えず、TypeError になります。正しい書き方は、数の計算が目的なら int(raw) + 2 です。逆に文字としてつなぎたいなら、2を文字列に変えてから連結します。
ただし、int をつければどんな入力でも変換できるわけではありません。文字列の "3.5" は整数の表記ではないため、そのまま int に渡すと ValueError になります。小数を受け取る目的なら float を使い、箱の数のように整数が必要なら、入力内容を整数に直す必要があります。float を int に変えると小数部分が0の方向へ切り捨てられるため、変換を増やすだけでは入力の誤りを解決したことになりません。
誤り3 変数名の違いを見落として別の場所を直す
誤った書き方は、score = 80 の後で print(Score) とすることです。値を入れた score と表示しようとする Score は別の名前なので、Score をどこでも定義していなければ NameError になります。正しい書き方は、定義済みの名前に合わせた print(score) です。
この場合、数字の80を変えても原因は取り除けません。図3のように、エラーの種類、示された場所、そこで使う値や名前の順で確認し、原因に対応する箇所を直してから再実行します。一度に何か所も変えると、どの変更が効いたのかを判断しにくくなります。

エラー表示では、最後の行付近にある種類と説明が最初の手がかりです。次に自分のプログラムの行番号と該当行を見ます。文法の誤りを表す SyntaxError では、引用符や括弧の閉じ忘れなどがあり、示された位置の少し前が原因のこともあります。TypeError は型と操作の組み合わせ、ValueError は変換などに渡した値の内容、NameError は名前の定義や綴りを疑う目印として使えます。
エラーが消えたことと、目的どおりに動くことも区別してください。例題1で誤って y に6が入る順序に書き換えても、実行自体は成功します。このような結果の誤りは、予測した値と実際の出力を比べ、各行の後の値を追って見つけます。英語の表示をすべて翻訳できなくても、種類・場所・値という確認先が決まれば、修正に向けた一歩を踏み出せます。
練習問題
練習1 どの変数が書き換わるか
次の出力を予測してください。各代入の後で a と b の値を書き、更新されない変数も残して確かめましょう。
a = 8
b = a + 2
a = b - 3
print(a, b)
練習2 秒数を分と秒に分ける
次のプログラムが何を表示するか答えてください。商と余りのどちらが分になり、どちらが残りの秒になるのかも説明しましょう。
seconds = 185
minutes = seconds // 60
rest = seconds % 60
print(minutes, rest)
練習3 文字の連結と数の加算を見分ける
次のプログラムに7を入力します。2行の出力を予測し、それぞれの「+」が何を行っているか説明してください。
raw = input()
print(raw + "2")
print(int(raw) + 2)
答えと解説
練習1の答えは 7 10 です。a に8が入り、次に b に8 + 2の10が入り、最後に a だけが10 – 3の7へ変わります。最後の代入は b の値を読むだけで、b を書き換える命令ではありません。a と b がいつも一定の関係を保つと考えてしまった場合は、代入が行われた時点に戻して読み直します。
練習2の答えは 3 5 です。185秒には60秒のまとまりが3個あり、180秒を使って5秒残ります。60と3の積に5を足して185へ戻ることが検算になります。通常の除算だけでは「何分と何秒」という2つの値に分けられないため、商と余りを別々に求めています。
練習3の答えは、1行目が 72、2行目が 9 です。1行目は文字列どうしを連結し、2行目は入力を整数の7に変えてから数値の2を足しています。表示された72に引用符がないからといって、計算途中の型まで整数だったとは判断できません。出力だけでは区別しにくいときこそ、入力からの処理の順序が根拠になります。
次の単元へのつながりと家庭での確かめ方
次の条件分岐では、変数の値を比べ、論理値に応じて実行する処理を選びます。繰り返しでは、回数や合計を変数に保存し、代入によって少しずつ更新します。入力した値の型が合っていること、比較する前に必要な値が用意できていることは、その両方の土台になります。
家庭では、まず5分で例題1の初期値だけを別の整数へ変え、紙で出力を予測してから実行する方法を試せます。操作の意味がわかっていれば、最初の数が変わっても同じ順序で説明できます。もう1つは、5分で練習3の入力を別の数字へ変え、連結の結果と加算の結果をそれぞれ声に出して読む方法です。使える端末がなくても、紙の上で型と値を併記すれば確かめられます。
個別指導では、出力がずれた行から、右辺で読んだ値、代入前の値、入力時の型まで戻って確認します。お子さまの学習をご家庭で見守るときも、正解だけを聞くより「この行の直前は何が入っていたか」と尋ねると、理解が止まった箇所を見つけやすくなります。
まとめ
短いプログラムを読むときも、最終結果を勘で当てる必要はありません。ある行で読んだ値と、その行の後に残る値を分けて記録すれば、予測と実行結果が食い違った場所を具体的に指せます。その場所が見えれば、変更の理由も言葉にできます。
冬期講習の初日に意味の通らなかった代入の1行も、処理の前後を分ければ説明できる命令に変わります。プログラムを読めたという確かさは、画面に出た答えではなく、その答えに至る値の変化を自分で追えたことに宿ります。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




