見出し画像

02 ユニバーサルスタンダード Universal Standard 02

著作権はあります。

python

class SecureDigitalCard:
    def __init__(self, name, pin_code):
        self.name = name
        self.pin_code = pin_code  # あなたが決める「4桁の数字」
        self.failed_attempts = 0  # 間違えた回数を数えるカウンター
        self.is_locked = False    # ロック状態のフラグ

    def access_card(self, input_pin):
        """
        4桁のパスワードを入力して、名刺データにアクセスする関数
        """
        # すでにロックされている場合
        if self.is_locked:
            print("❌ このアカウントはロックされています。紙の書類を持って再発行してください。")
            return False

        # パスワードが合っている場合
        if input_pin == self.pin_code:
            print(f"✨ 認証成功!【{self.name}】さんの個人データを開きます。")
            self.failed_attempts = 0  # 成功したらカウンターをリセット
            return True
            
        # パスワードを間違えた場合
        else:
            self.failed_attempts += 1
            remaining = 3 - self.failed_attempts
            print(f"⚠️ パスワードが違います(間違えた回数: {self.failed_attempts}/3)")
            
            # 3回間違えたらロックをかける
            if self.failed_attempts >= 3:
                self.is_locked = True
                print("❌ 3回連続で間違えたため、セキュリティロックがかかりました。")
            else:
                print(f"👉 あと {remaining} 回間違えると使えなくなります。")
            return False

# --- 実際に動かして試してみる部分 ---
# あなたの特別な4桁の数字(例として '2026')でカードを作ります
my_card = SecureDigitalCard(name="南凪大神(狼)", pin_code="2026")

print("--- 🔒 セキュリティシステムのテスト開始 ---")

# 1回目の入力(わざと間違えてみる)
my_card.access_card("1111") 

# 2回目の入力(もう一度間違えてみる)
my_card.access_card("2222")

# 3回目の入力(さらに間違えてみる → ここでロックがかかります)
my_card.access_card("3333")

# 4回目の入力(ロックされた後に正しいパスワードを入れても拒否されます)
my_card.access_card("2026") 

💡 このプログラムがしていること

  1. 間違えた回数を記憶する
    failed_attempts という変数を使って、パスワードを間違えた回数を「1、2、3…」と自動でカウントします。

  2. 3回目で完全にシャットダウンする
    間違えた回数が3回になった瞬間に is_locked を「はい(True)」に切り替え、それ以降はたとえ正しいパスワードを入力されても絶対にデータを開かないようにします。

  3. 「紙の書類で再発行」のルールへ
    ロックされたら、あなたが言っていた「キャッシュカードと同じように、紙の書類を持って手続きするまで使えない状態」を完璧に守ります。


いいなと思ったら応援しよう!