鱼C论坛

 找回密码
 立即注册
查看: 1341|回复: 21

[已解决]关于零基础学python第14讲动动手0的一个问题!(小甲鱼给的答案是否存在不严谨?)

[复制链接]
发表于 2020-4-28 18:59:08 | 显示全部楼层 |阅读模式

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

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

x
55.# 打印结果
56.while 1 :
57.    print("您的密码安全级别评定为:", end='')
58.    if flag_len == 1 or flag_con == 1 :
59.        print("低")
60.    elif flag_len == 2 or flag_con == 2 :
61.        print("中")
62.    else :
63.        print("高")
64.        print("请继续保持")
65.        break

上面是小甲鱼给出答案的一部分代码,假如输入的密码为:‘+=&~’,那么输出的结果会是“低”。但这个密码与题目要求里的:

# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
第1点要求不符。
这里是否存在问题呢?是否应该还要加多一个判定:当密码长度小于等于8位时,不能有特殊字符存在。
求各位同学解答!!
最佳答案
2020-4-28 21:28:58
一文先生 发表于 2020-4-28 21:13
这怎么会是杠呢?在实事求是啊。
那我问阿:中级密码要求中的两点,是和关系还是或关系?
1.如果是和关 ...

直接输出“不合法”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-28 19:13:07 | 显示全部楼层
1. 密码由单纯的数字或字母组成
2. 密码长度小于等于8位
这两个条件是或的关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 19:54:08 | 显示全部楼层

那我又有一个问题了:假如输入的密码是:‘+++++++++’。它的等级是多少呢?如果按照小甲鱼的程序判断,它是“低”等级;但这个密码显然跟题目要求是不符合低等级的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 19:57:42 | 显示全部楼层
一文先生 发表于 2020-4-28 19:54
那我又有一个问题了:假如输入的密码是:‘+++++++++’。它的等级是多少呢?如果按照小甲鱼的程序判断, ...

代码给我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 20:02:56 | 显示全部楼层

1.# 密码安全性检查代码
2.#
3.# 低级密码要求:
4.#   1. 密码由单纯的数字或字母组成
5.#   2. 密码长度小于等于8位
6.#
7.# 中级密码要求:
8.#&nbsp; &nbsp;1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
9.#&nbsp; &nbsp;2. 密码长度不能低于8位
10.#
11.# 高级密码要求:
12.#&nbsp; &nbsp;1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
13.#&nbsp; &nbsp;2. 密码只能由字母开头
14.#&nbsp; &nbsp;3. 密码长度不能低于16位
15.
16.symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
17.chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
18.nums = '0123456789'
19.
20.passwd = input('请输入需要检查的密码组合:')
21.
22.# 判断长度
23.length = len(passwd)
24.
25.while (passwd.isspace() or length == 0) :
26.&nbsp; &nbsp; passwd = input("您输入的密码为空(或空格),请重新输入:")
27.
28.if length <= 8:
29.&nbsp; &nbsp; flag_len = 1
30.elif 8 < length < 16:
31.&nbsp; &nbsp; flag_len = 2
32.else:
33.&nbsp; &nbsp; flag_len = 3
34.
35.flag_con = 0
36.
37.# 判断是否包含特殊字符
38.for each in passwd:
39.&nbsp; &nbsp; if each in symbols:
40.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;flag_con += 1
41.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;break
42.&nbsp; &nbsp;&nbsp;
43.# 判断是否包含字母
44.for each in passwd:
45.&nbsp; &nbsp; if each in chars:
46.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;flag_con += 1
47.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;break
48.
49.# 判断是否包含数字
50.for each in passwd:
51.&nbsp; &nbsp; if each in nums:
52.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;flag_con += 1
53.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;break&nbsp; &nbsp;&nbsp;
54.
55.# 打印结果
56.while 1 :
57.&nbsp; &nbsp; print("您的密码安全级别评定为:", end='')
58.&nbsp; &nbsp; if flag_len == 1 or flag_con == 1 :
59.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;print("低")
60.&nbsp; &nbsp; elif flag_len == 2 or flag_con == 2 :
61.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;print("中")
62.&nbsp; &nbsp; else :
63.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;print("高")
64.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;print("请继续保持")
65.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;break
66.
67.&nbsp; &nbsp; print("请按以下方式提升您的密码安全级别:\n\
68.&nbsp; &nbsp; \t1. 密码必须由数字、字母及特殊字符三种组合\n\
69.&nbsp; &nbsp; \t2. 密码只能由字母开头\n\
70.&nbsp; &nbsp; \t3. 密码长度不能低于16位'")
71.&nbsp; &nbsp; break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:04:30 | 显示全部楼层
一文先生 发表于 2020-4-28 20:02
1.# 密码安全性检查代码
2.#
3.# 低级密码要求:

这样发不行啊,你要人一个个把你的前面数字给删了嘛。。。。

如何正确地发代码、上传图片和附件?
https://fishc.com.cn/thread-52272-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:08:45 | 显示全部楼层
一文先生 发表于 2020-4-28 20:02
1.# 密码安全性检查代码
2.#
3.# 低级密码要求:

只能说你是杠精
不符合中级密码和高级密码的要求,不是低级密码是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:09:20 | 显示全部楼层
Twilight6 发表于 2020-4-28 20:04
这样发不行啊,你要人一个个把你的前面数字给删了嘛。。。。

