鱼C论坛

 找回密码
 立即注册
查看: 1918|回复: 9

[已解决]14讲动动手作业问题

[复制链接]
发表于 2020-11-25 19:12:30 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 逆鳞丶樱之羽 于 2020-11-25 21:18 编辑

题目如下图
程序代码我已经写好了,我觉的思路没有问题(代码完全可以运行),只是存在个问题:
思路:通过集合的唯一性计算特殊符号的数量。
但当密码长度大于等于16时,我输入字母,数字和多个特殊字符组合,但并没有显示密码程度为高。
求解。
代码如下。
节点判断我已经写好了。
请告诉我思路或是否是程序问题等的错误,尽量不要改好写代码回复我。
要是还有什么问题,请回复我,不要帮我改好!(想锻炼思维),谢谢配合。
  1. characters = ['~','!','@','#',','%','^','&','*','()','_','=','-','/',',','.','?','<>',';',':','[]','{}','|','\\']
  2. active = True
  3. while(active):
  4.     password = input('请输入需要检查的密码组合:')
  5.     length = len(password)
  6.     couting = 0
  7.     past_count = set()
  8.     if password.count(' ') > 0:
  9.         print('输入格式错误')
  10.     else:
  11.         if length <= 8:   
  12.             print('''您的密码安全级别评定为:低
  13.                     请按以下方式提升您的密码安全级别:
  14.                                 1.密码必须由数字、字母及特殊字符三种组合
  15.                                  2.密码只能由字母开头
  16.                                  3.密码长度不能低于16位''')
  17.             print('assert length<8')
  18.         elif password.isalnum():
  19.             print('''您的密码安全级别评定为:低
  20.                     请按以下方式提升您的密码安全级别:
  21.                                  1.密码必须由数字、字母及特殊字符三种组合
  22.                                  2.密码只能由字母开头
  23.                                  3.密码长度不能低于16位''')
  24.             print('assert isalnum')
  25.             
  26.         elif 8 < length < 16:
  27.             for ct in range(len(password)):
  28.                 if password[ct] in characters:
  29.                     past_count.add(password[ct])
  30.             couting = len(past_count)
  31.             print('assert 8 < length <16')
  32.             if couting >= 2:
  33.                 print('''您的密码安全级别评定为:中
  34.                        请按以下方式提升您的密码安全级别:
  35.                                  1.密码必须由数字、字母及特殊字符三种组合
  36.                                  2.密码只能由字母开头
  37.                                  3.密码长度不能低于16位''')
  38.             else:
  39.                 print('''您的密码安全级别评定为:低
  40.                        请按以下方式提升您的密码安全级别:
  41.                                  1.密码必须由数字、字母及特殊字符三种组合
  42.                                  2.密码只能由字母开头
  43.                                  3.密码长度不能低于16位''')
  44.         elif length >= 16:
  45.             for ct in range(len(password)):
  46.                 if password[ct] in characters:
  47.                     past_count.add(password[ct])
  48.             couting = len(past_count)
  49.             print('assert length > 16')
  50.             if couting >= 3:
  51.                 if password.istitle():
  52.                     print('''您的密码安全级别评定为:高
  53.                             请继续保持''')
  54.                 else:
  55.                     print('''您的密码安全级别评定为:中
  56.                        请按以下方式提升您的密码安全级别:
  57.                                  1.密码必须由数字、字母及特殊字符三种组合
  58.                                  2.密码只能由字母开头
  59.                                  3.密码长度不能低于16位''')
  60.             elif 2 <= couting < 3 :
  61.                    print('''您的密码安全级别评定为:中
  62.                        请按以下方式提升您的密码安全级别:
  63.                                  1.密码必须由数字、字母及特殊字符三种组合
  64.                                  2.密码只能由字母开头
  65.                                  3.密码长度不能低于16位''')
  66.             elif couting <= 1:
  67.                     print('''您的密码安全级别评定为:低
  68.                        请按以下方式提升您的密码安全级别:
  69.                                  1.密码必须由数字、字母及特殊字符三种组合
  70.                                  2.密码只能由字母开头
  71.                                  3.密码长度不能低于16位''')
  72.             else:
  73.                     print('未知错误')
  74.             

  75.     guess = input('是否继续输入(y/n):')
  76.     guess = guess.upper()
  77.     if guess == 'Y':
  78.         continue
  79.     elif guess == 'N':
  80.         break
  81.     else:
  82.         print('输入异常,强制退出')
  83.         break
  84.         
复制代码
最佳答案
2020-11-26 12:37:35
逆鳞丶樱之羽 发表于 2020-11-26 11:27
这里为什么不是三个特殊符号啊,为什么couting是2,是characters变量中'\\'(这个表示反斜杠)这个的问题吗 ...

再给你点提示
  1. 请输入需要检查的密码组合:iwyui285278\ywytu.qytuq{}
  2. assert length > 16
  3. 您的密码安全级别评定为:中
  4.                        请按以下方式提升您的密码安全级别:
  5.                                  1.密码必须由数字、字母及特殊字符三种组合
  6.                                  2.密码只能由字母开头
  7.                                  3.密码长度不能低于16位
  8. 是否继续输入(y/n):
  9. 输入异常,强制退出
  10. >>> past_count
  11. {'.', '\\'}
复制代码

题目

题目
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-25 19:21:31 | 显示全部楼层
可以发一下大于16个字符的代码段吗?
  1. 请输入需要检查的密码组合:/*-/*-/*-/*-/*-/
  2. assert length > 16
  3. 您的密码安全级别评定为:高                       请继续保持
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-25 19:27:02 | 显示全部楼层
逃兵 发表于 2020-11-25 19:21
可以发一下大于16个字符的代码段吗?

iwyui285278\ywytu.qytuq{}
这个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-25 19:46:37 | 显示全部楼层
逆鳞丶樱之羽 发表于 2020-11-25 19:27
iwyui285278\ywytu.qytuq{}
这个

没有发现,我只发特殊符号,没有字母没有数字
却认为我是高级密码吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-25 21:13:12 | 显示全部楼层
逃兵 发表于 2020-11-25 19:46
没有发现,我只发特殊符号,没有字母没有数字
却认为我是高级密码吗

好的。
谢谢,我已经改好了,但上个问题还存在,要是有想到什么,请回复我。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 08:17:12 | 显示全部楼层
逆鳞丶樱之羽 发表于 2020-11-25 21:13
好的。
谢谢,我已经改好了,但上个问题还存在,要是有想到什么,请回复我。

想整简单点还是复杂点呢
  1. 请输入需要检查的密码组合:iwyui285278\ywytu.qytuq{}
  2. assert length > 16
  3. 您的密码安全级别评定为:中
  4.                        请按以下方式提升您的密码安全级别:
  5.                                  1.密码必须由数字、字母及特殊字符三种组合
  6.                                  2.密码只能由字母开头
  7.                                  3.密码长度不能低于16位
  8. 是否继续输入(y/n):
  9. 输入异常,强制退出
  10. >>> length
  11. 25
  12. >>> couting
  13. 2
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 09:17:17 | 显示全部楼层
可以用正则进行匹配
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-26 11:27:17 From FishC Mobile | 显示全部楼层
逃兵 发表于 2020-11-26 08:17
想整简单点还是复杂点呢

这里为什么不是三个特殊符号啊,为什么couting是2,是characters变量中'\\'(这个表示反斜杠)这个的问题吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 12:37:35 | 显示全部楼层    本楼为最佳答案   
逆鳞丶樱之羽 发表于 2020-11-26 11:27
这里为什么不是三个特殊符号啊,为什么couting是2,是characters变量中'\\'(这个表示反斜杠)这个的问题吗 ...

再给你点提示
  1. 请输入需要检查的密码组合:iwyui285278\ywytu.qytuq{}
  2. assert length > 16
  3. 您的密码安全级别评定为:中
  4.                        请按以下方式提升您的密码安全级别:
  5.                                  1.密码必须由数字、字母及特殊字符三种组合
  6.                                  2.密码只能由字母开头
  7.                                  3.密码长度不能低于16位
  8. 是否继续输入(y/n):
  9. 输入异常,强制退出
  10. >>> past_count
  11. {'.', '\\'}
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-26 12:44:24 | 显示全部楼层

好的,我知道为什么了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-30 08:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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