鱼C论坛

 找回密码
 立即注册
查看: 1105|回复: 3

[已解决]关于密码检测系统的几个小问题!

[复制链接]
发表于 2018-1-24 12:31:13 | 显示全部楼层 |阅读模式

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

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

x
  1. print('密码检测系统')

  2. symbols = '''`~!@#$%^&*()[]{}\|<>?/'''
  3. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  4. numbers = '1234567890'

  5. passwd = input('请输入要检测的密码:')


  6. #判断长度
  7. length = len(passwd)
  8. while (passwd.isspace() or length == 0):
  9.     passwd = input('密码不能空或空格,请重新输入:')

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

  16. flag_con = 0

  17. #判断是否有特殊字符
  18. for each in passwd:
  19.     if each in symbols:
  20.         flag_con += 1
  21.         break

  22. # 判断是否含有字母
  23. for each in passwd:
  24.     if each in chars:
  25.         flag_con += 1
  26.         break

  27. #判断是否含有数字
  28. for each in passwd:
  29.     if each in numbers:
  30.         flag_con += 1
  31.         break

  32. #打印结果

  33. while 1:
  34.     print('你的密码等级为:',end='')
  35.     if (flag_len == 1) or (flag_con == 1):
  36.         print('低')
  37.     elif (flag_len == 2):
  38.         print('中')
  39.     else:
  40.         print('高')
  41.         print('请继续保持')
  42.         break

  43.     print('''请按以下方式提升您的密码安全级别:\n\
  44.     1.密码必须由字母、数字及特殊字符组成\n\
  45.     2.密码必须由字母开头\n\
  46.     3.密码长度不低于16位''')
  47.     break
复制代码

对于这个密码检测系统,有几点不明白:
1.
  1. while 1:
  2.     print('你的密码等级为:',end='')
  3.     if (flag_len == 1) or (flag_con == 1):
  4.         print('低')
  5.     elif (flag_len == 2):
  6.         print('中')
  7.     else:
  8.         print('高')
  9.         print('请继续保持')
  10.         break

  11.     print('''请按以下方式提升您的密码安全级别:\n\
  12.     1.密码必须由字母、数字及特殊字符组成\n\
  13.     2.密码必须由字母开头\n\
  14.     3.密码长度不低于16位''')
  15.     break
复制代码

这一部分中的两个break分别是打断的哪个循环?第二个break有必要吗?
2. \n\这个是什么意思?起到什么作用?
谢谢各位鱼油  么么哒
最佳答案
2018-1-24 12:41:44
1 只有一个循环,就是while 1,第二个当然有必要,因为没必要再循环了
2 \n是回车号,\表示续行,连在一起就是先回车,在续行,这样设置了交互界面下它们的格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-24 12:41:44 | 显示全部楼层    本楼为最佳答案   
1 只有一个循环,就是while 1,第二个当然有必要,因为没必要再循环了
2 \n是回车号,\表示续行,连在一起就是先回车,在续行,这样设置了交互界面下它们的格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-24 14:07:06 | 显示全部楼层
while 1: 是死循环的意思,需要用break跳出循环。第一个break是满足条件后 跳出这个循环 不让他执行下面的代码,第二个break是跳出这个循环结束程序。 所以你想想 其实这里没有必要用while 1 直接if也行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-24 14:09:58 | 显示全部楼层
cnkizy 发表于 2018-1-24 14:07
while 1: 是死循环的意思,需要用break跳出循环。第一个break是满足条件后 跳出这个循环 不让他执行下面的 ...

我这里意思是说密码判断一次。

如果你要让用户设置密码到你满意的那种程度的话,第二个break可以注释掉。就是说用户密码改到符合规范了就跳出循环。否则用户一直设置密码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 12:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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