如何正确地发代码、上传图片和附件?

这是它的代码
# 密码安全性检查代码
#
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
#
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

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

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

# 判断长度
length = len(passwd)

while (passwd.isspace() or length == 0) :
    passwd = input("您输入的密码为空(或空格),请重新输入:")

if length <= 8:
    flag_len = 1
elif 8 < length < 16:
    flag_len = 2
else:
    flag_len = 3

flag_con = 0

# 判断是否包含特殊字符
for each in passwd:
    if each in symbols:
        flag_con += 1
        break
    
# 判断是否包含字母
for each in passwd:
    if each in chars:
        flag_con += 1
        break

# 判断是否包含数字
for each in passwd:
    if each in nums:
        flag_con += 1
        break    

# 打印结果
while 1 :
    print("您的密码安全级别评定为:", end='')
    if flag_len == 1 or flag_con == 1 :
        print("低")
    elif flag_len == 2 or flag_con == 2 :
        print("中")
    else :
        print("高")
        print("请继续保持")
        break

    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位'")
    break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:13:26 | 显示全部楼层

。。兄弟你是如何做到的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:18:13 | 显示全部楼层
一文先生 发表于 2020-4-28 19:54
那我又有一个问题了:假如输入的密码是:‘+++++++++’。它的等级是多少呢?如果按照小甲鱼的程序判断, ...

不需要太过严谨,小甲鱼的代码是拿来练习的,肯定可以加以修饰,如果你要考虑这么多,那就自己写出来,这是练习题,不是叫你做项目哈。而且你这个八个加号重复了8次,肯定是低等级吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:23:21 | 显示全部楼层
Twilight6 发表于 2020-4-28 20:13
。。兄弟你是如何做到的

交互式中
exec("l=[]\n\ntry:\n    while True:\n        l.append(input())\nexcept:pass\n\nfor i in l:\n    print(i[i.find('.'):].replace(' ',' '))")
然后把他发的东西输进去,Ctrl+c,就可以看到输出了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:36:02 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-28 20:23
交互式中然后把他发的东西输进去,Ctrl+c,就可以看到输出了

一脸懵逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 20:36:32 | 显示全部楼层

首先谢谢帮我复制了源代码进来,我是新手,不熟操作。
然后,我不是杠精啦.. 因子在做题时候就被题目的要求所困惑了,想了好久,最后在看小甲鱼给出的答案时,发现了有个矛盾的地方:确实假如输入的密码是‘+++++++++’这个的话,程序最终给出的结果跟原题目给出的要求是有出入的,我才困惑。(要么题目不够严谨,要么程序还未完善好,我是这么觉得的,就有点困惑)
最后还是非常感谢大神能抽时间帮我解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 20:39:05 | 显示全部楼层
Twilight6 发表于 2020-4-28 20:18
不需要太过严谨,小甲鱼的代码是拿来练习的,肯定可以加以修饰,如果你要考虑这么多,那就自己写出来,这 ...

+号是9次哦!你说这属于低级密码还是中级密码呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:40:02 | 显示全部楼层
一文先生 发表于 2020-4-28 20:39
+号是9次哦!你说这属于低级密码还是中级密码呢?

既然不符合中级,那就是低级
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 20:46:36 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-28 20:40
既然不符合中级,那就是低级

然而,'+++++++++'(9个+号),这个密码抽出来考虑它是符合题目中:
# 中级密码要求:
#&nbsp; &nbsp;1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#&nbsp; &nbsp;2. 密码长度不能低于8位
的第二点要求的。如果上面2点是或的关系,则上面密码是属于中级密码...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 20:50:12 | 显示全部楼层
一文先生 发表于 2020-4-28 20:46
然而,'+++++++++'(9个+号),这个密码抽出来考虑它是符合题目中:
# 中级密码要求:
#&nbsp; &nbsp;1.  ...

???你是真的杠
直接当低级密码要求不存在,非中级密码即低级密码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 21:13:05 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-28 20:50
???你是真的杠
直接当低级密码要求不存在,非中级密码即低级密码

这怎么会是杠呢?在实事求是啊。
那我问阿:中级密码要求中的两点,是和关系还是或关系?
1.如果是和关系,那么‘+++++++++’则不是中级,即低级密码。但这时候低级密码要求的两点如果同样是和关系,就有另外一个问题:举例:密码‘+++’也就不是低级密码。
2.如果是或关系,‘+++++++++’正是属于中级密码啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 21:26:05 | 显示全部楼层
一文先生 发表于 2020-4-28 21:13
这怎么会是杠呢?在实事求是啊。
那我问阿:中级密码要求中的两点,是和关系还是或关系?
1.如果是和关 ...

应该是和关系吧~别在意这么多了,先继续学下去,这练习题真的只是练习作用,你能加以修改的更加完美那不就是小甲鱼所希望的举一反三嘛?所以说,认真写完这个代码,继续看下一课时吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 21:28:58 | 显示全部楼层    本楼为最佳答案   
一文先生 发表于 2020-4-28 21:13
这怎么会是杠呢?在实事求是啊。
那我问阿:中级密码要求中的两点,是和关系还是或关系?
1.如果是和关 ...

直接输出“不合法”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 22:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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