Aber 发表于 2020-5-26 16:12:21

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:} 又得麻烦大家了

Twilight6 发表于 2020-5-26 16:13:11

代码乱了 重新打吧

Twilight6 发表于 2020-5-26 16:13:46

你不能在代码里面添加引用的

xiaosi4081 发表于 2020-5-26 16:18:17

本帖最后由 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

Twilight6 发表于 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次,是吗?
对的,说明代码含有字母、数字、特殊字符,这个是高级密码的基本条件嘛~

heidern0612 发表于 2020-5-26 16:22:25

1、你已经重新输入了,密码的长度就变了,所以要再检查一次。这两个len不是同一个了。

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

3、里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?是的

Aber 发表于 2020-5-26 16:23:56

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

明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心{:10_266:}

Twilight6 发表于 2020-5-26 16:27:40

Aber 发表于 2020-5-26 16:23
明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心

慢慢来吧 我当时感觉有点难还把这题跳过了哈哈哈
页: [1]
查看完整版本: 014密码强度检测作业有一点小问题,麻烦各位了!