鱼C论坛

 找回密码
 立即注册
查看: 1492|回复: 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;见图片


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 10:50:32 | 显示全部楼层
  1. print('~~~~~~~~~~密码安全性检查代码~~~~~~~~~~')
  2. A=input('请输入需要检查的密码组合:')
  3. 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',
  4.           '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']
  5. listshuzi=['0','1','2','3','4','5','6','7','8','9']
  6. listA=[]
  7. for i in A:#将字符串转化成列表,方便操作。
  8.     listA.append(i)
  9. listfu=['~','!','@','#',','%','^','&','*','(',')','_','=','-','/',',','.','?','<','>',';',':','[',']','{','}','|','\\']
  10. listxing=listA[:]#创造替身
  11. a=0
  12. b=0
  13. c=0
  14. d=0
  15. for i in listA:#判断是否有特殊字符
  16.     if i in listfu:
  17.         a=1
  18. for o in listA:#判断是否有数字
  19.     if o in listshuzi:
  20.         b=1
  21. for p in listA:#判断是否有字母
  22.     if p in listzimu:
  23.         c=1
  24. d=a+b+c
  25. for ii in listxing[:]:#去除特殊字符
  26.     if ii in listfu:
  27.         listxing.remove(ii)
  28. for oo in listxing[:]:#去除字母
  29.     if oo in listzimu:
  30.         listxing.remove(oo)
  31. for pp in listxing[:] :#去除数字
  32.     if pp in listshuzi:
  33.         listxing.remove(pp)
  34. if len(listxing)==0 :
  35.     if int(d)==3 and A.istitle() and len(listA)>=16:
  36.         print('您的密码安全级别评定为:高\n请继续保持')
  37.     if int(d)==2 and  len(listA)>=8:
  38.         print('您的密码安全级别评定为:中\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
  39.     if int(d)==1 and int(c)==0 and len(listA)<=8:
  40.         print('您的密码安全级别评定为:低\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
  41. else:
  42.     print('您输入了其它字符,请按照以下要求输入:\n1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不行啊,不是这个原因
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-6 12:07:03 | 显示全部楼层
  1. print('~~~~~~~~~~密码安全性检查代码~~~~~~~~~~')
  2. A=input('请输入需要检查的密码组合:')
  3. 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',
  4.           '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']
  5. listshuzi=['0','1','2','3','4','5','6','7','8','9']
  6. listA=[]
  7. for i in A:#将字符串转化成列表,方便操作。
  8.     listA.append(i)
  9. listfu=['~','!','@','#',',','%','^','&','*','(',')','_','=','-','/',',','.','?','<','>',';',':','[',']','{','}','|','\\']
  10. listxing=listA[:]#创造替身
  11. a=0
  12. b=0
  13. c=0
  14. d=0
  15. for i in listA:#判断是否有特殊字符
  16.     if i in listfu:
  17.         a=1
  18. for o in listA:#判断是否有数字
  19.     if o in listshuzi:
  20.         b=1
  21. for p in listA:#判断是否有字母
  22.     if p in listzimu:
  23.         c=1
  24. d=a+b+c
  25. for ii in listxing[:]:#去除特殊字符
  26.     if ii in listfu:
  27.         listxing.remove(ii)
  28. for oo in listxing[:]:#去除字母
  29.     if oo in listzimu:
  30.         listxing.remove(oo)
  31. for pp in listxing[:] :#去除数字
  32.     if pp in listshuzi:
  33.         listxing.remove(pp)
  34. if len(listxing)==0 :
  35.     if int(d)==3 and (A[0] in listzimu) and len(listA)>=16:
  36.         print('您的密码安全级别评定为:高\n请继续保持')
  37.     if int(d)==2 and  len(listA)>=8:
  38.         print('您的密码安全级别评定为:中\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
  39.     if int(d)==1 and int(c)==0 and len(listA)<=8:
  40.         print('您的密码安全级别评定为:低\n请按以下方式提升您的密码安全级别:\n   1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
  41. else:
  42.     print('您输入了其它字符,请按照以下要求输入:\n1. 密码必须由数字、字母及特殊字符三种组合\n    2. 密码只能由字母开头\n  3. 密码长度不能低于16位')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

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

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

  13. def isMedium(p: str) -> bool:
  14.     if len(p) < 8:
  15.         return False
  16.     return (isContainsChar(p) and isContainsDigit(p) and (not isContainsSymbol(p)))\
  17.     or (isContainsChar(p) and isContainsSymbol(p) and (not isContainsDigit(p)))\
  18.     or (isContainsDigit(p) and isContainsSymbol(p) and (not isContainsChar(x)))

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

  23. # ------------------------- 函數:判斷密碼合法性 -------------------------
  24. def check(p: 'passwrods') -> str:
  25.     if isHigh(p):
  26.         return "高級密碼"
  27.     elif isMedium(p):
  28.         return "中級密碼"
  29.     elif isLow(p):
  30.         return "低級密碼"
  31.     else:
  32.         return "密碼不合法"

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

  37. # --------------------------- 模塊內執行區域 ---------------------------
  38. if __name__ == "__main__":
  39.     print(main.__doc__)
  40.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 23:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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