Jeff_fz 2017-06-01 09:03 采纳率: 0%
浏览 1294
已结题

CSDN Python学习班 大习题 (二)

练习题目:编写一个函数,接收一个字符串作为参数,判断该字符串作为密码的话其安全强度如何。如果字符串中只包含大写字母、小写字母、数字字符或标点符号中的一种则为弱密码,包含两种为中低安全密码,包含三种为中高安全密码,包含四种则为强密码。(额外要求:不可以使用正则表达式)


参考代码

 import string

def check(pwd):
    #密码必须至少包含6个字符
    if not isinstance(pwd, str) or len(pwd)<6:
        return 'not suitable for password'
    #密码强度等级与包含字符种类的对应关系
    d = {1:'weak', 2:'below middle', 3:'above middle', 4:'strong'}
    #分别用来标记pwd是否含有数字、小写字母、大写字母和指定的标点符号
    r = [False] * 4
    for ch in pwd:
        #是否包含数字
        if not r[0] and ch in string.digits:
            r[0] = True
        #是否包含小写字母
        elif not r[1] and ch in string.ascii_lowercase:
            r[1] = True
        #是否包含大写字母
        elif not r[2] and ch in string.ascii_uppercase:
            r[2] = True
        #是否包含指定的标点符号
        elif not r[3] and ch in ',.!;?<>':
            r[3] = True
    #统计包含的字符种类,返回密码强度
    return d.get(r.count(True), 'error')
  • 写回答

7条回答 默认 最新

  • ououming123 2017-06-01 09:48
    关注

    #思路将酱紫. 标点符号的范围肯定不止这么大. 不知道有多大.
    str = 'azAZ190,./'
    def strongJudge(str):
    charArray = list(str)
    lv = {}
    for c in charArray:
    i = ord(c)
    print(c,'=',i)
    if i >=97 and i <= 122:
    lv['t0'] = 1
    if i >=65 and i <= 90:
    lv['t1'] = 1
    if i >=48 and i <= 57:
    lv['t2'] = 1
    if i>=44 and i <= 47:
    lv['t4'] = 1
    lens = len(lv)
    if lens == 1:
    print("密码强度弱")
    if lens == 2:
    print("密码强度中")
    if lens == 3:
    print("密码强度中高")
    if lens == 4:
    print("密码强度高")

    strongJudge(str)

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试