为啥要用 while 1,就实现“如果结果是低或中则打印如...
课后练习题请写一个密码安全性检查的代码代码:check.py
# 密码安全性检查代码
#
# 低级密码要求:
# 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("您输入的密码为空(或空格),请重新输入:")
length = len(passwd)
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 == 3 and flag_con == 3 and (passwd in chars):
print("高")
print("请继续保持")
break
else:
print("中")
print("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break
为什么while 1 就是为了实现“如果结果是低或中则打印如何提升密码安全级别的提示,而高则直接退出”呢,不用循环语句,不是也一样吗??
while 1:
等价于
while True: 因为如果用户输入的密码等级为高就直接退出了循环,不会执行后面的代码了 _2_ 发表于 2020-8-20 15:38
等价于
这个我懂,但是还是没明白,while在这里的意义是什么,因为1就是true,就意味着,无论前面的运算是怎样的,一定会执行这个while语句啊 zltzlt 发表于 2020-8-20 15:38
因为如果用户输入的密码等级为高就直接退出了循环,不会执行后面的代码了
while 1 是一个永远为真的执行条件啊,所以和前面的等级没关系,都要执行下面的语句。所以,还是没懂 bigV 发表于 2020-8-20 16:09
while 1 是一个永远为真的执行条件啊,所以和前面的等级没关系,都要执行下面的语句。所以,还是没懂
while 1 :
print("您的密码安全级别评定为:", end='')
if flag_len == 1 or flag_con == 1 :
print("低")
elif flag_len == 3 and flag_con == 3 and (passwd in chars):
print("高")
print("请继续保持")
break # 这里有个 break zltzlt 发表于 2020-8-20 16:13
去掉着while 1 可以不 bigV 发表于 2020-8-20 16:20
去掉着while 1 可以不
不可以 zltzlt 发表于 2020-8-20 16:25
不可以
我哭,还是没懂 bigV 发表于 2020-8-20 16:31
我哭,还是没懂
while 1 :
print("您的密码安全级别评定为:", end='')
if flag_len == 1 or flag_con == 1 :
print("低")
elif flag_len == 3 and flag_con == 3 and (passwd in chars):
print("高")
print("请继续保持")
break # 这里有个 break
如果密码等级为高在这里就已经退出这个循环体了,就不会执行后面的 print() bigV 发表于 2020-8-20 16:31
我哭,还是没懂
while 1:
输入密码
判断密码是否为高级
如果不是:继续
如果是:通过break跳出循环; 本帖最后由 sunrise085 于 2020-8-20 17:29 编辑
while 1 这一段语句
第9含有个break,若评价等级为 高,则会直接break,那样就不会执行第12行以后的语句,否则,会继续执行12航以后的语句
看下面的注释
# 打印结果
while 1 :
print("您的密码安全级别评定为:", end='')
if flag_len == 1 or flag_con == 1 :
print("低")
elif flag_len == 3 and flag_con == 3 and (passwd in chars):
print("高")
print("请继续保持")
break#这里有个break,若评价等级为 高,则会直接break
else:
print("中")
#在while 1 中,若等级评价不是 高 ,才会执行下面的语句,若评价等级为 高,则会直接break,而不执行下面的语句。
print("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break bigV 发表于 2020-8-20 16:07
这个我懂,但是还是没明白,while在这里的意义是什么,因为1就是true,就意味着,无论前面的运算是怎样的 ...
因为每次 for 判断的时候里面都有一个 break,就是当满足 if 的条件之后,就会跳出循环体
页:
[1]