コードを実行して結果を見る|Pythonの最初の1行

このページはプロモーション(広告)を含みます。

Pythonの最初の1行(初級・読む20分+演習25分)

この授業のゴール

仕事でどう使うか

データを扱う仕事では、同じ計算を何十回も、しかも間違えずに繰り返す場面が頻繁に出てきます。電卓や表計算の手作業では、手順が人の頭の中にしか残りません。コード(コンピューターへの指示を文字で書いたもの)にすれば、手順が文字として残り、他の人が読み、同じ結果を再現できます。

路線 この授業の使いどころ
DS(データサイエンティスト) 集計や前処理の手順をコードにして、翌月も同じ結果を出せるようにする。分析レポートの数値の根拠として、コードを提出する
ML(機械学習エンジニア) 学習データの作成や評価の計算を、毎回同じ手順で実行する。コードが上から順に動く性質を前提に、前処理と評価の順序を設計する
DX(DX推進・AI企画) 業務の計算ルール(割引・税)をコードで書き出し、現場の担当者と「この式で合っていますか」と確認する。エンジニアが書いたコードを読んで、仕様との差に気づく
RS(研究者) 解析手順を再現可能な形で残す。論文の数値を、第三者が同じコードで再計算できるようにする

この授業のゴールは、難しいプログラムを書くことではありません。1行を実行し、出力を見て、何が起きたかを説明できることです。ここができれば、以降のPythonの学習がすべて「実行して確かめる」形で進められます。

前提

次の知識があれば十分です。不安な場合は先に戻ってください。

この授業のコードはすべて画面内で実行できます。実行 ボタンを押すと、その場でPythonが動いて結果が表示されます。自分のパソコンにPythonを入れる必要はありません。

身近な状況:税込価格を、毎回電卓で計算している

ネットショップの担当者が、商品の割引後価格を毎日計算しているとします。定価 1000 円の商品を 10% 割引にするとき、電卓では「1000 × 0.9」と打ち、結果の 900 をメモします。商品が 50 個あれば、50 回打ちます。途中で割引率が 15% に変わったら、全部やり直しです。さらに、昨日どう計算したかは、打った本人しか覚えていません。

コードを使うと、次のようになります。

print(1000 * (1 - 0.1))

1行だけのコードですが、これで「定価 1000 円から 10% 引いた価格を計算して、画面に表示する」という手順が文字として残りました。割引率を変えたいときは 0.1 を 0.15 に書き換えて、もう一度実行するだけです。出力の 900.0 が、計算結果です。

ここで確認すること:コードを書く目的は、計算を速くすることだけではありません。手順を残し、誰でも同じ結果を再現できることが、仕事で使う最大の理由です。

直感的な説明:コードは「上から順に読む手順書」

料理のレシピを思い浮かべてください。「1. 水を沸かす 2. 麺を入れる 3. 3分待つ」の順に作業します。順番を入れ替えると、うまくいきません。

Pythonのコードも同じで、上の行から下の行へ、1行ずつ順番に実行されます。コンピューターは、人間のように「たぶんこういう意味だろう」と補ってはくれません。書かれたとおりに、書かれた順に、実行するだけです。

もう1つ大切なのは、計算しただけでは画面に出ないことです。レシピで言えば、麺をゆでても、器に盛らなければ誰にも見えません。Pythonでは、結果を画面に出す命令が print(プリント:表示する)です。この授業では、結果を見たいときに必ず print を使います。

たとえ Pythonでの対応
レシピの1つの手順 コードの1行
手順を書いた順に実行する 上から下へ順に実行される
器に盛って見せる print(...) で画面に出力する
手順の横に書くメモ # で始まるコメント(実行されない)

正確な定義:式・文・出力・コメント

ここで、使う言葉を正確に決めます。

算術に使う記号(演算子)は次のとおりです。数学の記号と少し違う点に注意してください。

書き方 意味 例 結果
+ 足し算 3 + 2 5
- 引き算 3 - 2 1
* 掛け算(×ではなく *) 3 * 2 6
/ 割り算(÷ではなく /) 3 / 2 1.5
** べき乗 3 ** 2 9
( ) 先に計算する (1 + 2) * 3 9

計算順序は算数と同じで、かっこの中、掛け算・割り算、足し算・引き算の順です(四則計算と計算順序)。print(式) と書くと、まず括弧の中の式が計算され、その値が画面に出ます。print の括弧は「引数」(関数に渡す値)を入れる場所で、ここでは表示したい値が引数です。

