KAKA学python 发表于 2021-2-6 19:33:27

【课后作业14讲】密码安全性检查程序改进

本帖最后由 KAKA学python 于 2021-2-6 22:41 编辑

在原代码基础上,如果想加入一个:”不是高级密码就要重新输入并检测直到是高级密码为止“的功能,该如何实现
小白刚开始学~~求大佬带hhhh
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
hard = 0
password = input('请输入需要检查的密码:')
length = len(password)
if length <= 8:
    print('您的密码安全级别评定为:低\n请按以下方式提升密码等级:\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
elif length < 16:
    for each in password:
      if each in nums:
            hard += 1
            break
    for each in password:
      if each in chars:
            hard += 1
            break
    for each in password:
      if each in symbols:
            hard += 1
            break
    if hard >= 2:
      print('您的密码安全级别评定为:中\n请按以下方式提升密码等级:\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
    if hard < 2:
      print('您的密码安全级别评定为:低\n请按以下方式提升密码等级:\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
else:
    for each in password:
      if each in nums:
            hard += 1
            break
    for each in password:
      if each in chars:
            hard += 1
            break
    for each in password:
      if each in symbols:
            hard += 1
            break
    if hard == 2:
      print('您的密码安全级别评定为:中\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
    if hard < 2:
      print('您的密码安全级别评定为:低\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
    if hard > 2:
      if password in chars:
            print('您的密码安全级别评定为:高\n请继续保持^^')
      else:
            print('您的密码安全级别评定为:低\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
      

qq1151985918 发表于 2021-2-6 19:41:23

你高中低的标准时什么?其实只要一个函数不就好了么,函数返回 1 2 3分别代表 低 中 高

qq1151985918 发表于 2021-2-6 20:00:55

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

def isTrue(passwords,kinds):
    for i in passwords:
      if i in kinds:
            return True
    #判断函数,如果 passwords 中包含有该 kinds 中返回 True

def isHigh(passwords):
    if len(passwords) < 16:
      return False
    #如果密码长度不足,返回False
   
    elif not isTrue(passwords,chars):
      return False
    #如果密码首字母不是英文开头,返回False
   
    elif not isTrue(passwords,symbols):
      return False
    #如果密码不包含特殊字符,返回False
   
    elif not isTrue(passwords,nums):
      return False
    #如果密码不包含数字,返回False
   
    else:
      return True
    #如果全部包含返回True
   
while True:
    password = input('请输入需要检查的密码,输入 X 退出:')
    if password in "Xx":
      print('退出')
      break
    if isHigh(password):
      print('您的密码安全级别评定为:高\n请继续保持^^')
      continue
      #break
      #如果满足条件想退出 改为 break 即可
    else:
      print('您的密码安全级别不够,请按照以下规则修改\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
      continue

137430724 发表于 2021-7-11 15:17:25

#check.py

i = str(input('请输入需要坚持的密码组合 '))

a = """~!@#$%^&*()_=-/,.?<>;:[]{}|\
"""
b = '0123456789'
c = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

o = 0
p = 0
q = 0

for each in i:
    if each in a:
      o += 1

for each in i:
    if each in b:
      p += 1

for each in i:
    if each in c:
      q += 1

while i:
    iflen(i) == p or len(i) == q or len(i) <= 8:
      print("""您的密码安全级别评定为:低
    请按以下方式提升您的密码安全级别:
    1. 密码必须由数字、字母及特殊字符三种组合
    2. 密码只能由字母开头
    3. 密码长度不能低于16位
    """)


    if (len(i) == (o+p)or len(i) == (o+q) or len(i) == (p+q) or len(i) == o+p+q)and len(i) != o and len(i) != p and len(i) != q and (16 > len(i) >8):
      print("""您的密码安全级别评定为:中
    请按以下方式提升您的密码安全级别:
    1. 密码必须由数字、字母及特殊字符三种组合
    2. 密码只能由字母开头
    3. 密码长度不能低于16位
    """)

    if len(i) == (o+p+q) and (i in c) and len(i) >= 16:
      print("""您的密码安全级别评定为:高
    请继续保持
    """)

    str(input('请输入需要坚持的密码组合 '))

傻眼貓咪 发表于 2021-9-4 13:25:38

本帖最后由 傻眼貓咪 于 2021-9-4 14:26 编辑

代碼:
limit = 16
caps = +
digits =
symbols = ++

def check(p: 'passwords') -> bool:
    if len(p) < limit:
      return False
    elif ord(p) not in caps:
      return False
    return (any()\
      and any()\
            and any())

print(check(input('請輸入密碼:\n')))
輸入/輸出結果:
請輸入密碼:
fsdfdsf5643564354%^$^&%%*HGFDFJ
True

請輸入密碼:
&*%abc
False
页: [1]
查看完整版本: 【课后作业14讲】密码安全性检查程序改进