python - 列表中的密码检查器
问题描述
我正在尝试构建一个检查密码是否有效的函数。它具有通常的约束条件,包括 - 必须包含大写字母、小写字母、数字和标点符号,我有代码。但是标点符号只能来自给定的列表。标点符号是 !@#$%&()-_[]{};':",./<>?
def password_check(string):
punct = ['!', '@', '#', '$', '.', '%', '&', '(', ')', '-', '_', '[', ']', '{', '}', ';', "'", ':', '"', ',', '.', '/', '<', '>', '?']
val = True
if len(string) < 8:
val = False
if not any(char.isdigit() for char in string):
val = False
if not any(char.islower() for char in string ):
val = False
if not any(char.isupper() for char in string):
val = False
if not any(char in whitelist for char in string):
val = False
if any(char == " " for char in string):
val = False
return val
你好世界1!应该返回 True 而 HelloWorld1!* 应该返回 False。如何确保非字母数字字符来自列表?
解决方案
这应该工作
def password_check(string):
whitelist = set("!@#$.%&()-_[]{};':\",./<>?aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789")
if set(string) <= whitelist:
#Password is valid
val = True
else:
#Password isnt Valid
val = False
return val
推荐阅读
- java - JDK 1.5 中的代码构建,但运行时使用 1.8,是否存在性能问题?
- docker - 如何在容器内从一个域“重定向”到另一个域?
- python - Pandas 的 Airflow 并行任务
- javascript - Firebase Firestore endBefore() 处理数据末尾
- bash - 如何使用 sed 或任何其他方法仅替换 magento envfile 中的 dbpassword
- architecture - 构建应用程序的授权在哪里是必要的?
- python - Django - 模型在字符串 'MM/DD/YYYY' 中有日期,在这种情况下我如何 order_by(date)?
- rust - 生成图像的快速 2D 绘图
- javascript - 在按钮单击事件上模拟击键的问题
- html - 如何使用 selenium 在跨度内定位字符串