鱼C论坛

 找回密码
 立即注册
查看: 1183|回复: 4

零基础之第15讲作业之经典不知错在哪???

[复制链接]
发表于 2021-9-6 00:30:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我的码:
print('~~~~~~~~~~密码安全性检查代码~~~~~~~~~~')
A=input('请输入需要检查的密码组合:')
listzimu=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
listshuzi=[0,1,2,3,4,5,6,7,8,9]
listA=[]
for i in A:#将字符串转化成列表,方便操作。
    listA.append(i)
listfu=['~','!','@','#','$','%','^','&','*','(',')','_','=','-','/',',','.','?','<','>',';',':','[',']','{','}','|','\\']
listxing=listA[:]#创造替身
a=0
b=0
c=0
d=0
for i in listA:#判断是否有特殊字符
    if i in listfu:
        a=1
for o in listA:#判断是否有数字
    if o in listshuzi:
        b=1
for p in listA:#判断是否有字母
    if p in listzimu
        c=1
d=a+b+c
for ii in listxing:#去除特殊字符
    if ii in listfu:
        listxing.remove(ii)
for oo in listxing:#去除字母
    if oo in listzimu:
        listxing.remove(oo)
for pp in listxing :#去除数字
    if pp in listshuzi:
        listxing.remove(pp)
