鱼C论坛

 找回密码
 立即注册
查看: 2020|回复: 4

[已解决]密码高低评级练习 求大佬

[复制链接]
发表于 2020-2-28 11:00:49 | 显示全部楼层 |阅读模式

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

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

x
  1. while 1:
  2.     num = '0123456789'
  3.     alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  4.     extra = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''

  5.     passwd = input('请输入需要检查的密码组合:')
  6.     length = len(passwd)

  7.     while (length == 0 or passwd.isspace()):
  8.         passwd = input('输入密码为空,请重新输入:')
  9.         length == len(passwd)

  10.     if length <= 8:
  11.         flag_len = 1
  12.     elif length >= 16:
  13.         flag_len = 3
  14.     else:
  15.         flag_len = 2

  16.     flag_con = 0
  17.     for each in passwd:
  18.         if each in num:
  19.             flag_con += 1
  20.             break
  21.     for each in passwd:
  22.         if each in alpha:
  23.             flag_con += 1
  24.             break
  25.     for each in passwd:
  26.         if each in extra:
  27.             flag_con += 1
  28.             break

  29.     while 1:
  30.         print('您的密码安全级别评定为:',end='')
  31.         if flag_len == 1 or flag_con == 1:
  32.             print('低')

  33.         elif flag_len == 3 and flag_con == 3 and (passwd[0] in alpha):
  34.             print('高')
  35.             print('请继续保持')
  36.             break

  37.         else:
  38.             print('中')

  39.         print('"请按以下方式提升您的密码安全级别:\n\
  40.         \t1.密码必须由数字、字母及特殊字符三种组合\n\
  41.         \t2.密码只能由字母开头\n\
  42.         \t3.密码长度不低于16位')
  43.         break
复制代码

为什么我在尝试空格和直接回车之后再输入,它一直报密码为空?
最佳答案
2020-2-28 11:04:46
改好了:
  1. while 1:
  2.     num = '0123456789'
  3.     alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  4.     extra = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''

  5.     passwd = input('请输入需要检查的密码组合:')
  6.     length = len(passwd)

  7.     while (length == 0 or passwd.isspace()):
  8.         passwd = input('输入密码为空,请重新输入:')
  9.         length = len(passwd)

  10.     if length <= 8:
  11.         flag_len = 1
  12.     elif length >= 16:
  13.         flag_len = 3
  14.     else:
  15.         flag_len = 2

  16.     flag_con = 0
  17.     for each in passwd:
  18.         if each in num:
  19.             flag_con += 1
  20.             break
  21.     for each in passwd:
  22.         if each in alpha:
  23.             flag_con += 1
  24.             break
  25.     for each in passwd:
  26.         if each in extra:
  27.             flag_con += 1
  28.             break

  29.     while 1:
  30.         print('您的密码安全级别评定为:',end='')
  31.         if flag_len == 1 or flag_con == 1:
  32.             print('低')

  33.         elif flag_len == 3 and flag_con == 3 and (passwd[0] in alpha):
  34.             print('高')
  35.             print('请继续保持')
  36.             break

  37.         else:
  38.             print('中')

  39.         print('"请按以下方式提升您的密码安全级别:\n\
  40.         \t1.密码必须由数字、字母及特殊字符三种组合\n\
  41.         \t2.密码只能由字母开头\n\
  42.         \t3.密码长度不低于16位')
  43.         break
复制代码
1582858726(1).png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-28 11:02:15 | 显示全部楼层
    while (length == 0 or passwd.isspace()):
        passwd = input('输入密码为空,请重新输入:')
        length == len(passwd)

