鱼C论坛

 找回密码
 立即注册
查看: 1169|回复: 2

[已解决]不知道为啥条件不能运行

[复制链接]
发表于 2020-8-20 23:26:30 | 显示全部楼层 |阅读模式

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

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

x
  1. password_0 = input("请输入需要检查的密码组合: ")
  2. special_characters = ["~","!","@","#","$","%","^",\
  3.                     "&","*","(",")","_","=","-","/",",",\
  4.                     ".","?","<",">",";",":","[","]",\
  5.                     "{","}","|"]
  6. # 以下为条件审核
  7. for password in password_0:
  8.     if password_0[0].isalpha():
  9.         if password.isalnum() and len(password_0)<=8 :
  10.             print("您的密码安全级别评定为: 低")
  11.             break
  12.         elif password.isdigit() or password.isalpha():
  13.             if password in special_characters:
  14.                 print(password_0)
  15.         
  16.         else:
  17.             print("密码输入错误!")
  18.             break        
  19. print("请按以下方式提升您的安全密码级别:")
  20. print("\t1.密码必须由数字、字母及特殊字符三种组合")
  21. print("\t2.密码只能由字母开头")
  22. print("\t3.密码长度不能低于16位")
复制代码

课后作业中遇到的情况:
  1. if password in special_characters:
  2.                 print(password_0)
复制代码

这个条件为啥不能运行,我试了一晚上,去掉这里的if条件,程序就可以正常运行,但是加上后,就直接调用以下代码块
  1. else:
  2.             print("密码输入错误!")
  3.             break      
复制代码

但是分开来测试又是可以运行的
  1. special_characters = ["~","!","@","#","$","%","^",\
  2.                     "&","*","(",")","_","=","-","/",",",\
  3.                     ".","?","<",">",";",":","[","]",\
  4.                     "{","}","|"]
  5. x="llwertll&llt"
  6. for y in x:
  7.     if y in special_characters:
  8.         print(y)
复制代码

求教,这中间是哪个环节出了问题,运行的时候也没有跳出错误代码
最佳答案
2020-8-20 23:57:42

elif password.isdigit() or password.isalpha():
            if password in special_characters:
                print(password_0)

这个条件为啥不能运行?


因为你这个 if 上面的 elif 条件是 判断如果是 password 是数字

或者 字母才执行这里面的代码,所以不可能为你这里的特殊字符

这个代码可以参考参考哈~:

  1. while True:
  2.     password_0 = input("请输入需要检查的密码组合: ")
  3.     special_characters = ["~", "!", "@", "#", "$", "%", "^", \
  4.                           "&", "*", "(", ")", "_", "=", "-", "/", ",", \
  5.                           ".", "?", "<", ">", ";", ":", "[", "]", \
  6.                           "{", "}", "|"]
  7.     special,number,word,flag = 0,0,0,0

  8.     # 以下为条件审核
  9.     if password_0[0].isalpha():
  10.         if len(password_0) <= 8:
  11.             print("您的密码安全级别评定为: 低")
  12.             flag = 1
  13.         elif password_0.isalnum():
  14.             print("您的密码安全级别评定为: 低")
  15.             flag = 1
  16.         else:
  17.             for password in password_0:
  18.                 if password in special_characters:
  19.                     special = 1
  20.                 elif password.isdigit():
  21.                     number = 1
  22.                 elif password.isalpha():
  23.                     word = 1
  24.             result = special+number+word

  25.             if result == 3 and len(password_0) >= 16:
  26.                 print('恭喜,您的密码安全级别评定为: 高 ,请继续保持!')
  27.                 break
  28.             elif result == 2 and 8< len(password_0) < 16:
  29.                 print('您的密码安全级别评定为: 中')
  30.                 flag = 1
  31.     else:
  32.         print("密码输入错误!")

  33.     if flag:
  34.         print("请按以下方式提升您的安全密码级别:")
  35.         print("\t1.密码必须由数字、字母及特殊字符三种组合")
  36.         print("\t2.密码只能由字母开头")
  37.         print("\t3.密码长度不能低于16位")
复制代码

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

使用道具 举报

发表于 2020-8-20 23:57:42 | 显示全部楼层    本楼为最佳答案   

elif password.isdigit() or password.isalpha():
            if password in special_characters:
                print(password_0)

这个条件为啥不能运行?


因为你这个 if 上面的 elif 条件是 判断如果是 password 是数字

或者 字母才执行这里面的代码,所以不可能为你这里的特殊字符

这个代码可以参考参考哈~:

  1. while True:
  2.     password_0 = input("请输入需要检查的密码组合: ")
  3.     special_characters = ["~", "!", "@", "#", "$", "%", "^", \
  4.                           "&", "*", "(", ")", "_", "=", "-", "/", ",", \
  5.                           ".", "?", "<", ">", ";", ":", "[", "]", \
  6.                           "{", "}", "|"]
  7.     special,number,word,flag = 0,0,0,0

  8.     # 以下为条件审核
  9.     if password_0[0].isalpha():
  10.         if len(password_0) <= 8:
  11.             print("您的密码安全级别评定为: 低")
  12.             flag = 1
  13.         elif password_0.isalnum():
  14.             print("您的密码安全级别评定为: 低")
  15.             flag = 1
  16.         else:
  17.             for password in password_0:
  18.                 if password in special_characters:
  19.                     special = 1
  20.                 elif password.isdigit():
  21.                     number = 1
  22.                 elif password.isalpha():
  23.                     word = 1
  24.             result = special+number+word

  25.             if result == 3 and len(password_0) >= 16:
  26.                 print('恭喜,您的密码安全级别评定为: 高 ,请继续保持!')
  27.                 break
  28.             elif result == 2 and 8< len(password_0) < 16:
  29.                 print('您的密码安全级别评定为: 中')
  30.                 flag = 1
  31.     else:
  32.         print("密码输入错误!")

  33.     if flag:
  34.         print("请按以下方式提升您的安全密码级别:")
  35.         print("\t1.密码必须由数字、字母及特殊字符三种组合")
  36.         print("\t2.密码只能由字母开头")
  37.         print("\t3.密码长度不能低于16位")
复制代码

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

使用道具 举报

 楼主| 发表于 2020-8-21 19:32:46 | 显示全部楼层
Twilight6 发表于 2020-8-20 23:57
因为你这个 if 上面的 elif 条件是 判断如果是 password 是数字

或者 字母才执行这里面的代码,所 ...

太感谢了,我还是过于刻板的使用这些知识了,不能灵活变通,多谢哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-26 00:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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