数字は半角で書きます。全角の 1000 や、全角スペース、全角の括弧 ( ) は、見た目が似ていてもPythonには文法として通じません(この授業の失敗例で確かめます)。

段階付き例題:定価1000円・割引率10%の割引後価格

問題:定価 1000 円の商品を 10% 割引にしたときの価格と、値引き額を求める。

ステップ1:数学の式を書く。10% は割合に直すと $0.1$ です。割引後の価格は
$$ \text{割引後価格} = \text{定価} \times (1 - \text{割引率}) $$
です。ここで定価は円、割引率は 0 以上 1 以下の小数(10% なら $0.1$)です。数値を入れると $1000 \times (1 - 0.1) = 1000 \times 0.9 = 900$ です。

ステップ2:Pythonの式に直す。$\times$ は *、かっこはそのままです。1000 * (1 - 0.1) になります。

ステップ3:途中の値に名前を付ける。式に出てくる値に名前を付けると、読みやすくなります。price = 1000 は「price という名前に 1000 を結びつける」という意味です。= は等しいという意味ではなく、右の値を左の名前に入れる操作です(詳しくは 変数と代入)。

# 定価と割引率
price = 1000
rate = 0.1

# 割引後価格と値引き額
discounted = price * (1 - rate)
saved = price - discounted

print(discounted)
print(saved)

ステップ4:1行ずつ追う。

行 実行される内容 この時点の状態
price = 1000 price に 1000 を入れる price は 1000
rate = 0.1 rate に 0.1 を入れる rate は 0.1
discounted = ... 1000 * (1 - 0.1) を計算して入れる discounted は 900.0
saved = ... 1000 - 900.0 を計算して入れる saved は 100.0
print(discounted) 900.0 を表示する 画面に 900.0
print(saved) 100.0 を表示する 画面に 100.0

ステップ5:結果の意味を読む。出力は 900.0 と 100.0 です。.0 が付くのは、割り算や小数(0.1)が混ざった計算の答えが小数の型(float)になるからです。意味は「900円」「100円」と同じです。型の違いは 数値・文字列・真偽値 で扱います。

ステップ6:検算する。900 + 100 = 1000 で、定価に戻ります。コードの出力を見たら、必ず自分の手計算(または別の方法)と照らし合わせてください。

操作して理解する:値を変えて、実行前に予想する

次のコードを実行する前に、出力を予想して紙に書いてください。そのあと実行して、予想と比べます。

price = 1200
rate = 0.25
print(price * (1 - rate))
print(price * 1 - rate)
print((price - 100) * (1 - rate))

予想の手順は次のとおりです。

  1. 1行目の出力:$1200 \times (1 - 0.25) = 1200 \times 0.75 = 900$ なので 900.0。
  2. 2行目の出力:かっこがないので、$1200 \times 1$ を先に計算して $1200 - 0.25 = 1199.75$ なので 1199.75。かっこの有無で、意味がまったく変わります。
  3. 3行目の出力:先に $(1200 - 100) = 1100$ を引き、$1100 \times 0.75 = 825$ なので 825.0。

次に、price と rate を自分で書き換えて実行してください。たとえば rate = 0.5 にすると1行目は 600.0 になるはずです。予想が外れたら、どの行の計算順序を読み違えたかを探します。これが、デバッグ(誤りの原因を探して直すこと)の第一歩です。

もう1つ、コメントの使い方を試します。行の先頭に # を付けると、その行は実行されなくなります。

price = 1000
# print(price * 2)   ← この行は実行されない
print(price * 3)

出力は 3000 だけです。# は、メモを書くときにも、一時的に命令を止めるときにも使います。

発展:実行環境とPythonの動き方

この教材のコードは、ブラウザの中で動く Pyodide(パイオダイド:ブラウザ上で動くPython)で実行されます。自分のパソコンにインストールしたPython、会社のサーバー、ノートブック形式のツール(Jupyterなど)でも、基本の文法は同じです。ただし、次の違いがあります。

