Photo by
wise_toucan7431
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") 💡 このプログラムがしていること
間違えた回数を記憶する:
failed_attempts という変数を使って、パスワードを間違えた回数を「1、2、3…」と自動でカウントします。3回目で完全にシャットダウンする:
間違えた回数が3回になった瞬間に is_locked を「はい(True)」に切り替え、それ以降はたとえ正しいパスワードを入力されても絶対にデータを開かないようにします。「紙の書類で再発行」のルールへ:
ロックされたら、あなたが言っていた「キャッシュカードと同じように、紙の書類を持って手続きするまで使えない状態」を完璧に守ります。
