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

Pythonで偶数長のランダム4桁PIN番号シリーズを生成する方法【ユーザー入力の検証つき】

この記事では、ユーザーから系列サイズ(長さ)を入力として受け取り、偶数が入力されるまで繰り返し尋ねたうえで、ランダムな4桁のPIN番号シリーズを生成するPythonプログラムを紹介します。

実行結果の例

偶数長のランダムな4桁PIN番号シリーズを生成すると、以下のような出力が得られます。

enter the series size 4
Random four digit pin number series
0     0813
1     7218
2     6739
3     8390

解決手順

この問題を解くためには、以下の手順に従います。

  • 空のリストを作成し、結果を格納する変数 resultTrue に設定します。

  • while ループを設定し、ユーザーからサイズを入力してもらいます。

  • if 条件文を使って、入力されたサイズが偶数か奇数かを判定します。奇数の場合は resultFalse にし、偶数が入力されるまでループを続けます。

l = []
while(True):
    size = int(input("enter the series size"))
    if(size%2==1):
        result = False
  • サイズが偶数である場合は resultTrue に設定し、for ループで指定された範囲分だけ処理を繰り返します。

result = True
for i in range(size):
  • ランダムな4桁の数字を生成し、変数 rand_pin に格納します。

  • rand_pin の値をリストに追加(append)して、シリーズを生成します。

rand_pin = random.sample(num,4)
l.append("".join(rand_pin))
pd.Series(l)
  • result の値が True になったら、if 条件を使ってループを抜けます。

if(result==True):
    break

コード例

以下のコードを見て、実際の動作を確認してみましょう。

# pandas を pd としてインポート
import pandas as pd
import random,string
num = string.digits
result = True
l = []
while(True):
    size = int(input("enter the series size"))
    if(size%2==1):
        result = False
    else:
        result = True
        for i in range(size):
            rand_pin = random.sample(num,4)
            l.append("".join(rand_pin))
        series = pd.Series(l)
        print("Random four digit pin number series\n",series)
    if(result==True):
        break

コードのポイント

  • string.digits は「0123456789」の文字列を返すため、これを数字のプールとして使用しています。

  • random.sample(num, 4) によって、重複のない4つの数字をランダムに抽出します。

  • "".join(rand_pin) で抽出した数字を連結し、4桁のPIN番号を作成します。

  • pd.Series(l) により、リストをpandasのシリーズ形式に変換して見やすく表示します。

出力結果

enter the series size 3
oops! enter an even number!
enter the series size 5
oops! enter an even number!
enter the series size 4
Random four digit pin number series
0     0813
1     7218
2     6739
3     8390
dtype: object

このように、奇数(3や5など)が入力された場合は再入力を促すメッセージが表示され、偶数(4など)が入力された時点でランダムな4桁PIN番号のシリーズが出力されます。入力検証とランダム生成を組み合わせることで、堅牢で実用的なプログラムになっています。

  1. Pythonでpandas Seriesから有効な日付だけをフィルタリングする方法

    データ分析では、文字列として格納された日付の中から、正しい形式の日付だけを抽出したい場面がよくあります。この記事では、Pythonのpandasと正規表現(reモジュール)を使って、Series内から「YYYY-MM-DD」形式の有効な日付だけをフィルタリングする方法を2通り紹介します。 入力データと期待される出力 次のようなSeriesがあると仮定します。 0 2010-03-12 1 2011-3-1 2 2020-10-10 3 11-2-2 この中で「年4桁・月2桁・日2桁」という形式に合致する有効な日付は、以下の2つです。 0 2010-0

  2. Pythonで偶数インデックスの小文字アルファベットから5つのランダム値を持つSeriesを生成する方法

    Pythonでは、stringモジュールとrandomモジュール、そしてpandasを組み合わせることで、小文字アルファベットの中から偶数インデックスの文字だけを抽出し、その中からランダムに5つ選んでSeriesを生成できます。ここでは2つの解決方法を紹介します。 解決方法1:スライスを使った効率的なアプローチ この方法では、以下の手順で処理を行います。 string.ascii_lowercaseで小文字アルファベット(a〜z)を取得し、リスト化します。 Pythonのスライス記法[::2]を使うことで、偶数インデックスの要素だけを簡単に抽出できます。 random.sample()で抽出