Pythonで整数を英語の単語(英字表記)に変換する方法を解説
はじめに
この記事では、0から231−1までの範囲にある任意の整数を受け取り、それを英語の単語表記に変換するPythonプログラムを紹介します。例えば、入力が「512」であれば、出力は「Five Hundred Twelve」となります。
アルゴリズムの考え方
数値を単語に変換するには、以下の手順で処理を進めます。
- 1から19までの英単語を格納するリスト less_than_20 を定義します。
- 「Twenty」「Thirty」など10の位の単語を格納するリスト tens を定義します。
- 「Thousand」「Million」「Billion」を格納するリスト thousands を定義します。
- 999以下の数値を単語に変換する補助関数 helper() を作成します。引数として n を受け取ります。
helper() 関数のロジック
- n が 0 の場合は空文字列を返します。
- n が 20 未満の場合は less_than_20[n] と空白を返します。
- n が 100 未満の場合は tens[n // 10] と空白、さらに helper(n % 10) の結果を連結して返します。
- それ以外の場合は less_than_20[n // 100] と「Hundred」、さらに helper(n % 100) の結果を連結して返します。
メインメソッドのロジック
- num が 0 の場合は「Zero」を返します。
- ans を空文字列、i を 0 で初期化します。
- num が 0 より大きい間、以下を繰り返します。
- num % 1000 が 0 でない場合、ans = helper(num % 1000) + thousands[i] + 空白 + ans とします。
- 最後に ans を返します。
それでは、実際のコードを見て理解を深めましょう。
実装例
class Solution(object):
less_than_20 = ["", "One", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen",
"Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen",
"Nineteen"]
tens = ["","Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty",
"Seventy", "Eighty", "Ninety"]
thousands = ["", "Thousand", "Million", "Billion"]
def numberToWords(self, num):
if num == 0:
return "Zero"
ans = ""
i = 0
while num > 0:
if num % 1000 != 0:
ans = self.helper(num % 1000) + Solution.thousands[i] + " " + ans
i += 1
num //= 1000
return ans.strip()
def helper(self, n):
if n == 0:
return ""
elif n < 20:
return Solution.less_than_20[n] + " "
elif n < 100:
return Solution.tens[n//10] + " " + self.helper(n % 10)
else:
return Solution.less_than_20[n // 100] + " Hundred " + self.helper(n % 100)
ob = Solution()
print(ob.numberToWords(512))
print(ob.numberToWords(7835271))
入力
512
7835271
出力
Five Hundred Twelve
Seven Million Eight Hundred Thirty Five Thousand Two Hundred Seventy One
まとめ
このアルゴリズムでは、数値を3桁ずつ区切って処理することで、大きな数値でも効率よく英語表記へ変換できます。再帰的な helper() 関数によって百の位・十の位・一の位を段階的に分解し、thousands リストを使って桁の大きさ(Thousand、Million、Billion)を付与しています。計算量は数値の桁数に依存し、非常にシンプルかつ高速な手法です。
-
PythonのTkinterプログラミング入門:GUIアプリケーション開発の基本
TkinterとはTkinterは、Pythonに標準で付属しているGUI(グラフィカルユーザーインターフェース)ライブラリです。PythonとTkinterを組み合わせることで、手軽かつスピーディーにGUIアプリケーションを構築できます。Tkinterは、Tk GUIツールキットへの強力なオブジェクト指向インターフェースを提供しており、ボタンやラベルなどの部品(ウィジェット)を直感的に配置できるのが特徴です。GUIアプリケーション作成の基本手順Tkinterを使ったGUIアプリケーションの作成はとてもシンプルです。基本的には、以下の手順に従うだけで実装できます。Tkinterモジュールをイン
-
PythonのTurtleグラフィックス入門!基本メソッド一覧と図形描画サンプルコード集
Turtle(タートル)はPythonに標準搭載された特殊な機能で、専用の描画ウィンドウ上に簡単に図形を描くことができるモジュールです。 使い方はとてもシンプルです。まずturtleモジュールをインポートし、次にウィンドウ(Screen)を作成、その後タートルオブジェクトを生成します。あとは各種メソッドを呼び出すだけで、キャンバス上に自由に描画できます。この記事では、よく使われるメソッドの一覧表と、正方形・星・六角形などの具体的な描画例をサンプルコード付きで解説します。 主なTurtleメソッド一覧 メソッド パラメータ 説明 Turtle() なし 新しいタートルオブジェクトを作成