鱼C论坛

 找回密码
 立即注册
查看: 1417|回复: 2

14将课后check.py

[复制链接]
发表于 2020-3-15 21:18:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下。这题是不是没有包括所有的情况,例如“非字母开头但是超过16位且包含字母、数字、特殊符号”的密码,就无法判断级别了?
# 定义特殊字符串
spestr = "~!@#$%^&*()_=-/,.?<>;:[]{}|\"
# 定义数字字符串
numstr = '1234567890'
# 定义字母字符串
alpstr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

passwd = input('输入密码:')
passcap = passwd[0]

# 密码是否包含特殊字符
for i in range(len(spestr)):
    if passwd.find(spestr[i]) != -1:
        spe = 'True'
        break
    else:
        spe = 'False'
# 密码是否包含数字
for i in range(len(numstr)):
    if passwd.find(numstr[i]) != -1:
        num = 'True'
        break
    else:
        num = 'False'

# 密码是否包含字母
for i in range(len(alpstr)):
    if passwd.find(alpstr[i]) != -1:
        alp = 'True'
        break
    else:
        alp = 'False'

# 密码是否为字母开头
if passcap.isalpha() == True:
    cap = 'True'
else:
    cap = 'False'

a = '密码安全级别评定为:'
#低级密码
if len(passwd) <= 8 or passwd.isdigit() == True or passwd.isalpha() == True:
    print(a, '低')
# 中级密码
elif len(passwd) >8 and (passwd.isdigit() == False or passwd.isalpha() == False) and (spe == 'False' or num == 'False' or alp == 'False'):
    print(a, '中')
# 高级密码
elif len(passwd) >= 16 and spe == 'True' and num == 'True' and alp == 'True' and cap == 'True':
    print(a, '高')
    
    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-15 22:12:02 | 显示全部楼层
自己回答一下:看了答案之后发现,除了高和低都是中。继续改代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 22:39:43 | 显示全部楼层
改完的代码如下,结果应该和小甲鱼的一样了。
# 定义特殊字符串
spestr = "~!@#$%^&*()_=-/,.?<>;:[]{}|\"
# 定义数字字符串
numstr = '1234567890'
# 定义字母字符串
alpstr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

passwd = input('输入密码:')
# 获取psswd的第一个字符
passcap = passwd[0]

# 密码是否包含特殊字符
for i in range(len(spestr)): # 从特殊字符串顺序取值,从0至特殊字符串长度
    if passwd.find(spestr[i]) != -1: # 如果passwd里能找到特殊字符串里的字符则为true并退出for循环,否则为false并继续for循环
        spe = 'True'
        break
    else:
        spe = 'False'
# 密码是否包含数字
for i in range(len(numstr)): # 从数字字符串顺序取值,从0至数字符串长度
     if passwd.find(numstr[i]) != -1: # 如果passwd里能获取数字字符串里的字符则为true并退出for循环,否则为false并继续for循环
        num = 'True'
        break
     else:
        num = 'False'
# 密码是否包含字母
for i in range(len(alpstr)): # 从字母字符串顺序取值,从0至字母符串长度
    if passwd.find(alpstr[i]) != -1: # 如果passwd里能获取字母字符串里的字符则为true并退出for循环,否则为false并继续for循环
        alp = 'True'
        break
    else:
        alp = 'False'
# 密码是否为字母开头
if passcap.isalpha() == True:
    cap = 'True'
else:
    cap = 'False'

a = '密码安全级别评定为:'
while True:
    #低级密码
    if len(passwd) <= 8 or passwd.isdigit() == True or passwd.isalpha() == True:
        print(a, '低')
    #高级密码
    elif len(passwd) >= 16 and spe == 'True' and num == 'True' and alp == 'True' and cap == 'True':
        print(a, '高')
        print('请继续保持')
        break
    #中级密码
    else:   
        print(a, '中')
    print('请按一下方式提升您的密码安全级别: \n 1.密码必须由数字、字母及特殊字符三种组合 \n 2.密码只能由字母开头 \n 3.密码长度不能低于16位')
    break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表