鱼C论坛

 找回密码
 立即注册
查看: 3125|回复: 13

[已解决]字符串练习题(检查密码安全级别)

[复制链接]
发表于 2017-7-17 14:39:47 | 显示全部楼层 |阅读模式

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

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

x
答案的代码在完成检查密码的安全级别工作后即结束,那么,如果我想要用户一直输入密码,直到符合安全性为“高”的要求后程序才停止,该如何修改以下代码呢?谢谢!


# 密码安全性检查代码
#
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
#
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'

passwd = input('请输入需要检查的密码组合:')

# 判断长度
length = len(passwd)

while (passwd.isspace() or length == 0):
    passwd = input("您输入的密码为空(或空格),请重新输入:")
    length = len(passwd)

if length <= 8:
    flag_len = 1
elif 8 < length < 16:
    flag_len = 2
else:
    flag_len = 3

flag_con = 0

# 判断是否包含特殊字符
for each in passwd:
    if each in symbols:
        flag_con += 1
        break

# 判断是否包含字母
for each in passwd:
    if each in chars:
        flag_con += 1
        break

# 判断是否包含数字
for each in passwd:
    if each in nums:
        flag_con += 1
        break

        # 打印结果
while 1:
    print("您的密码安全级别评定为:", end='')
    if flag_len == 1 or flag_con == 1:
        print("低")
    elif flag_len == 2 or flag_con == 2:
        print("中")
    else:
        print("高")
        print("请继续保持")
        break

    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位'")
    break
最佳答案
2017-7-17 19:54:58
本帖最后由 向西而笑 于 2017-9-11 16:45 编辑

meet = 1
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
tip = ("请按以下方式提升您的密码安全级别:\n\
        \t1. 密码必须由数字、字母及特殊字符三种组合\n\
        \t2. 密码只能由字母开头\n\
        \t3. 密码长度不能低于16位'")


while meet:
    passwd = input('请输入需要检查的密码组合:')

    # 判断长度
    length = len(passwd)

    while (passwd.isspace() or length == 0):
        passwd = input("您输入的密码为空(或空格),请重新输入:")
        length = len(passwd)

    if length <= 8:
        flag_len = 1
    elif 8 < length < 16:
        flag_len = 2
    else:
        flag_len = 3

    flag_con = 0

    # 判断是否包含特殊字符
    for each in passwd:
        if each in symbols:
            flag_con += 1
            break

    # 判断是否包含字母
    for each in passwd:
        if each in chars:
            flag_con += 1
            break

    # 判断是否包含数字
    for each in passwd:
        if each in nums:
            flag_con += 1
            break

   #判断开头是否为字母
    if passwd[0]  in chars:
            flag_con +=1

   
    # 打印结果
    while 1:
        print("您的密码安全级别评定为:", end='')
        if flag_len == 1 or flag_con == 1:
            print("低")
            print(tip)
        elif flag_len == 2 or flag_con <= 3:
            print("中")
            print(tip)
        else:
            print("高")
            print("请继续保持")
            meet = 0
        break
搞定了,添加和修改的代码用红色标记了。


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-18 23:50:00 | 显示全部楼层
非常感谢各位朋友热情、耐心的解答,弄明白了!
看到这么多朋友热心解答问题,感觉来这里真是来对了。我也很想解答别人的问题,无奈目前水平还不够,看了好多问题都回答不了。相信有一天我一定也可以解答别人的问题。大家一起加油!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-2 05:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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