項目 この教材の実行ボタン ノートブック(Jupyter等) ファイルを保存して実行
実行の単位 ボタンごとに新しい状態で実行 セル(ブロック)ごと。前のセルの変数が残る ファイル全体を上から実行
画面に出る値 print で表示したもの セルの最後の式の値も自動表示されることが多い print したものだけ
注意点 前のブロックの変数は使えない 実行順序を入れ替えると、見た目の順と結果がずれる 毎回最初からなので再現しやすい

特にノートブックでは、セルを下から上へ実行したり、同じセルを何度も実行したりすると、画面の見た目の順番とは違う順番で変数が書き換わり、他人が再現できない結果になることがあります。仕事で結果を渡すときは、「最初から最後まで順に実行し直して、同じ結果になるか」を確認してから渡すのが基本です。

また、Pythonはインタープリタ(書いたコードをその場で読み込んで実行する仕組み)で動きます。C言語のように事前に全体を機械語へ変換してから実行する言語と違い、書いてすぐ実行できるので、小さく試して確かめる使い方に向いています。ただし、実行速度が必要な大量計算は、NumPyなどのライブラリ(Pythonで動く部品集)に任せます。これは 「ndarrayとdtype」(有料版) 以降で扱います。

よくある失敗

失敗1:printを書かず、結果が表示されない

誤り:計算の式だけを書いて実行する。

price = 1000
discounted = price * 0.9
print('--- 実行終了 ---')

discounted = price * 0.9 は計算して名前に入れるだけで、画面には何も出しません。出力は --- 実行終了 --- の1行だけです。計算が行われたかどうかは、見た目からはわかりません。

直し方:結果を見たい値は print(discounted) で表示する。表示した値を、手計算(1000 × 0.9 = 900)と比べる。「何も表示されない」ことと「0が表示された」ことは別なので、迷ったら print を足して確かめます。

失敗2:全角の記号や数字を混ぜて、構文エラーになる

誤り:日本語の入力モードのまま、括弧を全角で打ってしまう。下のコードは、わざと間違えたコードを文字列に入れて実行し、エラーを画面に表示するものです。

code = 'price = 1000\nprint(price * 0.9)\n'
try:
    compile(code, 'sample.py', 'exec')
except SyntaxError as e:
    print(type(e).__name__, '行', e.lineno)

出力は SyntaxError 行 2 です。SyntaxError(構文エラー)は「Pythonの文法として読めない」という意味で、2行目に問題があると示しています。原因は ( ) が全角で、( ) ではないことです。見た目はほとんど同じなので、目で探しても見つかりません。

直し方:エラーが示す行を、半角で打ち直す。エディタの設定で全角スペースを可視化すると、見つけやすくなります。

失敗3:名前を作る前に使ってしまう(実行順序の誤り)

誤り:上から順に実行されることを忘れ、値を決める前に使う。

code = 'discounted = price * 0.9\nprice = 1000\nprint(discounted)\n'
try:
    exec(compile(code, 'sample.py', 'exec'), {})
except Exception as e:
    print(type(e).__name__, ':', e)

出力は NameError : name 'price' is not defined です。NameError は「その名前をまだ知らない」という意味です。1行目を実行する時点では、2行目の price = 1000 がまだ実行されていないので、price は存在しません。

直し方:行の順番を入れ替え、price = 1000 を先に書く。人間は「全体を見渡してから読む」ことができますが、Pythonは上から1行ずつしか読めません。

まとめ

用語

コード(プログラム)(code / program)

コンピューターに実行させる指示を、決まった文法で書いたもの。

式(expression)

計算すると1つの値になる書き方。1000 * (1 - 0.1) は値が 900.0 の式。

出力(output)

実行の結果として画面に表示されたもの。この教材では print で表示した内容。

コメント(comment)

# から行末までの人間向けのメモ。Pythonは実行時に無視する。

よくある質問

Excelの方が慣れているのに、なぜPythonを使うのですか?

Excelも手順を式で残せますが、データが数万行になる、毎月同じ処理を自動で繰り返したい、手順をバージョン管理して人に渡したい、といった場面ではコードが向いています。どちらかを選ぶのではなく、小さい確認はExcel、再現と量が必要な処理はPythonというように使い分けます。

実行ボタンを何度押しても壊れませんか?

この教材の実行ボタンは、押すたびに新しい状態で実行されるので、何度押しても大丈夫です。自分のパソコンで、ファイルを書き換えるコードを動かすときは、元データをコピーしてから試す習慣を付けてください。

`print(900)` と `print(900.0)` は何が違いますか?