这里多了个等于号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 11:03:40 | 显示全部楼层
  1. while 1:
  2.     num = '0123456789'
  3.     alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  4.     extra = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''

  5.     passwd = input('请输入需要检查的密码组合:')
  6.     length = len(passwd)

  7.     while (length == 0 or passwd.isspace()):
  8.         passwd = input('输入密码为空,请重新输入:')
  9.         length = len(passwd)

  10.     if length <= 8:
  11.         flag_len = 1
  12.     elif length >= 16:
  13.         flag_len = 3
  14.     else:
  15.         flag_len = 2

  16.     flag_con = 0
  17.     for each in passwd:
  18.         if each in num:
  19.             flag_con += 1
  20.             break
  21.     for each in passwd:
  22.         if each in alpha:
  23.             flag_con += 1
  24.             break
  25.     for each in passwd:
  26.         if each in extra:
  27.             flag_con += 1
  28.             break

  29.     while 1:
  30.         print('您的密码安全级别评定为:',end='')
  31.         if flag_len == 1 or flag_con == 1:
  32.             print('低')

  33.         elif flag_len == 3 and flag_con == 3 and (passwd[0] in alpha):
  34.             print('高')
  35.             print('请继续保持')
  36.             break

  37.         else:
  38.             print('中')

  39.         print('"请按以下方式提升您的密码安全级别:\n\
  40.         \t1.密码必须由数字、字母及特殊字符三种组合\n\
  41.         \t2.密码只能由字母开头\n\
  42.         \t3.密码长度不低于16位')
  43.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 11:04:46 | 显示全部楼层    本楼为最佳答案   
改好了:
  1. while 1:
  2.     num = '0123456789'
  3.     alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  4.     extra = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''

  5.     passwd = input('请输入需要检查的密码组合:')
  6.     length = len(passwd)

  7.     while (length == 0 or passwd.isspace()):
  8.         passwd = input('输入密码为空,请重新输入:')
  9.         length = len(passwd)

  10.     if length <= 8:
  11.         flag_len = 1
  12.     elif length >= 16:
  13.         flag_len = 3
  14.     else:
  15.         flag_len = 2

  16.     flag_con = 0
  17.     for each in passwd:
  18.         if each in num:
  19.             flag_con += 1
  20.             break
  21.     for each in passwd:
  22.         if each in alpha:
  23.             flag_con += 1
  24.             break
  25.     for each in passwd:
  26.         if each in extra:
  27.             flag_con += 1
  28.             break

  29.     while 1:
  30.         print('您的密码安全级别评定为:',end='')
  31.         if flag_len == 1 or flag_con == 1:
  32.             print('低')

  33.         elif flag_len == 3 and flag_con == 3 and (passwd[0] in alpha):
  34.             print('高')
  35.             print('请继续保持')
  36.             break

  37.         else:
  38.             print('中')

  39.         print('"请按以下方式提升您的密码安全级别:\n\
  40.         \t1.密码必须由数字、字母及特殊字符三种组合\n\
  41.         \t2.密码只能由字母开头\n\
  42.         \t3.密码长度不低于16位')
  43.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 11:45:26 | 显示全部楼层
本帖最后由 jackz007 于 2020-2-28 11:55 编辑

       代码问题 2 楼已经指出了,此外,楼主的代码不够严谨,比如:
  1.     while 1:
  2.         print('您的密码安全级别评定为:',end='')
  3. . . . . . .
  4.         break
复制代码

       这个 while 循环块的最后一句居然是 break 语句,那么请问,这个 while 循环还有何必要存在呢?
       帮楼主简化一下代码,以便更加 Pythonic
  1. num = '0123456789'
  2. alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3. extra = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''
  4. while True:
  5.     passwd = input('请输入需要检查的密码组合:') . strip()
  6.     length = len(passwd)
  7.     if length > 0:
  8.         flag_len = 3 if length >= 16 else 2 if 8 <= length < 16 else 1
  9.         flag_con = 1 if sum([1 for x in passwd if x in num]) > 0 else 0
  10.         flag_con += 1 if sum([1 for x in passwd if x in alpha]) > 0 else 0
  11.         flag_con += 1 if sum([1 for x in passwd if x in extra]) > 0 else 0
  12.         print()
  13.         print('您的密码安全级别被评定为:',end='')
  14.         if passwd[0] . isalpha() and flag_len > 2 and flag_con > 2 :
  15.             print('高')
  16.             print('请继续保持')
  17.         else:
  18.             if flag_len > 1 and flag_con > 1:
  19.                 print('中')
  20.             else:
  21.                 print('低')
  22.             print('"请按以下方式提升您的密码安全级别:\n\
  23.             \t1.密码必须由数字、字母及特殊字符三种组合\n\
  24.             \t2.密码只能由字母开头\n\
  25.             \t3.密码长度不低于16位')
  26.         print()
  27.     else:
  28.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-17 21:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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