鱼C论坛

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

[已解决]求助大佬,python问题

[复制链接]
发表于 2020-8-10 18:04:36 | 显示全部楼层 |阅读模式

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

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

x
写了一个密码安全判定的代码,以下是我的代码,当第一次输入的密码为低级时,之后再输入任何密码都会返回  ‘低级’ ,同理中等密码也是如此 ,不知道哪里出了问题 请大佬赐教
print('--------密码安全检查---------')
#字符数小于8 或由纯数字字母组成的为低级密码
#字符数量大于8小于16且由数字、字母、特殊字符其中两种组成的为中级密码
#字符数量大于16且由数字、字母、特殊字符 三种组成,开头必须为字母的为高级密码
#特殊字符仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\|'";:/?,.<>

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

figure = '0123456789'

letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

password = input('请输入您设置的密码:')

length = len(password)


while (password.isspace() or length == 0 ) :

    print('请正确输入您的密码,谢谢\n')

    password = input('请重新输入您的密码:')

    length = len(password)

#判断长度
if length < 8:
    flag_len = 1
elif 16 > length > 8:
    flag_len = 2
else:
    flag_len = 3


flag_sp = 0   #特殊字符等级
flag_fi = 0   #数字等级
flag_le = 0   #字母等级
flag_one = 0  #首个字符是否为字母

#判断特殊字符

for each in password:
    if each in sp:
        flag_sp += 1
        break

#判断数字
for each in password:
    if each in figure:
        flag_fi += 1
        break
#判断字母
for each in password:
    if each in letter:
        flag_le += 1
        break
flag_zucheng = flag_sp + flag_fi + flag_le

flag_fl = flag_fi + flag_le

#判断开头是否为字母
if password[0] in letter:
    flag_one += 1


times = 3
while times > 0 :
    print("您的密码安全级别评定为:" )

    if (flag_len == 1) or (flag_sp == 0 and flag_fl == 1 ):
        print ('低!真垃圾!')
        

    elif (flag_zucheng == 3 )and(flag_len ==3) and (flag_one == 1):
        print('beautiful,你的密码强度很高,请继续保持')
        break

    else:
        print('中等,勉强可以吧')

    times -=1

    if times > 0:
        password = input('重新输入一个密码吧:')

   







   
        

最佳答案
2020-8-10 18:07:04
因为你如果重新输入密码就不会执行判断密码强度的代码(因为程序还在 while 循环中),改成这样就可以了:

  1. times = 3
  2. while times > 0:
  3.     print('--------密码安全检查---------')
  4.     # 字符数小于8 或由纯数字字母组成的为低级密码
  5.     # 字符数量大于8小于16且由数字、字母、特殊字符其中两种组成的为中级密码
  6.     # 字符数量大于16且由数字、字母、特殊字符 三种组成,开头必须为字母的为高级密码
  7.     # 特殊字符仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\|'";:/?,.<>

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

  9.     figure = '0123456789'

  10.     letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

  11.     password = input('请输入您设置的密码:')

  12.     length = len(password)

  13.     while (password.isspace() or length == 0):
  14.         print('请正确输入您的密码,谢谢\n')

  15.         password = input('请重新输入您的密码:')

  16.         length = len(password)

  17.     # 判断长度
  18.     if length < 8:
  19.         flag_len = 1
  20.     elif 16 > length > 8:
  21.         flag_len = 2
  22.     else:
  23.         flag_len = 3

  24.     flag_sp = 0  # 特殊字符等级
  25.     flag_fi = 0  # 数字等级
  26.     flag_le = 0  # 字母等级
  27.     flag_one = 0  # 首个字符是否为字母

  28.     # 判断特殊字符

  29.     for each in password:
  30.         if each in sp:
  31.             flag_sp += 1
  32.             break

  33.     # 判断数字
  34.     for each in password:
  35.         if each in figure:
  36.             flag_fi += 1
  37.             break
  38.     # 判断字母
  39.     for each in password:
  40.         if each in letter:
  41.             flag_le += 1
  42.             break
  43.     flag_zucheng = flag_sp + flag_fi + flag_le

  44.     flag_fl = flag_fi + flag_le

  45.     # 判断开头是否为字母
  46.     if password[0] in letter:
  47.         flag_one += 1
  48.     print("您的密码安全级别评定为:")

  49.     if (flag_len == 1) or (flag_sp == 0 and flag_fl == 1):
  50.         print('低!真垃圾!')


  51.     elif (flag_zucheng == 3) and (flag_len == 3) and (flag_one == 1):
  52.         print('beautiful,你的密码强度很高,请继续保持')
  53.         break

  54.     else:
  55.         print('中等,勉强可以吧')

  56.     times -= 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-10 18:07:04 | 显示全部楼层    本楼为最佳答案   
因为你如果重新输入密码就不会执行判断密码强度的代码(因为程序还在 while 循环中),改成这样就可以了:

  1. times = 3
  2. while times > 0:
  3.     print('--------密码安全检查---------')
  4.     # 字符数小于8 或由纯数字字母组成的为低级密码
  5.     # 字符数量大于8小于16且由数字、字母、特殊字符其中两种组成的为中级密码
  6.     # 字符数量大于16且由数字、字母、特殊字符 三种组成,开头必须为字母的为高级密码
  7.     # 特殊字符仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\|'";:/?,.<>

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

  9.     figure = '0123456789'

  10.     letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

  11.     password = input('请输入您设置的密码:')

  12.     length = len(password)

  13.     while (password.isspace() or length == 0):
  14.         print('请正确输入您的密码,谢谢\n')

  15.         password = input('请重新输入您的密码:')

  16.         length = len(password)

  17.     # 判断长度
  18.     if length < 8:
  19.         flag_len = 1
  20.     elif 16 > length > 8:
  21.         flag_len = 2
  22.     else:
  23.         flag_len = 3

  24.     flag_sp = 0  # 特殊字符等级
  25.     flag_fi = 0  # 数字等级
  26.     flag_le = 0  # 字母等级
  27.     flag_one = 0  # 首个字符是否为字母

  28.     # 判断特殊字符

  29.     for each in password:
  30.         if each in sp:
  31.             flag_sp += 1
  32.             break

  33.     # 判断数字
  34.     for each in password:
  35.         if each in figure:
  36.             flag_fi += 1
  37.             break
  38.     # 判断字母
  39.     for each in password:
  40.         if each in letter:
  41.             flag_le += 1
  42.             break
  43.     flag_zucheng = flag_sp + flag_fi + flag_le

  44.     flag_fl = flag_fi + flag_le

  45.     # 判断开头是否为字母
  46.     if password[0] in letter:
  47.         flag_one += 1
  48.     print("您的密码安全级别评定为:")

  49.     if (flag_len == 1) or (flag_sp == 0 and flag_fl == 1):
  50.         print('低!真垃圾!')


  51.     elif (flag_zucheng == 3) and (flag_len == 3) and (flag_one == 1):
  52.         print('beautiful,你的密码强度很高,请继续保持')
  53.         break

  54.     else:
  55.         print('中等,勉强可以吧')

  56.     times -= 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-8-10 18:27:53 | 显示全部楼层
zltzlt 发表于 2020-8-10 18:07
因为你如果重新输入密码就不会执行判断密码强度的代码(因为程序还在 while 循环中),改成这样就可以了:
...

哦哦哦 ,明白了 谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-25 10:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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