鱼C论坛

 找回密码
 立即注册
查看: 1119|回复: 7

[已解决]014密码强度检测作业有一点小问题,麻烦各位了!

[复制链接]
发表于 2020-5-26 16:12:21 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Aber 于 2020-5-26 16:17 编辑
  1. symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  2. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3. nums = '0123456789'

  4. password = input('请输入需要检查的密码组合:')

  5. #先判断密码长度
  6. length = len(password)

  7. while (password.isspace() or length == 0):
  8.     password = input('您输入密码为空(或空格),请重新输入:')
  9.     length = len(password) #这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?

  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 password:
  19.     if each in symbols:
  20.         flag_con += 1
  21.         break

  22. #判断是否包含字母

  23. for each in password:
  24.     if each in chars:
  25.         flag_con += 1
  26.         break

  27. #判断是否包含数字

  28. for each in password:
  29.     if each in nums:
  30.         flag_con +=1
  31.         break
  32. while 1: #这是啥意思,能不能理解为while True?
  33.     print ('您的密码安全级别评定为:',end=' ')
  34.     if flag_len == 1 or flag_con == 1:
  35.         print ('低')
  36.     elif flag_len == 3 and flag_con == 3 and (password[0] in chars):
  37.         
  38. #这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?
  39.         print ('高')
  40.         print ('请继续保持')
  41.         break
  42.     else:
  43.         print ('中')


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


又得麻烦大家了
最佳答案
2020-5-26 16:21:22
这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?

因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了嘛
这是对什么的初始化值对呀?

flag_con 初始化是为了判断后面的是否包含字母、数字、特殊字符,只要有包含其一  就加一次1  比如:如果等于3说明密码中含有字母、数字、特殊字符
这是啥意思,能不能理解为while True?

Python 中所有非0数字都为 True  所有这里改成True 是一样的
这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?

对的,说明代码含有字母、数字、特殊字符,这个是高级密码的基本条件嘛~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 16:13:11 | 显示全部楼层
代码乱了 重新打吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:13:46 | 显示全部楼层
你不能在代码里面添加引用的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:18:17 | 显示全部楼层
本帖最后由 xiaosi4081 于 2020-5-26 16:21 编辑

原先的代码:
  1. symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
  2. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3. nums = '0123456789'

  4. password = input('请输入需要检查的密码组合:')

  5. #先判断密码长度
  6. length = len(password)

  7. while (password.isspace() or length == 0):
  8.     password = input('您输入密码为空(或空格),请重新输入:')
  9.     length = len(password) #这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?必要的,因为你上面重新赋值了

  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 password:
  19.     if each in symbols:
  20.         flag_con += 1
  21.         break

  22. #判断是否包含字母

  23. for each in password:
  24.     if each in chars:
  25.         flag_con += 1
  26.         break

  27. #判断是否包含数字

  28. for each in password:
  29.     if each in nums:
  30.         flag_con +=1
  31.         break
  32. while 1: #这是啥意思,能不能理解为while True?可以
  33.     print ('您的密码安全级别评定为:',end=' ')
  34.     if flag_len == 1 or flag_con == 1:
  35.         print ('低')
  36.     elif flag_len == 3 and flag_con == 3 and (password[0] in chars):
  37.         
  38. #这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?
  39.         print ('高')
  40.         print ('请继续保持')
  41.         break
  42.     else:
  43.         print ('中')


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

使用道具 举报

发表于 2020-5-26 16:21:22 | 显示全部楼层    本楼为最佳答案   
这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?

因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了嘛
这是对什么的初始化值对呀?

flag_con 初始化是为了判断后面的是否包含字母、数字、特殊字符,只要有包含其一  就加一次1  比如:如果等于3说明密码中含有字母、数字、特殊字符
这是啥意思,能不能理解为while True?

Python 中所有非0数字都为 True  所有这里改成True 是一样的
这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?

对的,说明代码含有字母、数字、特殊字符,这个是高级密码的基本条件嘛~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:22:25 | 显示全部楼层
1、你已经重新输入了,密码的长度就变了,所以要再检查一次。这两个len不是同一个了。

2、这是啥意思,能不能理解为while True?   是的

3、里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?  是的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 16:23:56 | 显示全部楼层
Twilight6 发表于 2020-5-26 16:21
因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了 ...

明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:27:40 | 显示全部楼层
Aber 发表于 2020-5-26 16:23
明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心

慢慢来吧 我当时感觉有点难还把这题跳过了  哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-20 12:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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