if len(listxing)==0 :
    if int(d)==3 and A.istitle() and len(listA)>=16:
        print('您的密码安全级别评定为:高\n请继续保持')
    if int(d)==2 and  len(listA)>=8:
        print('您的密码安全级别评定为:中\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
    if int(d)==1 and int(c)==0 and len(listA)<=8:
        print('您的密码安全级别评定为:低\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
else:
    print('您输入了其它字符,请按照以下要求输入:\n1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')

跑出来:
请输入需要检查的密码组合:Lshxbasxanxx8347345634\\\xasx
您输入了其它字符,请按照以下要求输入:1. 密码必须由数字、字母及特殊字符三种组合
    2. 密码只能由字母开头
  3. 密码长度不能低于16位

Process finished with exit code 0

题目:
动动手:
&#160;&#160;
0. 请写一个密码安全性检查的代码代码:check.py
&#160;&#160;
# 密码安全性检查代码
#
# 低级密码要求:
#&#160; &#160;1. 密码由单纯的数字或字母组成
#&#160; &#160;2. 密码长度小于等于8位
#
# 中级密码要求:
#&#160; &#160;1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#&#160; &#160;2. 密码长度不能低于8位
#
# 高级密码要求:
#&#160; &#160;1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#&#160; &#160;2. 密码只能由字母开头
#&#160; &#160;3. 密码长度不能低于16位

程序演示:
&#160;&#160;见图片


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 10:50:32 | 显示全部楼层
print('~~~~~~~~~~密码安全性检查代码~~~~~~~~~~')
A=input('请输入需要检查的密码组合:')
listzimu=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
          'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
listshuzi=['0','1','2','3','4','5','6','7','8','9']
listA=[]
for i in A:#将字符串转化成列表,方便操作。
    listA.append(i)
listfu=['~','!','@','#',','%','^','&','*','(',')','_','=','-','/',',','.','?','<','>',';',':','[',']','{','}','|','\\']
listxing=listA[:]#创造替身
a=0
b=0
c=0
d=0
for i in listA:#判断是否有特殊字符
    if i in listfu:
        a=1
for o in listA:#判断是否有数字
    if o in listshuzi:
        b=1
for p in listA:#判断是否有字母
    if p in listzimu:
        c=1
d=a+b+c
for ii in listxing[:]:#去除特殊字符
    if ii in listfu:
        listxing.remove(ii)
for oo in listxing[:]:#去除字母
    if oo in listzimu:
        listxing.remove(oo)
for pp in listxing[:] :#去除数字
    if pp in listshuzi:
        listxing.remove(pp)
if len(listxing)==0 :
    if int(d)==3 and A.istitle() and len(listA)>=16:
        print('您的密码安全级别评定为:高\n请继续保持')
    if int(d)==2 and  len(listA)>=8:
        print('您的密码安全级别评定为:中\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
    if int(d)==1 and int(c)==0 and len(listA)<=8:
        print('您的密码安全级别评定为:低\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
else:
    print('您输入了其它字符,请按照以下要求输入:\n1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-6 11:44:24 | 显示全部楼层

不行啊,不是这个原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-6 12:07:03 | 显示全部楼层
print('~~~~~~~~~~密码安全性检查代码~~~~~~~~~~')
A=input('请输入需要检查的密码组合:')
listzimu=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
          'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
listshuzi=['0','1','2','3','4','5','6','7','8','9']
listA=[]
for i in A:#将字符串转化成列表,方便操作。
    listA.append(i)
listfu=['~','!','@','#',',','%','^','&','*','(',')','_','=','-','/',',','.','?','<','>',';',':','[',']','{','}','|','\\']
listxing=listA[:]#创造替身
a=0
b=0
c=0
d=0
for i in listA:#判断是否有特殊字符
    if i in listfu:
        a=1
for o in listA:#判断是否有数字
    if o in listshuzi:
        b=1
for p in listA:#判断是否有字母
    if p in listzimu:
        c=1
d=a+b+c
for ii in listxing[:]:#去除特殊字符
    if ii in listfu:
        listxing.remove(ii)
for oo in listxing[:]:#去除字母
    if oo in listzimu:
        listxing.remove(oo)
for pp in listxing[:] :#去除数字
    if pp in listshuzi:
        listxing.remove(pp)
if len(listxing)==0 :
    if int(d)==3 and (A[0] in listzimu) and len(listA)>=16:
        print('您的密码安全级别评定为:高\n请继续保持')
    if int(d)==2 and  len(listA)>=8:
        print('您的密码安全级别评定为:中\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
    if int(d)==1 and int(c)==0 and len(listA)<=8:
        print('您的密码安全级别评定为:低\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
else:
    print('您输入了其它字符,请按照以下要求输入:\n1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-6 13:42:26 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-6 14:16 编辑

我的代碼:
# -------------- 函數:判斷字符串裡是否存在數字,英文字母或符號 --------------
def isContainsChar(p: str) -> bool:
    return any([bool(i.lower() in "abcdefghijklmnopqrstuvwxyz") for i in p])

def isContainsDigit(p: str) -> bool:
    return any([bool(i in "0123456789") for i in p])

def isContainsSymbol(p: str) -> bool:
    return any([bool(i in """~!@#$%^&+-*/=_,.?"'`;:<>()[]{}|\\""") for i in p])

# ----------------- 函數:判斷密碼強度是否高級,中級或低級 -----------------
def isHigh(p: str) -> bool:
    if len(p) < 16 or p[0].lower() not in "abcdefghijklmnopqrstuvwxyz":
        return False
    return isContainsChar(p) and isContainsDigit(p) and isContainsSymbol(p)

def isMedium(p: str) -> bool:
    if len(p) < 8:
        return False
    return (isContainsChar(p) and isContainsDigit(p) and (not isContainsSymbol(p)))\
    or (isContainsChar(p) and isContainsSymbol(p) and (not isContainsDigit(p)))\
    or (isContainsDigit(p) and isContainsSymbol(p) and (not isContainsChar(x)))

def isLow(p: str) -> bool:
    if len(p) > 8:
        return False
    return all([bool(i in "0123456789") for i in p])

# ------------------------- 函數:判斷密碼合法性 -------------------------
def check(p: 'passwrods') -> str:
    if isHigh(p):
        return "高級密碼"
    elif isMedium(p):
        return "中級密碼"
    elif isLow(p):
        return "低級密碼"
    else:
        return "密碼不合法"

# ------------------------------- 主函數 -------------------------------
def main():
    """檢測密碼類型"""
    print(check(input("請輸入密碼:\n")))

# --------------------------- 模塊內執行區域 ---------------------------
if __name__ == "__main__":
    print(main.__doc__)
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 14:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表