Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでゼロ埋めする方法|zfill()とformat()の使い方を徹底解説

システムによっては、数値の先頭にゼロ(0)を1つ以上付けなければならないケースがあります。たとえば、ユーザーIDが一定の桁数に満たない場合、すべてのIDの長さを揃えるために先頭にゼロを追加することがあります。

Pythonでは、文字列にゼロを埋めるには zfill() 関数を、数値にゼロを埋めるには文字列フォーマットを使用します。この記事では、文字列と整数それぞれにゼロ埋めを行う具体例を、サンプルコード付きでわかりやすく解説します。

Pythonで文字列をゼロ埋めする方法

ここでは、抽選券の番号が当選番号かどうかを判定するプログラムを作成してみましょう。各抽選券の番号は、次のように3桁の数字で構成されています。

022

プログラムはユーザーに番号の入力を求め、入力された番号が100未満の場合は先頭にゼロを追加します。こうすることで、ユーザーの入力値と当選券の番号を正しく比較できるようになります。

まず、当選券の番号リストを定義しましょう。

winners = ["033", "087", "183", "173", "012"]

各券番号は文字列として格納されています。次に、input() メソッドを使ってユーザーに番号の入力を促します。

to_check = input("確認したい番号を入力してください: ")

ユーザーが入力した値は、当選番号リスト内から検索する対象となり、文字列として扱われます。

ただし、ユーザーが必ずしも3文字の番号を入力するとは限りません。そこで、入力された抽選番号を正しい形式に整えるために zfill() メソッドを使用します。このメソッドは、数値の先頭にゼロを追加します。

抽選券の番号は3文字なので、zfill() メソッドの引数には 3 を指定します。

to_check = to_check.zfill(3)

このメソッドにより、「to_check」の値が正しい形式に整えられます。引数の 3 は「to_check」に含まれるべき全体の桁数を表しており、追加するゼロの個数を指定するものではない点に注意してください。

次に、if 文と in 演算子を使って、「to_check」の値が当選番号リストに含まれているかどうかを判定します。

if to_check in winners:
    print("券番号{}は当選です。".format(to_check))
else:
    print("券番号{}は当選ではありません。".format(to_check))

券番号が当選番号と一致すれば if 文が実行され、一致しなければ else 文が実行されます。それではコードを実行して結果を確認してみましょう。

確認したい番号を入力してください: 33
券番号033は当選です。

コードは正常に動作し、券番号033が当選していることを正しく判定できました。次に、当選しない番号を入力した場合の動作を見てみましょう。

確認したい番号を入力してください: 182
券番号182は当選ではありません。

プログラムは、その券が当選していないことを通知します。

Pythonで数値をゼロ埋めする方法

注意:以下の例は Python 2.7 以降のバージョンでのみ動作します。

最初の例では、文字列として保存された値に対してゼロ埋めを行いました。数値型の値にゼロを埋めたい場合は、別のアプローチを使用します。

ここでは、社員識別コードのリストを生成する場面を想定します。このコードは企業の各社員を識別するために使われ、各ID番号は「先頭に3桁の数字+末尾に社員の姓」という形式である必要があります。

まず、社員IDの先頭に付ける数字の入力をユーザーに求めます。あわせて、社員の姓も入力してもらいましょう。

id_numbers = int(input("社員のID番号を入力してください: "))
surname = input("社員の姓を入力してください: ")

次に、これらの値を文字列として整形します。format() メソッドを使用します。

print("{}さんの社員識別コードは{:03d}{}です。".format(surname, id_numbers, surname))

波括弧({})は、文字列に差し込まれる値を表しています。

1つ目の波括弧は社員の姓に置き換えられます。2つ目の波括弧は「id_numbers」の値に置き換えられ、ユーザーが入力した数値が3桁に満たない場合は自動的にゼロが追加されます。

最後の波括弧は、社員識別コードの末尾部分である姓を表しています。それではプログラムを実行してみましょう。

社員のID番号を入力してください: 823
社員の姓を入力してください: SMITH
SMITHさんの社員識別コードは823SMITHです。

プログラムは正常に動作しました。今回は3桁のID番号を入力したため、ゼロは追加されていません。次に、2桁のID番号を入力した場合の動作を確認してみましょう。

社員のID番号を入力してください: 78
社員の姓を入力してください: JONES
JONESさんの社員識別コードは078JONESです。

この場合でも、プログラムは指定どおりの形式で識別コードを生成しました。各識別コードは「3桁の数字+社員の姓」で構成されています。

まとめ

Pythonの文字列の先頭にゼロを埋めるには zfill() メソッドを、整数値にゼロを埋めるには .format() メソッドを使用します。

これで、あなたもPythonでプロのコーダーのように、値の先頭へ自由自在にゼロを追加できるようになりました!

  1. Pythonで整数が回文数(パリンドローム)かどうかを判定する方法

    整数が与えられたとき、それが回文数(パリンドローム)であるかどうかを判定する方法を解説します。回文数とは、前から読んでも後ろから読んでも同じ並びになる数値のことです。例えば「454」は逆順にしても「454」となるため回文数です。一方、「-565」を逆順にすると「565-」となり、マイナス記号の位置が変わるため元の数と一致せず、回文数にはなりません。解法の考え方この問題は非常にシンプルに解けます。手順は以下の通りです。1. 数値をstr()で文字列に変換する2. Pythonのスライス記法[::-1]を使って文字列を反転させる3. 元の文字列と反転した文字列を比較し、一致すればTrue、一致しな

  2. Pythonで階乗を計算する3つの方法|forループ・再帰・math.factorial()の使い方

    階乗(factorial)の計算は、データ分析をはじめとする数学的な処理において、Pythonでよく求められる操作の一つです。階乗とは、正の整数 n に対して、1から n までのすべての整数を掛け合わせた値のことです(例:5! = 1 × 2 × 3 × 4 × 5 = 120)。この記事では、Pythonで階乗を求める3つの方法を、コード例と実行結果とともにわかりやすく解説します。方法1:forループを使うforループで1から目的の数値まで順番に処理し、各ステップで掛け算を繰り返していく方法です。以下のプログラムでは、ユーザーに数値の入力を促し、ループ処理の前にint()で入力値を整数に変換