🔢 ステップ6: 数値と演算
計算の基礎をマスターしよう
プログラミングでは、計算を正確に行うことがとても重要です。このステップでは、Pythonで数値を扱い、様々な計算を行う方法を学びます。
📖 このステップで学ぶこと
・整数と小数の違いと使い分け
・足し算・引き算・掛け算・割り算の基本
・剰余(割り算の余り)の計算
・累乗(べき乗)の計算
・計算の順番(演算子の優先順位)
・複合代入演算子の使い方
・数値型の変換方法
・便利な数学関数
📝 1. Pythonの数値の種類を理解しよう
Pythonで数値を扱うとき、大きく分けて2種類の数値があります。これを理解することは、正確な計算を行う上でとても大切です。
整数(int)とは何か?
整数とは、小数点がない数のことです。私たちが「1個」「5人」「100円」と数えるときに使う数と同じです。
整数の例
・1, 2, 3, 100, 1000 など(正の整数)
・-1, -5, -100 など(負の整数)
・0(ゼロ)
Pythonでは「int」(integerの略)と呼びます。
小数(float)とは何か?
小数とは、小数点を含む数のことです。「3.14」や「0.5」のように、より細かい値を表現できます。
小数の例
・3.14(円周率)
・0.5(2分の1)
・-2.5(マイナス2.5)
・100.0(小数点があれば小数扱い)
Pythonでは「float」(floating point numberの略)と呼びます。
実際にコードで確認してみよう
まず、整数の変数を作ってみます。
コード
# 整数型の変数を作る
# a には整数 10 を代入する
a = 10
# b には負の整数 -5 を代入する
b = -5
# c には 0 を代入する
c = 0
次に、小数の変数を作ります。
コード
# 小数型の変数を作る
# d には円周率 3.14 を代入する
d = 3.14
# e には 0.5(2分の1)を代入する
e = 0.5
# f には負の小数 -2.5 を代入する
f = -2.5
type() 関数で型を確認する
変数がどの型(整数か小数か)を持っているか確認するには、type()関数を使います。
💡 type()関数とは?
type()は、括弧の中に入れた値の「型」(種類)を教えてくれる関数です。
データの種類を確認したいときに使います。
コード
# type()関数を使って、変数の型を確認する
# type(a) で変数 a が何型かを調べ、print() で画面に表示する
a = 10
print(type(a))
d = 3.14
print(type(d))
実行結果
<class 'int'> <class 'float'>
・<class 'int'> は「整数型」を意味します
・<class 'float'> は「小数型」を意味します
➕ 2. 四則演算の基本をマスターしよう
四則演算とは、足し算・引き算・掛け算・割り算の4つの基本的な計算のことです。Pythonでは、数学と同じように計算ができます。
Pythonで使う計算記号(演算子)
| 計算 | 数学での記号 | Pythonでの記号 | 例 |
| 足し算 | + | + | 10 + 5 |
| 引き算 | - | – | 10 – 5 |
| 掛け算 | × | *(アスタリスク) | 10 * 5 |
| 割り算 | ÷ | /(スラッシュ) | 10 / 5 |
四則演算を実際にやってみよう
それぞれの計算を順番に見ていきます。
コード:足し算
# 足し算:+ を使う
# 10と5を足した結果を表示する
print(10 + 5)
実行結果
15
コード:引き算
# 引き算:- を使う
# 10から5を引いた結果を表示する
print(10 - 5)
実行結果
5
コード:掛け算
# 掛け算:* を使う
# キーボードの「:」のキーを Shift キーを押しながら押すと入力できます
# 10と5を掛けた結果を表示する
print(10 * 5)
実行結果
50
コード:割り算
# 割り算:/ を使う
# キーボードの「?」のキーを押すと入力できます
# 10を5で割った結果を表示する
print(10 / 5)
実行結果
2.0
⚠️ 割り算の重要な注意点
割り算の結果は、たとえ割り切れる場合でも必ず小数(float型)になります。
10 / 5 の結果は 2 ではなく 2.0 になります。
これはPythonの仕様なので、覚えておきましょう。
割り算に関する特殊な演算子
Pythonには、割り算に関連する便利な演算子が2つあります。これらは実用的な場面でよく使います。
| 演算子 | 名前 | 意味 | 例 |
| // | 切り捨て除算 | 小数点以下を切り捨てて整数にする | 10 // 3 → 3 |
| % | 剰余(じょうよ) | 割り算の余りを求める | 10 % 3 → 1 |
3種類の割り算を比較してみよう
10を3で割る場合、3種類の演算子でどう結果が違うか見てみましょう。
コード
# 普通の割り算(/)
# 結果は小数になる
print(10 / 3)
# 切り捨て除算(//)
# 小数点以下を切り捨てて整数にする
print(10 // 3)
# 剰余(%)
# 割り算の余りを求める
# 10 ÷ 3 = 3 あまり 1 なので、1が表示される
print(10 % 3)
実行結果
3.3333333333333335 3 1
💡 計算の解説
10 ÷ 3 を計算すると…
・10 / 3 → 3.333…(正確な割り算の結果)
・10 // 3 → 3(小数点以下を捨てた整数部分)
・10 % 3 → 1(余り。10 = 3 × 3 + 1 なので)
剰余(%)の実用的な使い方
剰余演算子(%)は、プログラミングでとてもよく使います。代表的な使い方を見てみましょう。
使い方1:偶数か奇数かを判定する
2で割った余りが0なら偶数、1なら奇数です。
コード
# 偶数か奇数かを判定するプログラム
# number に判定したい数を入れる
number = 10
# number を 2 で割った余りが 0 かどうかを確認する
# 余りが 0 なら偶数
if number % 2 == 0:
print(f"{number}は偶数です")
else:
print(f"{number}は奇数です")
実行結果
10は偶数です
使い方2:特定の倍数かどうかを判定する
コード
# 3の倍数かどうかを判定するプログラム
number = 15
# 3で割った余りが0なら、3の倍数
if number % 3 == 0:
print(f"{number}は3の倍数です")
else:
print(f"{number}は3の倍数ではありません")
実行結果
15は3の倍数です
📌 倍数判定のまとめ
| 判定したいこと | 条件 |
| 偶数 | number % 2 == 0 |
| 奇数 | number % 2 == 1 |
| 3の倍数 | number % 3 == 0 |
| 5の倍数 | number % 5 == 0 |
| 10の倍数 | number % 10 == 0 |
🔢 3. 累乗(べき乗)を計算しよう
累乗とは、同じ数を何回か掛け合わせることです。例えば「2の3乗」は「2 × 2 × 2」のことです。
** 演算子で累乗を計算する
Pythonでは、**(アスタリスク2つ)を使って累乗を計算します。
💡 累乗の書き方
底 ** 指数 という形で書きます。
例:2 ** 3 は「2の3乗」を意味します
コード:基本的な累乗
# 2の3乗を計算する
# 2 × 2 × 2 = 8
print(2 ** 3)
# 5の2乗(5の二乗)を計算する
# 5 × 5 = 25
print(5 ** 2)
# 10の3乗を計算する
# 10 × 10 × 10 = 1000
print(10 ** 3)
実行結果
8 25 1000
平方根と立方根の計算
累乗の指数に小数を使うと、平方根(ルート)なども計算できます。
📌 覚えておこう
・平方根(√) = 0.5乗 例:√4 = 4 ** 0.5 = 2
・立方根(∛) = 1/3乗 例:∛8 = 8 ** (1/3) = 2
コード:平方根と立方根
# 平方根(ルート)の計算
# 4の0.5乗 = √4 = 2
print(4 ** 0.5)
# 立方根の計算
# 8の(1/3)乗 = ∛8 = 2
# (1/3) のようにカッコで囲むと計算がわかりやすい
print(8 ** (1/3))
実行結果
2.0 2.0
実用例:面積と体積の計算
累乗は、図形の面積や体積を計算するときによく使います。
コード:正方形の面積
# 正方形の面積を計算する
# 面積 = 1辺 × 1辺 = 1辺の2乗
# 1辺の長さを変数に入れる
side = 5
# 面積を計算する(side の 2乗)
area = side ** 2
# 結果を表示する
print(f"1辺が{side}cmの正方形の面積: {area}cm²")
実行結果
1辺が5cmの正方形の面積: 25cm²
コード:立方体の体積
# 立方体の体積を計算する
# 体積 = 1辺 × 1辺 × 1辺 = 1辺の3乗
# 1辺の長さを変数に入れる
edge = 3
# 体積を計算する(edge の 3乗)
volume = edge ** 3
# 結果を表示する
print(f"1辺が{edge}cmの立方体の体積: {volume}cm³")
実行結果
1辺が3cmの立方体の体積: 27cm³
コード:円の面積
# 円の面積を計算する
# 面積 = π × 半径² (πは円周率 3.14159...)
# mathモジュールをインポートする
# math には数学でよく使う値や関数が入っている
import math
# 半径を変数に入れる
radius = 5
# 円の面積を計算する
# math.pi は円周率(3.14159...)
# radius ** 2 は半径の2乗
circle_area = math.pi * (radius ** 2)
# 結果を表示する
# :.2f は小数点以下2桁まで表示するという意味
print(f"半径{radius}cmの円の面積: {circle_area:.2f}cm²")
実行結果
半径5cmの円の面積: 78.54cm²
📊 4. 演算子の優先順位を理解しよう
計算式に複数の演算子がある場合、どの計算から先にするかという順番があります。これを「演算子の優先順位」と呼びます。
計算の順番は数学と同じ
Pythonの計算順序は、算数や数学で習ったルールと同じです。
📌 優先順位(高い順)
| 優先度 | 演算子 | 説明 |
| 1(最優先) | ( ) | カッコの中を最初に計算 |
| 2 | ** | 累乗を次に計算 |
| 3 | *, /, //, % | 掛け算・割り算・剰余 |
| 4(最後) | +, – | 足し算・引き算 |
優先順位の実例を見てみよう
コード:優先順位の確認
# 掛け算が先に計算される例
# 5 + 3 * 2 は、まず 3 * 2 = 6 を計算
# その後 5 + 6 = 11 を計算
result1 = 5 + 3 * 2
print(result1)
実行結果
11
💡 計算の流れ
5 + 3 * 2
↓ まず掛け算(3 * 2 = 6)
5 + 6
↓ 次に足し算
11
カッコを使って計算順序を変える
カッコを使うと、計算の順番を自由に変えることができます。
コード:カッコで順番を変える
# カッコで順番を変える例
# (5 + 3) * 2 は、まず (5 + 3) = 8 を計算
# その後 8 * 2 = 16 を計算
result2 = (5 + 3) * 2
print(result2)
実行結果
16
💡 計算の流れ
(5 + 3) * 2
↓ まずカッコの中(5 + 3 = 8)
8 * 2
↓ 次に掛け算
16
複雑な計算式の例
コード:複雑な計算式
# 複雑な計算式の例
# 10 + 5 * 2 ** 3 - 4 / 2
# 計算順序:
# 1. 2 ** 3 = 8 (累乗が最優先)
# 2. 5 * 8 = 40 (掛け算)
# 3. 4 / 2 = 2.0 (割り算)
# 4. 10 + 40 - 2.0 = 48.0 (足し算・引き算)
result3 = 10 + 5 * 2 ** 3 - 4 / 2
print(result3)
実行結果
48.0
⚠️ 重要なアドバイス
複雑な計算式を書くときは、積極的にカッコを使いましょう。
・読みやすくなる
・計算ミスを防げる
・後から見た人(自分を含む)が理解しやすい
例:10 + (5 * (2 ** 3)) - (4 / 2)
実用例:消費税の計算
消費税を計算するプログラムで、優先順位を意識した書き方を見てみましょう。
コード:消費税の計算
# 商品価格
price = 1000
# 消費税率(10%)
tax_rate = 0.1
# 税込価格を計算する方法1
# price + price * tax_rate
# 掛け算が先に計算されるので、正しく動く
# 1000 + 1000 * 0.1 = 1000 + 100 = 1100
total1 = price + price * tax_rate
print(f"方法1: {total1}円")
# 税込価格を計算する方法2(推奨)
# price * (1 + tax_rate) とカッコを使う
# 意図が明確で読みやすい
# 1000 * (1 + 0.1) = 1000 * 1.1 = 1100
total2 = price * (1 + tax_rate)
print(f"方法2: {total2}円")
実行結果
方法1: 1100.0円 方法2: 1100.0円
💡 どちらの書き方がいい?
方法2の price * (1 + tax_rate) がおすすめです。
・「価格に1.1を掛ける」という計算の意図がわかりやすい
・カッコがあるので、計算順序が明確
パート1はここまでです。続きはパート2で説明します。
🔄 5. 複合代入演算子で効率的に書こう
プログラミングでは、「変数の値を更新する」という操作をよく行います。例えば、点数を10点加算する、残高から100円引く、といった操作です。
通常の書き方
変数の値を更新する一番基本的な書き方を見てみましょう。
コード:通常の書き方
# xに10を入れる
x = 10
# xに5を足した結果を、またxに入れる
# 右辺の x + 5 を計算してから、左辺の x に代入する
x = x + 5
# 結果を表示
print(x)
実行結果
15
💡 x = x + 5 の意味
数学だと「x = x + 5」は成り立ちませんが、プログラミングでは…
1. まず右辺の「x + 5」を計算する(10 + 5 = 15)
2. その結果を左辺の「x」に代入する
つまり「xの値を更新する」という意味になります。
複合代入演算子を使った書き方
上の「x = x + 5」をもっと短く書く方法があります。それが複合代入演算子です。
コード:複合代入演算子を使った書き方
# yに10を入れる
y = 10
# += を使って5を足す
# y += 5 は y = y + 5 と同じ意味
y += 5
# 結果を表示
print(y)
実行結果
15
よく使う複合代入演算子一覧
| 演算子 | 意味 | 例 | 同じ意味の書き方 |
| += | 足して代入 | x += 3 | x = x + 3 |
| -= | 引いて代入 | x -= 3 | x = x – 3 |
| *= | 掛けて代入 | x *= 3 | x = x * 3 |
| /= | 割って代入 | x /= 3 | x = x / 3 |
| //= | 切り捨て除算して代入 | x //= 3 | x = x // 3 |
| %= | 剰余を代入 | x %= 3 | x = x % 3 |
| **= | 累乗して代入 | x **= 3 | x = x ** 3 |
すべての複合代入演算子を試してみよう
コード:複合代入演算子の実例
# 初期値を設定
num = 10
# += で足し算
num += 3 # num = 10 + 3 = 13
print(f"足し算: {num}")
# -= で引き算
num -= 2 # num = 13 - 2 = 11
print(f"引き算: {num}")
# *= で掛け算
num *= 2 # num = 11 * 2 = 22
print(f"掛け算: {num}")
# /= で割り算
num /= 4 # num = 22 / 4 = 5.5
print(f"割り算: {num}")
実行結果
足し算: 13 引き算: 11 掛け算: 22 割り算: 5.5
コード:その他の複合代入演算子
# //= で切り捨て除算
num = 10
num //= 3 # num = 10 // 3 = 3
print(f"切り捨て除算: {num}")
# %= で剰余
num = 10
num %= 3 # num = 10 % 3 = 1
print(f"剰余: {num}")
# **= で累乗
num = 2
num **= 3 # num = 2 ** 3 = 8
print(f"累乗: {num}")
実行結果
切り捨て除算: 3 剰余: 1 累乗: 8
実用例:スコアカウンター
ゲームのスコアを計算するような場面で、複合代入演算子は大活躍します。
コード:スコアカウンター
# ゲームのスコアを管理する
# 最初のスコアは0点
score = 0
print(f"初期スコア: {score}")
# 1問目正解!10点追加
score += 10
print(f"1問正解: {score}")
# 2問目正解!20点追加
score += 20
print(f"2問正解: {score}")
# 3問目正解!30点追加
score += 30
print(f"3問正解: {score}")
# 最終スコアを表示
print(f"最終スコア: {score}点")
実行結果
初期スコア: 0 1問正解: 10 2問正解: 30 3問正解: 60 最終スコア: 60点
💡 複合代入演算子のメリット
・コードが短くなる
・「値を更新している」ことが明確にわかる
・実務でよく使われる書き方なので、慣れておくと良い
🔀 6. 数値型の変換をマスターしよう
プログラミングでは、整数を小数に変換したり、文字列を数値に変換したりすることがよくあります。この操作を「型変換」と呼びます。
なぜ型変換が必要なの?
📌 型変換が必要になる場面
・input()で受け取った数字を計算に使いたい時
・小数の計算結果を整数として表示したい時
・ファイルから読み込んだ数字データを計算に使いたい時
int() で整数に変換する
int()関数を使うと、小数や文字列を整数に変換できます。
コード:小数を整数に変換
# 小数を用意する
float_num = 3.14
# int() で整数に変換する
# 小数点以下は切り捨てられる
int_num = int(float_num)
# 変換前と変換後を表示
print(f"{float_num} → {int_num}")
# 型を確認してみる
print(f"変換後の型: {type(int_num)}")
実行結果
3.14 → 3 変換後の型: <class 'int'>
⚠️ 重要な注意点
int()は小数点以下を切り捨てます。四捨五入ではありません!
・int(3.9) → 3(四捨五入なら4になるが、切り捨てなので3)
・int(3.1) → 3
・int(-3.9) → -3(0に近い方向に切り捨て)
float() で小数に変換する
float()関数を使うと、整数や文字列を小数に変換できます。
コード:整数を小数に変換
# 整数を用意する
int_num2 = 5
# float() で小数に変換する
float_num2 = float(int_num2)
# 変換前と変換後を表示
print(f"{int_num2} → {float_num2}")
# 型を確認してみる
print(f"変換後の型: {type(float_num2)}")
実行結果
5 → 5.0 変換後の型: <class 'float'>
文字列から数値への変換
これは特に重要です。文字列として書かれた数字を、実際の数値に変換する方法を学びましょう。
💡 「”100″」と「100」の違い
・"100"(クォートで囲まれている)→ 文字列。計算できない
・100(クォートなし)→ 数値(整数)。計算できる
見た目は同じでも、Pythonにとっては全く別のものです。
コード:文字列を整数に変換
# 文字列の「100」を用意する
str_num1 = "100"
# 型を確認する(文字列のはず)
print(f"'{str_num1}' の型: {type(str_num1)}")
# int() で整数に変換する
num1 = int(str_num1)
# 型を確認する(整数に変わったはず)
print(f"{num1} の型: {type(num1)}")
# 変換後は計算ができる
result = num1 + 50
print(f"計算結果: {result}")
実行結果
'100' の型: <class 'str'> 100 の型: <class 'int'> 計算結果: 150
コード:文字列を小数に変換
# 文字列の「3.14」を用意する
str_num2 = "3.14"
# float() で小数に変換する
num2 = float(str_num2)
# 型を確認する
print(f"'{str_num2}' → {num2}")
print(f"変換後の型: {type(num2)}")
実行結果
'3.14' → 3.14 変換後の型: <class 'float'>
最も重要!input() と型変換
input()関数で受け取った値は、必ず文字列になります。数字を入力しても、それは文字列として扱われます。
⚠️ 超重要ポイント
input()で受け取った値を計算に使うときは、必ずint()やfloat()で変換が必要です!
コード:input()と型変換
# input() で年齢を入力してもらう
# input() の戻り値は必ず文字列
age_str = input("年齢を入力してください: ")
# 型を確認してみる
print(f"入力された値の型: {type(age_str)}")
# 文字列のままだと計算でエラーになる!
# なので int() で整数に変換する
age = int(age_str)
# 型を確認する
print(f"変換後の型: {type(age)}")
# これで計算ができる
next_year = age + 1
print(f"来年の年齢: {next_year}歳")
実行結果(25と入力した場合)
年齢を入力してください: 25 入力された値の型: <class 'str'> 変換後の型: <class 'int'> 来年の年齢: 26歳
よく使うパターン:input() と int() を組み合わせる
実際のプログラムでは、input()とint()を1行で書くことが多いです。
コード:1行で書くパターン
# 方法1:2行で書く(わかりやすい)
age_str = input("年齢を入力: ")
age = int(age_str)
# 方法2:1行で書く(よく使われる)
# input() の結果をそのまま int() に渡す
age = int(input("年齢を入力: "))
# 小数を入力する場合は float() を使う
height = float(input("身長(m)を入力: "))
💡 どちらの書き方がいい?
・方法1(2行): 初心者にわかりやすい。何をしているか明確
・方法2(1行): コードが短くなる。慣れたらこちらを使う
最初は方法1で書いて、慣れてきたら方法2を使うと良いでしょう。
型変換でエラーが起きるケース
型変換は便利ですが、変換できない文字列を変換しようとするとエラーになります。
❌ エラーになる例
・int("abc") → エラー!「abc」は数字じゃないので変換できない
・int("3.14") → エラー!小数点がある文字列は int() で変換できない
・int("") → エラー!空文字は変換できない
✅ 正しい変換方法
・int("100") → 100(OK)
・float("3.14") → 3.14(OK)
・int(float("3.14")) → 3(2段階で変換すればOK)
round() で四捨五入
int()は切り捨てでしたが、四捨五入したい場合はround()を使います。
コード:四捨五入
# round() で四捨五入する
# 3.7 を四捨五入
print(round(3.7)) # 4
# 3.4 を四捨五入
print(round(3.4)) # 3
# 小数点以下の桁数を指定することもできる
# 3.14159 を小数点第2位まで四捨五入
print(round(3.14159, 2)) # 3.14
# 小数点第1位まで四捨五入
print(round(3.14159, 1)) # 3.1
実行結果
4 3 3.14 3.1
📌 切り捨て・四捨五入・切り上げの使い分け
| やりたいこと | 使う関数 | 例 |
| 切り捨て | int() | int(3.9) → 3 |
| 四捨五入 | round() | round(3.5) → 4 |
| 切り上げ | math.ceil() | math.ceil(3.1) → 4 |
| 切り捨て(負も対応) | math.floor() | math.floor(3.9) → 3 |
パート2はここまでです。続きはパート3で説明します。
🧮 7. 便利な数学関数を使おう
Pythonには、よく使う数学の計算を簡単に行える便利な関数がたくさん用意されています。これらを使いこなせると、プログラミングがグッと楽になります。
組み込み関数(importなしで使える)
Pythonにはじめから入っている関数です。何もインポートせずに使えます。
| 関数 | 機能 | 例 |
| abs() | 絶対値を求める | abs(-10) → 10 |
| max() | 最大値を求める | max(5, 2, 8) → 8 |
| min() | 最小値を求める | min(5, 2, 8) → 2 |
| sum() | 合計を求める | sum([1,2,3]) → 6 |
| pow() | 累乗を求める | pow(2, 3) → 8 |
| round() | 四捨五入する | round(3.7) → 4 |
abs() – 絶対値を求める
絶対値とは、数直線上で0からの距離のことです。負の数でも正の数になります。
コード:絶対値
# abs() は Absolute(絶対)の略
# 負の数の絶対値
print(abs(-10)) # マイナスが取れて 10 になる
# 正の数の絶対値
print(abs(10)) # そのまま 10
# 小数でも使える
print(abs(-3.14)) # 3.14
実行結果
10 10 3.14
💡 絶対値はどんな時に使う?
・2つの数の差(距離)を求めるとき
・誤差の計算をするとき
・値の大きさだけを見たいとき(符号を無視したい)
max() と min() – 最大値・最小値を求める
コード:最大値・最小値
# max() は Maximum(最大)の略
# 複数の数値から最大値を見つける
print(max(5, 2, 8, 1, 9)) # 9が最大
# min() は Minimum(最小)の略
# 複数の数値から最小値を見つける
print(min(5, 2, 8, 1, 9)) # 1が最小
# リストを渡すこともできる
numbers = [30, 10, 50, 20, 40]
print(f"最大: {max(numbers)}")
print(f"最小: {min(numbers)}")
実行結果
9 1 最大: 50 最小: 10
sum() – 合計を求める
コード:合計
# sum() は合計を計算する関数
# リストや配列の要素をすべて足し合わせる
numbers = [1, 2, 3, 4, 5]
# リストの合計を求める
total = sum(numbers)
print(f"合計: {total}") # 1+2+3+4+5 = 15
# 平均を計算する(合計 ÷ 個数)
average = sum(numbers) / len(numbers)
print(f"平均: {average}") # 15 ÷ 5 = 3.0
実行結果
合計: 15 平均: 3.0
💡 len()関数について
len()はリストの要素数(長さ)を返す関数です。
len([1, 2, 3, 4, 5]) → 5
pow() – 累乗を求める
コード:pow関数
# pow() は Power(べき乗)の略
# pow(底, 指数) で累乗を計算する
# ** 演算子と同じ結果になる
# 2の3乗
print(pow(2, 3)) # 2 ** 3 と同じ
print(2 ** 3) # 比較用
# 5の2乗
print(pow(5, 2)) # 5 ** 2 と同じ
実行結果
8 8 25
mathモジュール(importが必要)
より高度な数学関数を使う場合は、mathモジュールをインポートします。
💡 モジュールとは?
便利な機能をまとめたパッケージのようなものです。
使う前に import math と書いて、「mathモジュールを使いますよ」と宣言します。
📌 mathモジュールの主な機能
| 機能 | 書き方 | 説明 |
| 円周率 | math.pi | 3.14159… |
| 平方根 | math.sqrt(x) | √xを計算 |
| 切り上げ | math.ceil(x) | 小数点以下を切り上げ |
| 切り捨て | math.floor(x) | 小数点以下を切り捨て |
| 階乗 | math.factorial(x) | x! を計算 |
コード:mathモジュールを使う
# mathモジュールをインポートする
# これを書かないと math.〇〇 が使えない
import math
# 円周率を表示
# math.pi は円周率の値(3.14159...)を持っている
print(f"円周率: {math.pi}")
# 平方根を計算
# math.sqrt() は Square Root(平方根)の略
# √16 = 4
print(f"√16 = {math.sqrt(16)}")
# 切り上げ
# math.ceil() は Ceiling(天井)の意味
# 3.1 を天井方向(上)に丸める → 4
print(f"切り上げ: {math.ceil(3.1)}")
# 切り捨て
# math.floor() は Floor(床)の意味
# 3.9 を床方向(下)に丸める → 3
print(f"切り捨て: {math.floor(3.9)}")
# 階乗を計算
# 5! = 5 × 4 × 3 × 2 × 1 = 120
print(f"5! = {math.factorial(5)}")
実行結果
円周率: 3.141592653589793 √16 = 4.0 切り上げ: 4 切り捨て: 3 5! = 120
🎯 8. 実践的な計算例
ここまで学んだことを使って、実際に役立つプログラムを作ってみましょう。
例1: 割引計算
ショッピングでよくある割引計算をプログラムで行います。
コード:割引計算
# 商品の元の価格
original_price = 5000
# 割引率(30%オフ)
# 30% = 0.3
discount_rate = 0.3
# 割引額を計算する
# 元の価格 × 割引率 = 割引額
discount = original_price * discount_rate
print(f"割引額: {discount}円")
# 割引後の価格を計算する(方法1)
# 元の価格 - 割引額 = 割引後価格
final_price = original_price - discount
print(f"割引後の価格: {final_price}円")
# 割引後の価格を計算する(方法2)
# 元の価格 × (1 - 割引率) でも同じ結果になる
# 5000 × (1 - 0.3) = 5000 × 0.7 = 3500
final_price2 = original_price * (1 - discount_rate)
print(f"割引後の価格: {final_price2}円")
実行結果
割引額: 1500.0円 割引後の価格: 3500.0円 割引後の価格: 3500.0円
例2: BMI計算
健康管理でよく使われるBMI(体格指数)を計算します。
💡 BMIとは?
BMI = 体重(kg) ÷ 身長(m) ÷ 身長(m)
または BMI = 体重(kg) ÷ 身長(m)²
18.5未満: やせ型 / 18.5〜25未満: 普通 / 25以上: 肥満
コード:BMI計算
# 身長(メートル単位)
height = 1.70
# 体重(キログラム単位)
weight = 65
# BMIを計算する
# 体重 ÷ (身長の2乗)
bmi = weight / (height ** 2)
# 結果を小数点第1位まで表示
print(f"BMI: {bmi:.1f}")
# BMIの判定をする
if bmi < 18.5:
print("判定: やせ型")
elif bmi < 25:
print("判定: 普通")
else:
print("判定: 肥満")
実行結果
BMI: 22.5 判定: 普通
例3: 複利計算
貯金や投資で使われる複利計算をプログラムで行います。
💡 複利とは?
利息にも利息がつく計算方法です。
計算式: 元本 × (1 + 年利率)^年数
コード:複利計算
# 元本(最初に預けるお金)
principal = 100000 # 10万円
# 年利率
rate = 0.03 # 年3%
# 預ける年数
years = 5 # 5年間
# 複利計算をする
# 元本 × (1 + 利率) の 年数乗
final_amount = principal * ((1 + rate) ** years)
# 結果を表示(小数点以下を四捨五入)
print(f"{years}年後の金額: {round(final_amount)}円")
# 利益(増えた金額)を計算
profit = final_amount - principal
print(f"利益: {round(profit)}円")
実行結果
5年後の金額: 115927円 利益: 15927円
例4: 時間の計算
秒数を「時間・分・秒」に分解する計算です。剰余演算子(%)の実用例です。
コード:時間の変換
# 合計秒数
total_seconds = 3725
# 時間を計算
# 1時間 = 3600秒 なので、3600で割った商が時間
hours = total_seconds // 3600
# 残りの秒数を計算
# 3600で割った余りが、時間に変換しきれなかった秒数
remaining = total_seconds % 3600
# 分を計算
# 1分 = 60秒 なので、60で割った商が分
minutes = remaining // 60
# 秒を計算
# 60で割った余りが秒
seconds = remaining % 60
# 結果を表示
print(f"{total_seconds}秒は")
print(f"{hours}時間{minutes}分{seconds}秒です")
実行結果
3725秒は 1時間2分5秒です
💡 計算の流れを確認
3725秒を変換する手順:
1. 3725 ÷ 3600 = 1 時間(余り 125秒)
2. 125 ÷ 60 = 2 分(余り 5秒)
3. 結果: 1時間2分5秒
パート3はここまでです。続いて練習問題を見ていきましょう。
📝 練習問題(10問)
ここまで学んだことを実際に手を動かして確認しましょう。
問題1:基本的な四則演算(初級)
📋 問題
変数 a = 15 と b = 4 を使って、以下を計算して表示してください。
・足し算の結果
・引き算の結果
・掛け算の結果
・割り算の結果
解答を見る
コード
# 変数を設定する
a = 15
b = 4
# 足し算:+ を使う
print(f"足し算: {a + b}")
# 引き算:- を使う
print(f"引き算: {a - b}")
# 掛け算:* を使う
print(f"掛け算: {a * b}")
# 割り算:/ を使う
print(f"割り算: {a / b}")
実行結果
足し算: 19 引き算: 11 掛け算: 60 割り算: 3.75
問題2:剰余の計算(初級)
📋 問題
数値 17 を 5 で割った時の余りを求めてください。
解答を見る
コード
# 割られる数
number = 17
# 割る数
divisor = 5
# % 演算子で余りを求める
# 17 ÷ 5 = 3 あまり 2
remainder = number % divisor
# 結果を表示
print(f"{number} ÷ {divisor} の余り: {remainder}")
実行結果
17 ÷ 5 の余り: 2
💡 解説
17 ÷ 5 = 3 あまり 2
検算:5 × 3 + 2 = 17 ✓
問題3:累乗の計算(初級)
📋 問題
3の4乗(3 × 3 × 3 × 3)を計算してください。
解答を見る
コード
# ** 演算子を使って累乗を計算
# 3 ** 4 は「3の4乗」を意味する
result = 3 ** 4
# 結果を表示
print(f"3の4乗: {result}")
実行結果
3の4乗: 81
💡 解説
3 × 3 = 9
9 × 3 = 27
27 × 3 = 81
問題4:偶数・奇数の判定(初級)
📋 問題
数値 23 が偶数か奇数かを判定して表示してください。
解答を見る
コード
# 判定する数値
number = 23
# 2で割った余りで判定する
# 余りが0なら偶数、1なら奇数
if number % 2 == 0:
print(f"{number}は偶数です")
else:
print(f"{number}は奇数です")
実行結果
23は奇数です
💡 解説
23 ÷ 2 = 11 あまり 1
余りが1なので奇数です。
問題5:演算子の優先順位(中級)
📋 問題
以下の式を計算してください。また、計算過程を説明してください。
10 + 5 * 2 - 4 / 2
解答を見る
コード
# 式を計算する
result = 10 + 5 * 2 - 4 / 2
print(f"結果: {result}")
# 計算過程を表示
print("計算過程:")
print("1. 5 * 2 = 10 (掛け算が先)")
print("2. 4 / 2 = 2.0 (割り算が先)")
print("3. 10 + 10 - 2.0 = 18.0 (左から順に足し引き)")
実行結果
結果: 18.0 計算過程: 1. 5 * 2 = 10 (掛け算が先) 2. 4 / 2 = 2.0 (割り算が先) 3. 10 + 10 - 2.0 = 18.0 (左から順に足し引き)
💡 解説
掛け算(*)と割り算(/)は、足し算(+)と引き算(-)より先に計算されます。
問題6:複合代入演算子(中級)
📋 問題
変数 score = 100 から始めて、複合代入演算子を使って以下の操作を行ってください。
1. 20点を加算
2. 10点を減算
3. 2倍にする
各ステップの結果を表示してください。
解答を見る
コード
# 初期値を設定
score = 100
print(f"初期値: {score}")
# 1. += で20点を加算
score += 20
print(f"20点加算: {score}")
# 2. -= で10点を減算
score -= 10
print(f"10点減算: {score}")
# 3. *= で2倍にする
score *= 2
print(f"2倍: {score}")
# 最終スコア
print(f"最終スコア: {score}点")
実行結果
初期値: 100 20点加算: 120 10点減算: 110 2倍: 220 最終スコア: 220点
問題7:正方形の面積と周の長さ(中級)
📋 問題
1辺が 7cm の正方形について、面積と周の長さを計算してください。
解答を見る
コード
# 正方形の1辺の長さ
side = 7
# 面積を計算する
# 正方形の面積 = 1辺 × 1辺 = 1辺の2乗
area = side ** 2
print(f"面積: {area}cm²")
# 周の長さを計算する
# 正方形の周の長さ = 1辺 × 4
perimeter = side * 4
print(f"周の長さ: {perimeter}cm")
実行結果
面積: 49cm² 周の長さ: 28cm
問題8:型変換(中級)
📋 問題
文字列 "3.14" と "2" を数値に変換して、掛け算した結果を表示してください。
解答を見る
コード
# 文字列を用意する
str1 = "3.14"
str2 = "2"
# 文字列を数値に変換する
# "3.14" は小数なので float() を使う
num1 = float(str1)
# "2" は整数なので int() を使う(float()でもOK)
num2 = int(str2)
# 掛け算する
result = num1 * num2
# 結果を表示
print(f"{num1} × {num2} = {result}")
実行結果
3.14 × 2 = 6.28
問題9:消費税込みの価格計算(中級)
📋 問題
商品価格 1980円 に、消費税 10% を加えた金額を計算してください。
結果は小数点以下を切り捨てて整数で表示してください。
解答を見る
コード
# 商品価格
price = 1980
# 消費税率(10% = 0.10)
tax_rate = 0.10
# 税込価格を計算する
# 価格 × (1 + 税率) = 税込価格
total = price * (1 + tax_rate)
print(f"税込価格(小数): {total}円")
# int() で整数に変換(小数点以下を切り捨て)
total_int = int(total)
print(f"税込価格(整数): {total_int}円")
実行結果
税込価格(小数): 2178.0円 税込価格(整数): 2178円
問題10:時間の計算(上級)
📋 問題
合計 3725秒 を、何時間何分何秒かに分解して表示してください。
ヒント:割り算(//)と剰余(%)を使います。
解答を見る
コード
# 合計秒数
total_seconds = 3725
# ステップ1: 時間を計算
# 1時間 = 3600秒
# 3725 // 3600 = 1 時間
hours = total_seconds // 3600
# ステップ2: 時間で使われなかった秒数を計算
# 3725 % 3600 = 125 秒
remaining = total_seconds % 3600
# ステップ3: 分を計算
# 1分 = 60秒
# 125 // 60 = 2 分
minutes = remaining // 60
# ステップ4: 秒を計算
# 125 % 60 = 5 秒
seconds = remaining % 60
# 結果を表示
print(f"{total_seconds}秒は")
print(f"{hours}時間{minutes}分{seconds}秒です")
実行結果
3725秒は 1時間2分5秒です
💡 計算の流れ
1. 3725 ÷ 3600 = 1 時間(余り 125秒)
2. 125 ÷ 60 = 2 分(余り 5秒)
3. 結果: 1時間2分5秒
❓ よくある質問
Q1: / と // の違いは何ですか?
/ は普通の割り算で、結果が小数になります。
// は切り捨て除算で、小数点以下を切り捨てて整数にします。
例:10 / 3 = 3.333...、10 // 3 = 3
Q2: % 演算子はどんな時に使いますか?
余りを求める時に使います。主な用途は...
・偶数・奇数の判定(2で割った余りが0か1か)
・〇の倍数かどうかのチェック
・時間計算(秒→時分秒への変換など)
Q3: int() と round() の違いは?
int() は小数点以下を切り捨てます(3.9 → 3)
round() は四捨五入します(3.9 → 4)
用途に応じて使い分けてください。
Q4: 割り算の結果が整数にならないのはなぜ?
Pythonでは、/ 演算子を使った割り算の結果は常に float型(小数)になります。
たとえ 10 / 5 のように割り切れる場合でも、結果は 2.0 になります。
整数が欲しい場合は // を使うか、int() で変換してください。
Q5: 計算の順番がわからなくなります
複雑な計算では、積極的にカッコ () を使いましょう。
「掛け算と割り算が先、足し算と引き算が後」という基本ルールはありますが、カッコで明示した方が読みやすく、エラーも防げます。
🎉 ステップ6のまとめ
✅ このステップで学んだこと
✓ 整数(int)と小数(float)の違い
✓ 四則演算(+、-、*、/)の基本
✓ 切り捨て除算(//)と剰余(%)の使い方
✓ 累乗(**)で何乗かを計算
✓ 演算子の優先順位とカッコの使い方
✓ 複合代入演算子(+=、-=など)で効率的に記述
✓ int()、float()、round() で型変換
✓ abs()、max()、min()、sum() などの便利な関数
💪 次のステップへ
数値と演算の基礎をマスターしました!
計算はプログラミングの基本中の基本です。特に剰余演算子(%)は、これからいろいろな場面で活躍します。
次のステップでは、リスト(配列)について学びます。
複数のデータをまとめて扱う方法を習得しましょう!
学習メモ
Pythonプログラミング基礎 - Step 6