小甲鱼的铁粉 发表于 2020-6-14 21:55:22

课后题密码安全性的那个有问题

# 密码安全性检查代码
#
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
#
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位
result = 0
password = input("请输入您的密码")
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = '0123456789'
specials = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
length = len(password)
while(password.isspace() or length == 0):
    password = input("您输入的密码为空,请再次输入密码")
    length = len(password)
for each in password:
    for each in chars:
      result += 1
      break
for each in password:
    for each in numbers:
      result +=1
      break
for each in password:
    for each in specials:
      result +=1
      break
print(result)
while 1:
    if (length <=8 or result == 0):
      print("密码安全性低")
    elif (length >=16 and result == 3 and (password in chars)):
          print("密码安全性高")
          brin
    else:
      print("密码安全性中")
    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    break





答案不对{:10_243:}

老八秘制 发表于 2020-6-14 21:57:33

哪里不对?

小甲鱼的铁粉 发表于 2020-6-14 21:59:19

老八秘制 发表于 2020-6-14 21:57
哪里不对?

for each in password:
    for each in chars:
      result += 1
      break
for each in password:
    for each in numbers:
      result +=1
      break
for each in password:
    for each in specials:
      result +=1
      break


好像是这里,输入h123456789的话,result应该是2的,但是输出的result是1

Twilight6 发表于 2020-6-14 21:59:39

for each in password:
    for each in chars:
      result += 1
      break
for each in password:
    for each in numbers:
      result +=1
      break
for each in password:
    for each in specials:
      result +=1
      break

全部改成 if 就好了


完整代码:
# 密码安全性检查代码
#
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
#
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位
result = 0
password = input("请输入您的密码")
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
numbers = '0123456789'
specials = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
length = len(password)
while(password.isspace() or length == 0):
    password = input("您输入的密码为空,请再次输入密码")
    length = len(password)
for each in password:
    if each in chars:
      result += 1
      break
for each in password:
    if each in numbers:
      result +=1
      break
for each in password:
    if each in specials:
      result +=1
      break
print(result)
while 1:
    if (length <=8 or result == 0):
      print("密码安全性低")
    elif (length >=16 and result == 3 and (password in chars)):
          print("密码安全性高")
          break
    else:
      print("密码安全性中")
    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    break

小甲鱼的铁粉 发表于 2020-6-14 22:02:06

Twilight6 发表于 2020-6-14 21:59
全部改成 if 就好了




6666

xiaosi4081 发表于 2020-6-15 07:12:41

小甲鱼的铁粉 发表于 2020-6-14 22:02
6666

{:10_266:}{:10_266:}
页: [1]
查看完整版本: 课后题密码安全性的那个有问题