014密码强度检测作业有一点小问题,麻烦各位了!
本帖最后由 Aber 于 2020-5-26 16:17 编辑symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
password = input('请输入需要检查的密码组合:')
#先判断密码长度
length = len(password)
while (password.isspace() or length == 0):
password = input('您输入密码为空(或空格),请重新输入:')
length = len(password) #这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?
if length <= 8:
flag_len = 1
elif 8 < length <16:
flag_len = 2
else:
flag_len = 3
flag_con = 0 #这是对什么的初始化值对呀?
#判断是否包含特殊字符
for each in password:
if each in symbols:
flag_con += 1
break
#判断是否包含字母
for each in password:
if each in chars:
flag_con += 1
break
#判断是否包含数字
for each in password:
if each in nums:
flag_con +=1
break
while 1: #这是啥意思,能不能理解为while True?
print ('您的密码安全级别评定为:',end=' ')
if flag_len == 1 or flag_con == 1:
print ('低')
elif flag_len == 3 and flag_con == 3 and (password in chars):
#这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?
print ('高')
print ('请继续保持')
break
else:
print ('中')
print ("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break
{:10_266:} 又得麻烦大家了 代码乱了 重新打吧 你不能在代码里面添加引用的 本帖最后由 xiaosi4081 于 2020-5-26 16:21 编辑
原先的代码:
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
password = input('请输入需要检查的密码组合:')
#先判断密码长度
length = len(password)
while (password.isspace() or length == 0):
password = input('您输入密码为空(或空格),请重新输入:')
length = len(password) #这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?必要的,因为你上面重新赋值了
if length <= 8:
flag_len = 1
elif 8 < length <16:
flag_len = 2
else:
flag_len = 3
flag_con = 0 #这是对什么的初始化值对呀?
#判断是否包含特殊字符
for each in password:
if each in symbols:
flag_con += 1
break
#判断是否包含字母
for each in password:
if each in chars:
flag_con += 1
break
#判断是否包含数字
for each in password:
if each in nums:
flag_con +=1
break
while 1: #这是啥意思,能不能理解为while True?可以
print ('您的密码安全级别评定为:',end=' ')
if flag_len == 1 or flag_con == 1:
print ('低')
elif flag_len == 3 and flag_con == 3 and (password in chars):
#这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?
print ('高')
print ('请继续保持')
break
else:
print ('中')
print ("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位")
break
这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?
因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了嘛
这是对什么的初始化值对呀?
flag_con 初始化是为了判断后面的是否包含字母、数字、特殊字符,只要有包含其一就加一次1比如:如果等于3说明密码中含有字母、数字、特殊字符
这是啥意思,能不能理解为while True?
Python 中所有非0数字都为 True所有这里改成True 是一样的
这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?
对的,说明代码含有字母、数字、特殊字符,这个是高级密码的基本条件嘛~ 1、你已经重新输入了,密码的长度就变了,所以要再检查一次。这两个len不是同一个了。
2、这是啥意思,能不能理解为while True? 是的
3、里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?是的 Twilight6 发表于 2020-5-26 16:21
因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了 ...
明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心{:10_266:} Aber 发表于 2020-5-26 16:23
明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心
慢慢来吧 我当时感觉有点难还把这题跳过了哈哈哈
页:
[1]