Pythonで数字を単語に変換する方法

スポンサーリンク

この記事では、数字を語呂合わせで変換する方法(桁数変換)を学びます。

例えば、数字が12であれば、「one-two」となります。

同じようなことが、残りの入力にも行われます。

スポンサーリンク

コード実装

以下に示すいくつかのステップを踏むことになります。

ステップ1:数字と単語の対応付けのためのグローバルリストを作成する

0から9までの各桁に対応する単語を含むグローバルリストを作成します。

このリストには、以下の表に示すようにインデックスにマッピングされた要素が含まれます。

| — | — | — | — | — | — | — | — | — | — | — |
| インデックス|0|1|2|3|4|5|6|7|8|9|の順で表示します。

| 言葉・値|0|1|2|3|4|5|6|7|8|9|||||。

数字から単語へのマッピングのためのグローバルリスト

1
2
# Global Array storing word for each digit
arr = ['zero','one','two','three','four','five','six','seven','eight','nine']

ステップ2:数値の入力とメイン関数の作成

数値の入力を受け取るために、input関数を使用し、それを整数にタイプキャストします。

また、数値を桁ごとに単語に変換する空の関数を作成します。

1
2
3
4
5
6
7
8
9
10
# Global Array storing word for each digit
arr = ['zero','one','two','three','four','five','six','seven','eight','nine']
 
def number_2_word(n):
    pass
 
n = int(input())
print("Number Entered was : ", n)
print("Converted to word it becomes: ",end="")
print(number_2_word(n))

ステップ3:関数内のメインロジックをコーディングする

このコードでは、Recursionを使用します。

もし、Recursionについてほとんど、あるいは全く知識がない場合は、以下のチュートリアルをチェックすることをお勧めします。

Recursionについてもっと読む。

再帰呼び出しのたびに、私の数字が0になったかどうかをチェックします。

0になった場合は空の文字列を返し、そうでない場合はモジュラス関数を使って各桁の単語を追加し続け、数字を10で割って数字を縮小して次の桁に移動します。

以下に実装を示し、理解を助けるためにコメントを付けます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Global Array storing word for each digit
arr = ['zero','one','two','three','four','five','six','seven','eight','nine']
 
def number_2_word(n):
 
    # If all the digits are encountered return blank string
    if(n==0):
        return ""
     
    else:
        # compute spelling for the last digit
        small_ans = arr[n%10]
 
        # keep computing for the previous digits and add the spelling for the last digit
        ans = number_2_word(int(n/10)) + small_ans + " "
     
    # Return the final answer
    return ans
 
n = int(input())
print("Number Entered was : ", n)
print("Converted to word it becomes: ",end="")
print(number_2_word(n))

結果を出力すると、以下の様になります。

Number Entered was :  123
Converted to word it becomes: one two three
Number Entered was :  46830
Converted to word it becomes: four six eight three zero

まとめ

このチュートリアルの最後には、Recursionを使うことで、かなり簡単かつシンプルな方法で、数字を文言に変換することができることがわかりました。

お読みいただきありがとうございました。

タイトルとURLをコピーしました