鱼C论坛

 找回密码
 立即注册
查看: 2984|回复: 11

[已解决]密码强度检测,求大神帮我用def()改一下,谢谢

[复制链接]
发表于 2016-10-21 18:17:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 °﹍M、Sulayman 于 2016-10-22 19:45 编辑

学习的道路还很长!我一定要坚持!~
似乎等我学习了定义函数def(),应该就是这么叫的......我就能精简下面的代码了

  1. '''
  2. 需求:判断一个已知密码的强度等级。(密码中不能含有空格键,不能是空密码)
  3.     弱:密码长度不大于8或者字符单一。
  4.     中:密码长度在8到16之间,并且在符号,数字,字母之中任选两种类型组合。
  5.     强:密码长度大于16,并且在符号,数字,字母之中出现3种类型组合。
  6. '''

  7. symbols = r' !@#$%^&*()-_={}[]\|~,.<>?/;:'
  8. nums = '0123456789'
  9. chars = 'abcdefghijklmnopqrstuvwxyzABDEFGHIJKLMNOPQRSTUVWXYZ'

  10. password = input('请输入需要检测的密码:')
  11. len_p = len(password)

  12. #判断密码中是否含有空格字符或者为空密码
  13. while (' ' in password) :   
  14.     print('密码中不能含有空格!')
  15.     password = input('请重新输入需要检测的密码:')
  16.    
  17. if len_p == 0:
  18.     print('你是人才...密码就是没有密码')
  19.    
  20. #判断密码长度
  21. flag_len = 0
  22.    
  23. if 0 < len_p <= 8:
  24.     flag_len += 1
  25.    
  26. elif 8 < len_p <= 16:
  27.     flag_len += 2
  28.    
  29. elif len_p > 16:
  30.     flag_len += 3

  31. #判断密码组成(只需要判断存在,所以不用全部判断完,发现有则计数器置1,跳出循环)
  32. flag_s = 0
  33. flag_n = 0
  34. flag_c = 0

  35. for i in password:
  36.     if i in symbols:
  37.         flag_s += 1
  38.         break

  39. for i in password:
  40.     if i in nums:
  41.         flag_n += 1
  42.         break

  43. for i in password:
  44.     if i in chars:
  45.         flag_c += 1
  46.         break

  47. #根据需求,输出密码的强弱等级
  48. flag_add = flag_s + flag_n + flag_c

  49. if (flag_len == 1) or (flag_add == 1):
  50.     print('该密码强度级别:弱')
  51. elif (flag_len == 2) and (flag_add == 2):
  52.     print('该密码强度级别:中')
  53. elif(flag_len == 3) and (flag_add == 3) :
  54.     print('该密码强度级别:强')
复制代码


新手上路,多多支持啊
最佳答案
2016-10-21 19:03:59
其实判别密码是否符合,可以直接用asc码转换,不用准备那么多字典了。
比如说我的要求输入订单号的一段代码:(要求密码不为空,只能是数字,不然就返回None)
  1. def getexnum():
  2.     if len(sys.argv) >1:
  3.         exnum = sys.argv[1]
  4.     else:
  5.         print "Please input the express number you want to check:"
  6.         exnum = raw_input(">>>")
  7.     if exnum == '':
  8.         print "The express number cannot be empty!"
  9.         return None
  10.     else:
  11.         dflag = 1
  12.         for e in exnum:
  13.             if ord(e) <48 or ord(e) >57:
  14.                 print "The express number could only be degital!"
  15.                 dflag = 0
  16.                 break
  17.         if dflag == 1:
  18.             return exnum
  19.         else:
  20.             return None
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-21 18:18:36 | 显示全部楼层
流程清晰,注释明了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 18:26:44 | 显示全部楼层
可以啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-21 18:31:36 | 显示全部楼层

额,瞎折腾的~见笑了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 18:47:32 | 显示全部楼层
+1
真不错,我刚学python还做不出这些东西呢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 19:03:59 | 显示全部楼层    本楼为最佳答案   
其实判别密码是否符合,可以直接用asc码转换,不用准备那么多字典了。
比如说我的要求输入订单号的一段代码:(要求密码不为空,只能是数字,不然就返回None)
  1. def getexnum():
  2.     if len(sys.argv) >1:
  3.         exnum = sys.argv[1]
  4.     else:
  5.         print "Please input the express number you want to check:"
  6.         exnum = raw_input(">>>")
  7.     if exnum == '':
  8.         print "The express number cannot be empty!"
  9.         return None
  10.     else:
  11.         dflag = 1
  12.         for e in exnum:
  13.             if ord(e) <48 or ord(e) >57:
  14.                 print "The express number could only be degital!"
  15.                 dflag = 0
  16.                 break
  17.         if dflag == 1:
  18.             return exnum
  19.         else:
  20.             return None
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 19:54:22 | 显示全部楼层

真的还行,,加油哦!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-21 19:55:18 | 显示全部楼层
无符号整形 发表于 2016-10-21 18:47
+1
真不错,我刚学python还做不出这些东西呢!

好感动~~~我会努力的!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-21 19:55:49 | 显示全部楼层
jerryxjr1220 发表于 2016-10-21 19:03
其实判别密码是否符合,可以直接用asc码转换,不用准备那么多字典了。
比如说我的要求输入订单号的一段代 ...

谢谢,精简了好多!!!!!!万分感谢,我慢慢研究~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 19:55:55 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 20:00:46 | 显示全部楼层
写的不错···
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-21 20:01:07 | 显示全部楼层

谢谢鼓励!~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 11:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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