Pythonで円周率を使うには?math.piの基本から計算例まで初心者向けに解説
Pythonで円周率を使いたいと思ったとき、最初に迷うのが 3.14 と書けばいいのか、それとも専用の書き方があるのか、という点ではないでしょうか。
結論からいうと、Pythonでは math.pi を使うのが基本です。
円周率を毎回 3.14 と手入力するよりも、正確で読みやすいコードになります。
この記事では、IT初心者の方にもわかるように、Pythonで円周率を扱う方法をやさしく解説します。円の面積や円周の計算、実務で気をつけたいポイント、少し応用したサンプルコードまで順番に見ていきましょう!
Pythonで円周率を使う基本¶
Pythonで円周率を使うときは、標準ライブラリのmathモジュールを使います。
標準ライブラリとは、Pythonをインストールした時点で最初から使える便利な道具箱のようなものです。
円周率は数学でよく出てくる値ですが、プログラムの中では変数や定数として扱います。Pythonではmath.piという名前で用意されています。
import math
print(math.pi)
このコードを実行すると、次のような値が表示されます。
3.141592653589793
見慣れた3.14よりも、かなり長い数字が出てきましたね。これはPythonが円周率をできるだけ実用的な精度で持っているからです。
初心者のうちは、円周率を使いたくなったら、まずimport mathと書いてmath.piを使う、と覚えておくと十分です。
そもそも円周率とは何か?¶
ここで少しだけ、円周率そのものを確認しておきましょう。 難しい数学の話ではなく、Pythonで何を計算しているのかを理解するための準備です。
円周率とは、円の直径に対して円周が何倍になるかを表す数です。どんな大きさの円でも、円周 ÷ 直径 はほぼ 3.14159になります。
たとえば直径が1の円なら、円周は約3.14です。直径が10の円なら、円周は約31.4になります。
この関係をプログラムで使うと、円周や面積を簡単に計算できます。Pythonで円周率を扱う場面の多くは、まさにこのような計算です。
3.14を直接書くのはダメなのか¶
では、Pythonで円周率を使うときに3.14と直接書いてはいけないのでしょうか。絶対にダメではありません。
学習中の簡単なサンプルなら、3.14と書いても意味は通じます。ただし、実務や長く残るコードではあまりおすすめしません。
理由はシンプルです。3.14と書くと、なぜその数字なのかがコードだけでは少しわかりにくくなるからです。
radius = 5
area = 3.14 * radius * radius
print(area)
このコードは動きます。ですが、あとから読んだ人は、この3.14が円周率だとすぐにわかるでしょうか。
もちろん、多くの人はわかります。それでも、コードはできるだけ意味が伝わる書き方にしたほうが安全です。
import math
radius = 5
area = math.pi * radius * radius
print(area)
math.piと書かれていれば、これは円周率を使っているのだと明確にわかります。さらに 3.14よりも精度が高いので、計算結果もより正確になります。
このような、プログラムの中に直接書き込まれた具体的な数値や文字列のことをマジックナンバーと呼びます。 マジックナンバーはコードの可読性を落とす、厄介なものです。詳しくはこちらの記事で解説しています。
【関連記事】マジックナンバーとは?コードの可読性を上げる定数の使い方
math.piの使い方¶
ここからは、実際にmath.piを使った計算例を見ていきます。まずは基本となる円周と面積の計算です。
円周率を使う代表的な公式は、円周と円の面積です。Pythonで書くと、公式の形がそのままコードになります。
| 計算したいもの | 数学の式 | Pythonでの書き方 |
|---|---|---|
| 円周 | 直径 × 円周率 | diameter * math.pi |
| 円周 | 半径 × 2 × 円周率 | radius * 2 * math.pi |
| 円の面積 | 半径 × 半径 × 円周率 | radius * radius * math.pi |
| 円の面積 | 半径の2乗 × 円周率 | math.pi * radius ** 2 |
表で見ると、Pythonのコードは数学の式にかなり近いことがわかります。特に 2乗は ** 2 と書く ところがポイントです。
円周を計算するサンプル¶
まずは円周を計算してみましょう。半径が5の円の円周を求める例です。
import math
radius = 5
circumference = 2 * math.pi * radius
print(circumference)
実行すると、次のような結果になります。
31.41592653589793
半径5の円は直径10なので、円周はおよそ31.4になります。学校で習った計算と同じですね。
ただ、プログラムでは小数点以下が長く表示されることがあります。画面表示やレポート出力では、必要に応じて丸めることが多いです。
円の面積を計算するサンプル¶
次に、円の面積を計算してみます。半径が5の円なら、半径 × 半径 × 円周率です。
import math
radius = 5
area = math.pi * radius ** 2
print(area)
実行結果は次のようになります。
78.53981633974483
このように、Pythonでは数式をかなり自然に書けます。radius ** 2 は radius の2乗という意味です。
初心者の方は、最初ここで少し戸惑うかもしれません。掛け算の * と、累乗の ** は見た目が似ているので、ゆっくり慣れていきましょう。
表示する桁数を調整する¶
円周率を使った計算では、小数点以下が長くなることがよくあります。人に見せる結果としては、長すぎると少し読みにくいですよね。
そのようなときは round 関数や f-string を使って表示を整えます。計算そのものは高い精度で行い、表示するときだけ整えるのが基本です。
round関数で丸める¶
round 関数を使うと、小数点以下の桁数を指定して丸められます。たとえば小数点以下2桁にしたい場合は、次のように書きます。
import math
radius = 5
area = math.pi * radius ** 2
rounded_area = round(area, 2)
print(rounded_area)
実行結果は次のようになります。
78.54
round(area, 2) は、area を小数点以下2桁に丸めるという意味です。円周率の計算結果を画面に出すときによく使います。
ただし、丸めた値をさらに別の計算に使うと、少しずつ誤差が広がることがあります。基本的には、最後に表示するときだけ丸めるのがおすすめです。
【関連記事】Pythonの丸め誤差とは?初心者にもわかる原因と対策をエンジニア歴10年の視点で解説
f-stringで見た目を整える¶
Pythonでは f-string を使って、小数点以下の表示桁数を指定することもできます。これはレポートやメッセージを作るときにとても便利です。
import math
radius = 5
area = math.pi * radius ** 2
print(f"円の面積は {area:.2f} です")
実行結果は次のようになります。
円の面積は 78.54 です
{area:.2f}は、area を小数点以下2桁で表示するという意味です。値そのものを変更するというより、表示の形を整えるイメージです。
個人的には、画面表示やログ出力では f-string をよく使います。読みやすく、変数名も自然に埋め込めるからです。
【関連記事】Pythonのf-stringとは?デバッグが驚くほど楽になる!
mathモジュールとは何か¶
ここまで何度も import math と書いてきました。では、このmathとは何なのでしょうか。
mathは、Pythonで数学的な計算をするときに使う標準モジュールです。円周率だけでなく、平方根、三角関数、切り上げ、切り捨てなども扱えます。
import math
print(math.pi)
print(math.sqrt(16))
print(math.floor(3.9))
print(math.ceil(3.1))
このコードでは、円周率、平方根、切り捨て、切り上げを使っています。数学の道具がひとまとめになっているイメージです。
| 書き方 | 意味 | 例 |
|---|---|---|
| math.pi | 円周率 | 3.141592653589793 |
| math.sqrt(x) | xの平方根 | math.sqrt(16) は 4.0 |
| math.floor(x) | 小数点以下を切り捨て | math.floor(3.9) は 3 |
| math.ceil(x) | 小数点以下を切り上げ | math.ceil(3.1) は 4 |
Pythonに慣れてくると、標準ライブラリを知っているかどうかで作業効率が大きく変わります。自分で複雑な処理を書く前に、まず標準で用意されていないか調べる習慣をつけると良いです。
【関連記事】Python組み込み関数とは?初心者でもわかる徹底解説
変数名をわかりやすくする¶
円周率の計算では、変数名も大切です。
radiusやdiameterのように意味がわかる名前を使うと、コードが読みやすくなります。
radiusは半径、diameterは直径という意味です。英語に慣れていないと少し難しく感じるかもしれませんが、プログラミングではよく出てくる単語です。
import math
radius = 10
diameter = radius * 2
circumference = diameter * math.pi
print(circumference)
このコードは、半径から直径を求めて、その直径を使って円周を計算しています。変数名が具体的なので、処理の流れが追いやすいですね。
逆に、次のようなコードは少し読みにくくなります。
import math
r = 10
d = r * 2
c = d * math.pi
print(c)
短い変数名は悪ではありません。ですが、初心者向けのコードやチームで読むコードでは、意味が伝わる名前を選んだほうが親切です。
エンジニア歴10年の現場感として、変数名のわかりやすさはレビューでよく見られます。難しい技術よりも、まず読めるコードにすることが大切です。
初心者がつまずきやすいポイント¶
ここまで読んできて、なんとなく使えそうだと感じた方も多いと思います。 とはいえ、Pythonで円周率を扱うときには、初心者がつまずきやすいポイントがあります。
import mathを書き忘れる¶
最もよくあるのが、import math を書き忘れることです。math.pi を使うには、先に math モジュールを読み込む必要があります。
print(math.pi)
このコードをそのまま実行すると、math が定義されていないというエラーになります。Pythonは親切ですが、使う道具は先に読み込んであげる必要があります。
正しくは次のように書きます。
import math
print(math.pi)
エラーが出ると焦ってしまいますよね。ですが、NameError が出たときは、変数名やモジュール名を定義しているかを確認すると解決できることが多いです。
piだけで使おうとしてしまう¶
math.pi ではなく pi とだけ書いてしまうミスもあります。Pythonでは、import mathと書いただけでは pi という名前は直接使えません。
import math
print(pi)
このコードもエラーになります。piはmathの中にあるため、math.piと書く必要があります。
もし pi とだけ書きたい場合は、次のようにimportする方法もあります。
from math import pi
print(pi)
ただ、初心者のうちはmath.piと書くほうがおすすめです。どのモジュールの値を使っているのかが見えやすいからです。
小数の誤差に驚いてしまう¶
Pythonで小数を扱うと、思った通りにぴったり表示されないことがあります。これはPythonに限らず、多くのプログラミング言語で起こる現象です。
円周率も小数なので、計算結果が長くなったり、見た目に少し違和感のある値になったりします。
import math
result = math.pi * 10
print(result)
多くの場合は、表示時に丸めれば問題ありません。お金の計算のように厳密さが必要な場合は、Decimalなど別の仕組みを検討します。
円周率を使う図形計算では、まずは math.piとroundやf-stringの組み合わせで十分なことが多いです。
円周率を定数として自分で定義するのはありか¶
たまに、次のように自分で PI を定義するコードを見ることがあります。
PI = 3.14159
radius = 5
area = PI * radius ** 2
print(area)
この書き方も動きます。
プロジェクトの方針として定数をまとめる場合は、あえてこう書くこともあります。 ただし、単純に円周率を使いたいだけなら math.piのほうが自然です。Pythonが標準で用意してくれている値を使えば、余計な定義を増やさずに済みます。 自分で PI を定義すると、桁数をどこまで書くか、他のファイルでも同じ値を使うか、という管理の問題が出ます。特別な理由がなければ math.pi を使いましょう。
まとめ¶
Pythonで円周率を使うなら、まず math.pi を覚えておけば大丈夫です。import mathと書いてからmath.piを使うだけなので、初心者でもすぐに試せます。
円周や円の面積を計算するときは、3.14と直接書くよりもmath.piを使うほうが、正確で読みやすいコードになります。さらにround関数やf-stringを組み合わせると、表示もきれいに整えられます。
最初は、円周率の計算だけを見ると小さなテーマに感じるかもしれません。ですが、標準ライブラリを使う、変数名をわかりやすくする、関数にして再利用する、表示を整えるという大切な基本が詰まっています。
Python学習では、このような小さなテーマを一つずつ理解していくことが力になります。焦らず、まずは自分の手元で math.piを使って円の面積を計算してみてください。
ここまでお読みいただきありがとうございました!