Python 编写密码有效性检查函数

Python 编写密码有效性检查函数,python,Python,我最近开始学习Python,并在遇到以下场景时开始处理场景: 问题: 网站要求用户输入用户名和密码进行注册。编写一个程序来检查有效性 用户输入的密码。 以下是检查密码的标准: 1.[a-z]之间至少有一个字母 2.至少1个介于[0-9]之间的数字 1.[A-Z]之间至少有一个字母 3.[$#@]中至少有1个字符 4.交易密码的最小长度:6 5.交易密码的最大长度:12 您的程序应该接受逗号分隔的密码序列,并将根据上面的说明进行检查 标准将打印符合条件的密码,每个密码用逗号分隔。 实例 如果以下密

我最近开始学习Python,并在遇到以下场景时开始处理场景:

问题: 网站要求用户输入用户名和密码进行注册。编写一个程序来检查有效性 用户输入的密码。 以下是检查密码的标准: 1.[a-z]之间至少有一个字母 2.至少1个介于[0-9]之间的数字 1.[A-Z]之间至少有一个字母 3.[$#@]中至少有1个字符 4.交易密码的最小长度:6 5.交易密码的最大长度:12 您的程序应该接受逗号分隔的密码序列,并将根据上面的说明进行检查 标准将打印符合条件的密码,每个密码用逗号分隔。 实例 如果以下密码作为程序的输入: ABd1234@1,a F1#,2w3E,2We3345 然后,程序的输出应为: ABd1234@1*

我解决问题的方法是以下代码:

'''

def有效性检查(pword):
返回\
(任何(i.islower()代表pword中的i))和\
(任何(i.isnumeric()表示pword中的i))和\
(任何(i.isupper()表示pword中的i))和\
(任何((i==“$”或i==“#”或i==“@”)表示pword中的i)和\
(6对设置
有效性检查功能的格式有一些具体建议:

  • 与使用反斜杠的显式行连续体相比,更喜欢括号内的隐式行连续体
  • 将二进制运算符放在连续行的开头
此外,由于您有一组布尔值
组合在一起,请先执行最便宜的值。特别是在这里,您希望在多次迭代以验证其他条件之前拒绝长度错误的密码

最后,与多个相等性检查相比,更喜欢包含检查,并去掉多余的括号

def validity_check(pword):

    return (6 <= len(pword) < 13
            and any(i.islower() for i in pword)
            and any(i.isnumeric() for i in pword)
            and any(i.isupper() for i in pword)
            and any(i in "$#@" for i in pword))
def有效性检查(pword):

return(6您可以使用正则表达式来解决这个问题,我认为它会帮助您

import re

pattern = r'^([^a-z]*|[^A-Z]*|[^0-9]*|[^#$@]*)$'

wordlist = list(map(str,input("Please enter a series of passwords to check, separated by a comma: ").split(',')))
for i in wordlist:
    if not(re.match(pattern,i)) and (5<len(i) and len(i)<13):
       print(i)
重新导入
pattern=r'^([^a-z]*.[^a-z]*.[^0-9]*.[^a-z]*.[^0-9]*.[^a-z]].$)
wordlist=list(映射(str,输入(“请输入一系列要检查的密码,用逗号分隔:”).split(“,”))
对于单词列表中的i:
如果不是(re.match(pattern,i))和(5)“可读性”是旁观者眼中的东西——我看到超复杂的代码被打断成一行,因为支持所述代码的团队完全理解它。否则我会认为“不可读”和“不可维护”是对他们来说最理想的解决方案。也就是说,阅读。
import re

pattern = r'^([^a-z]*|[^A-Z]*|[^0-9]*|[^#$@]*)$'

wordlist = list(map(str,input("Please enter a series of passwords to check, separated by a comma: ").split(',')))
for i in wordlist:
    if not(re.match(pattern,i)) and (5<len(i) and len(i)<13):
       print(i)