Python | 2つの値から約分された分数、比率を割り出す方法

2023-02-26Python 数値・計算,Python

Python | 2つの値から約分された分数、比率を割り出す方法

Pythonのメソッドを使って2つの値から比率、分数を割り出す方法とサンプルコードを紹介しています。

確認環境

Windows11 ローカル
Python python-3.11.1

2つの値から約分された分数を割り出す

Pythonで2つの値から約分された分数を割り出すには「fractions」モジュールからFraction()関数を使う事で実装が可能です。
Fraction()関数は、例えば「a分のb」という分数の約分した結果を取得したい場合は、第一引数に「b」第二引数に「a」を指定します。

サンプルコードでは以下の手順で約分した分数を取得しています。

  • 2つの数値を持つ変数を「a」「b」とする
  • Fraction()関数で約分した分数を取得する

下記のサンプルコードでは、「200分の40」を約分した結果「1/5」が返されています。

import fractions

a = 200
b = 40

# 約分された分数を取得する
fraction = fractions.Fraction(b, a)

print(fraction)
# 1/5

2つの値から約分された分数を割り出す

比率に対して約分という言葉が正しいのかわかりませんが、比率を約分した状態の結果が必要な場合を紹介します。

比率として取得可能な関数はありませんので、計算式を作成して取得する必要がありますが、基本的には約分された分数と同じ結果ですので、上記のFraction()関数の結果をsplit()関数を使って「/」を区切り文字に分解しても良いのでは?と考えます。

Fraction()関数の返り値「/」が入っていますが、数値型のひとつでFraction型と呼ばれており、文字列ではありませんので、サンプルコードでは一度str()関数で文字列に変換しています。
必要に応じてint()関数などで数値に戻す必要があります。

import fractions

a = 24
b = 60

# 約分された分数を文字列にして、「/」で分解する
ratio = str(fractions.Fraction(b, a)).split("/")

print(ratio[0], ratio[1])
# 5 2