何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

「秘密の質問」に答えます

「秘密の質問」とは何かしらのアカウントを作成する際に尋ねられる質問である。正直に答えてしまうとソーシャルエンジニアリングの餌食になるので奥村先生のように乱数で答える人もいる。そこで私も全角かな乱数生成ツールをPythonで作ってみることにした。Unicodeを気軽に扱えるのはPython3系統ならではの強みである。

import random
import os

hira = "".join([chr(x) for x in range(ord("あ"), ord('ん')+1)])
kana = "".join([chr(x) for x in range(ord("ァ"), ord('ヶ')+1)])
#cjk_kanji = "".join([chr(x) for x in range(19968, 40959+1)])
allmoji = hira + kana

while True:
    try:
        length = int(input("文字列の長さ: "))
        for _ in range(15):
            print("".join([random.SystemRandom().choice(allmoji)
                           for x in range(length)]))
        break
    except ValueError:
        print("適切な数字を入力してください...")

出力例としては

文字列の長さ: 15
トひソぃョノルナじゃゃサトょダ
るフデゾズゎリダネぐべふサろロ
ゑベわクびたオきガべしケゃイご
ねやせヮヴニへゲヤンにィぃッヲ
けむくヮんふうヅぽッぜはネワヨ
キワうおゎビレゎじべゆれゼっし
くモントクぼぱジガろべウさゅあ
りモメゆニつヅケナぞユやミデご
いワぷゴべハラゐヵヵうまクシヴ
しぎニぽばやゾッけとグりぇぐア
ソォげバロゲリゾイヲプォづヌヴ
けぴぇトかかパでどぢヌネコマフ
てろゲにばゃんゆダズピヅとソヅ
シゅバエとヒすヴハヵゎソおアト
ぼにうユそポェへぢフバばュィぞ

となる。漢字も試してみたが文字化けしたような感じになるのでコメントアウトで外している。