鱼C论坛

 找回密码
 立即注册
查看: 1620|回复: 12

[已解决]014讲最后一题

[复制链接]
发表于 2020-3-16 19:36:07 | 显示全部楼层 |阅读模式

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

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

x
请问这个代码该如何修改啊
keyword=input('请输入需要检查的密码组合:')
len=len(keyword)

for i in keyword:
    if (47<ord(i)<58 or (64<ord(i)<91 or  96<ord(i)<123)) or len<=8:
        print('''你的密码安全级别判定为:低
                 请按以下方式提升你的密码安全级别:
                           1. 密码必须由数字、字母及特殊字符三种组合
                           2. 密码只能由字母开头
                           3. 密码长度不能低于16位''')
        break
    elif 32<ord(i)<127 and 64<ord(keyword[0])<91 and len>=16:
        print('''你的密码安全级别判定为:高
                  请继续保持''')

                               
登录/注册后可看大图


        break
    else:
         print('''你的密码安全级别判定为:中
                  请按以下方式提升你的密码安全级别:
                           1. 密码必须由数字、字母及特殊字符三种组合
                           2. 密码只能由字母开头
                           3. 密码长度不能低于16位''')
         break

最佳答案
2020-3-16 20:25:39
#-*-coding:gbk-*-

nums = '0123456789'
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
while True:
    passwd = input('请输入需要检查的密码组合:') . strip()
    length = len(passwd)
    if length > 0:                                                                # 实际键入密码才进行评分
        flag_len = 3 if length >= 16 else 2 if 8 <= length < 16 else 1            # 密码长度评分
        flag_con = 1 if sum([1 for x in passwd if x in nums]) > 0 else 0          # 密码构成评分:包含数字 = +1
        flag_con += 1 if sum([1 for x in passwd if x in chars]) > 0 else 0        # 密码构成评分:包含字母 = +1
        flag_con += 1 if sum([1 for x in passwd if x in symbols]) > 0 else 0      # 密码构成评分:包含特殊字符 = +1
        print()
        print('您的密码安全级别被评定为:' , end='')
        if passwd[0] . isalpha() and flag_len > 2 and flag_con > 2 :
            print('高')
            print('请继续保持')
        else:
            if flag_len > 1 and flag_con > 1:
                print('中')
            else:
                print('低')
            print('"请按以下方式提升您的密码安全级别:\n\
            \t1.密码必须由数字、字母及特殊字符三种组合\n\
            \t2.密码只能由字母开头\n\
            \t3.密码长度不低于16位')
        print()
    else:                                                                         # 否则
        break                                                                     # 键入空回车结束运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 19:40:15 | 显示全部楼层
请先学会提问题
你要改成什么样子?这个你没说,我们怎么改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 20:25:39 | 显示全部楼层    本楼为最佳答案   
#-*-coding:gbk-*-

nums = '0123456789'
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
while True:
    passwd = input('请输入需要检查的密码组合:') . strip()
    length = len(passwd)
    if length > 0:                                                                # 实际键入密码才进行评分
        flag_len = 3 if length >= 16 else 2 if 8 <= length < 16 else 1            # 密码长度评分
        flag_con = 1 if sum([1 for x in passwd if x in nums]) > 0 else 0          # 密码构成评分:包含数字 = +1
        flag_con += 1 if sum([1 for x in passwd if x in chars]) > 0 else 0        # 密码构成评分:包含字母 = +1
        flag_con += 1 if sum([1 for x in passwd if x in symbols]) > 0 else 0      # 密码构成评分:包含特殊字符 = +1
        print()
        print('您的密码安全级别被评定为:' , end='')
        if passwd[0] . isalpha() and flag_len > 2 and flag_con > 2 :
            print('高')
            print('请继续保持')
        else:
            if flag_len > 1 and flag_con > 1:
                print('中')
            else:
                print('低')
            print('"请按以下方式提升您的密码安全级别:\n\
            \t1.密码必须由数字、字母及特殊字符三种组合\n\
            \t2.密码只能由字母开头\n\
            \t3.密码长度不低于16位')
        print()
    else:                                                                         # 否则
        break                                                                     # 键入空回车结束运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 22:55:06 | 显示全部楼层
您的那个第五行可以详细结束一下吗?为啥加个r 还有为啥''' 要这样 还有为啥''' 后面还有一个点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 22:55:45 | 显示全部楼层

您的那个第五行可以详细结束一下吗?为啥加个r 还有为啥''' 要这样 还有为啥''' 后面还有一个点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 23:39:27 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-16 23:42 编辑
hjqbrilliant 发表于 2020-3-16 22:55
您的那个第五行可以详细结束一下吗?为啥加个r 还有为啥''' 要这样 还有为啥''' 后面还有一个点


     Python 的字符串可以用单引号、双引号和三引号来包裹,本例就是三引号字符串,之所以要用三引号,是因为在字符串中已经包含有单引号和双引号,所以,字符串如果用再用单引号或双引号包裹,就会产生问题。
     至于字符串前缀 r,表示是原生字符串,就是说,对字符串中的特殊转义字符 '\' 不再进行转义。例如,不加 r 前缀的时候,字符 '\' 必须用 '\\' 来表示,但是,加了 r 前缀后,r '\’ 就是 '\' 字符了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 13:13:01 | 显示全部楼层
请先学会提问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 20:15:11 | 显示全部楼层
jackz007 发表于 2020-3-16 23:39
Python 的字符串可以用单引号、双引号和三引号来包裹,本例就是三引号字符串,之所以要用三引号, ...

太谢谢您了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 18:58:17 | 显示全部楼层
qiuyouzhi 发表于 2020-3-16 19:40
请先学会提问题
你要改成什么样子?这个你没说,我们怎么改?

不好意思啊 此处得不到正确答案   if (47<ord(i)<58 or (64<ord(i)<91 or  96<ord(i)<123)) or len<=8:
为or的话 所有密码判定级别为低  
若为and  密码123456789 判定为中
我想问有没有一个ASCLL码判定的正确方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 19:00:07 | 显示全部楼层
zltzlt 发表于 2020-3-17 13:13
请先学会提问题

不好意思啊 此处得不到正确答案   if (47<ord(i)<58 or (64<ord(i)<91 or  96<ord(i)<123)) or len<=8:
为or的话 所有密码判定级别为低  
若为and  密码123456789 判定为中
我想问有没有一个ASCLL码判定的正确方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 20:29:49 | 显示全部楼层
小柔的爸比 发表于 2020-3-18 19:00
不好意思啊 此处得不到正确答案   if (47

你这个代码只判断了密码第一位啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 21:09:31 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-18 20:29
你这个代码只判断了密码第一位啊

有没有什么解决方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 21:43:35 | 显示全部楼层
小柔的爸比 发表于 2020-3-18 21:09
有没有什么解决方法

你到底想怎么判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 02:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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