整数と小数の違いです。整数の 900 は int、小数の 900.0 は float という型で、計算の結果や、後で文字列にしたときの見た目が変わります。金額の計算では、どちらの型で持つか意識します。詳しくは 数値・文字列・真偽値 で扱います。

コードは暗記しなければいけませんか?

暗記は必要ありません。仕事でも、書き方を調べながら書きます。大切なのは、書いたコードを1行ずつ読んで、何が起きるかを説明できることと、出力を期待値と比べて確かめることです。

実行前の予想は、なぜ大切なのですか?

予想と結果がずれたとき、その差が学びになるからです。予想なしに実行すると、「それらしい数字が出たから合っているだろう」と思い込みやすくなります。仕事で使うコードほど、事前に期待値を決めておくことが、誤りの早期発見につながります。

全角と半角はなぜ区別されるのですか?

コンピューターは、見た目ではなく文字コード(文字に付けた番号)で文字を区別するからです。( と ( は別の文字で、Pythonの文法として使えるのは半角の ( だけです。文字コードは 文字コードと安全なファイル確認 でも扱いました。

確認問題

問1 次の3行のコードを実行したとき、Pythonはどの順序で処理するか。

price = 1000
rate = 0.1
print(price * rate)
  1. ① すべての行を同時に実行し、結果をまとめて表示する
  2. ② 上の行から下の行へ、1行ずつ順に実行する
  3. ③ 下の行から上の行へ実行する
  4. ④ プログラム全体を見渡して、都合のよい順に実行する
解答と解説

正解:②

Pythonは上から下へ1行ずつ実行します。print の行より前に price と rate が決まっている必要があります。

問2 print(1000 * (1 - 0.1)) を実行したときの出力はどれか。

  1. ① 900.1
  2. ② 100.0
  3. ③ 999.9
  4. ④ 900.0
解答と解説

正解:④

かっこの中が先に計算されて $1 - 0.1 = 0.9$、$1000 \times 0.9 = 900$ です。小数が混ざるので結果は 900.0 と表示されます。

問3 print(1000 * 1 - 0.1) の出力はどれか。

  1. ① 999.9
  2. ② 900.0
  3. ③ 100.0
  4. ④ 1000.0
解答と解説

正解:①

かっこがないので、掛け算 1000 * 1 が先に行われ、そこから 0.1 を引いて 999.9 になります。意図した計算には (1 - 0.1) のかっこが必要です。

問4 discounted = 1000 * 0.9 とだけ書いて実行した。画面には何も表示されなかった。何が起きたか。

  1. ① 計算結果は 0 だったので何も表示されなかった
  2. ② Pythonが計算を省略した
  3. ③ 計算は行われたが、print がないので表示されなかった
  4. ④ 計算が失敗したので何も表示されなかった
解答と解説

正解:③

代入は計算して名前に入れるだけです。画面に出すには print(discounted) が必要です。エラーが出ていないなら、計算自体は成功しています。

問5 コード中の # 割引率は10% という行について、正しい説明はどれか。

  1. ① 文法エラーになる
  2. ② 人間向けのメモで、Pythonは無視する
  3. ③ 割引率を10%に設定する命令になる
  4. ④ 計算結果を 10% 引いた値で表示する
解答と解説

正解:②

# から行末まではコメントで、実行時には無視されます。割引率を設定するのは rate = 0.1 のような代入です。

問6 エラーが1度も出ずに、print で 900.0 と表示された。この状況について最も適切な判断はどれか。

  1. ① エラーが出なかったので、結果は必ず正しい
  2. ② 表示された数値は、見直さずにそのまま報告してよい
  3. ③ エラーが出ないコードは、仕様を満たしている
  4. ④ エラーが出ないことは動いたことの証明にすぎない。手計算など別の方法で結果が正しいか確認する
解答と解説

正解:④

コンピューターは書かれたとおりに実行します。書いた式が意図と違っても、エラーにはならず、間違った数値が出ます。出力は必ず手計算や期待値と照合します。

次に学ぶこと

次は 変数と代入 で、値に名前を付ける変数と代入を学びます。この授業で使った price = 1000 の = が、算数の等号と違う意味であることを確かめます。

この授業の確認問題だけでモジュールの習得とはしません。PY01 の総合テストと自力課題で判定します。エラーの読み方は エラーを読んで直す でまとめて扱います。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い