鱼C论坛

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

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

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

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

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

x
password_0 = input("请输入需要检查的密码组合: ")
special_characters = ["~","!","@","#","$","%","^",\
                    "&","*","(",")","_","=","-","/",",",\
                    ".","?","<",">",";",":","[","]",\
                    "{","}","|"]
# 以下为条件审核
for password in password_0:
    if password_0[0].isalpha():
        if password.isalnum() and len(password_0)<=8 :
            print("您的密码安全级别评定为: 低")
            break
        elif password.isdigit() or password.isalpha():
            if password in special_characters:
                print(password_0)
        
        else:
            print("密码输入错误!")
            break        
print("请按以下方式提升您的安全密码级别:")
print("\t1.密码必须由数字、字母及特殊字符三种组合")
print("\t2.密码只能由字母开头")
print("\t3.密码长度不能低于16位")
课后作业中遇到的情况:
if password in special_characters:
                print(password_0)
这个条件为啥不能运行,我试了一晚上,去掉这里的if条件,程序就可以正常运行,但是加上后,就直接调用以下代码块
else:
            print("密码输入错误!")
            break       
但是分开来测试又是可以运行的
special_characters = ["~","!","@","#","$","%","^",\
                    "&","*","(",")","_","=","-","/",",",\
                    ".","?","<",">",";",":","[","]",\
                    "{","}","|"]
x="llwertll&llt"
for y in x:
    if y in special_characters:
        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 是数字

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

这个代码可以参考参考哈~:
while True:
    password_0 = input("请输入需要检查的密码组合: ")
    special_characters = ["~", "!", "@", "#", "$", "%", "^", \
                          "&", "*", "(", ")", "_", "=", "-", "/", ",", \
                          ".", "?", "<", ">", ";", ":", "[", "]", \
                          "{", "}", "|"]
    special,number,word,flag = 0,0,0,0

    # 以下为条件审核
    if password_0[0].isalpha():
        if len(password_0) <= 8:
            print("您的密码安全级别评定为: 低")
            flag = 1
        elif password_0.isalnum():
            print("您的密码安全级别评定为: 低")
            flag = 1
        else:
            for password in password_0:
                if password in special_characters:
                    special = 1
                elif password.isdigit():
                    number = 1
                elif password.isalpha():
                    word = 1
            result = special+number+word

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

    if flag:
        print("请按以下方式提升您的安全密码级别:")
        print("\t1.密码必须由数字、字母及特殊字符三种组合")
        print("\t2.密码只能由字母开头")
        print("\t3.密码长度不能低于16位")
想知道小甲鱼最近在做啥?请访问 -> 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 是数字

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

这个代码可以参考参考哈~:
while True:
    password_0 = input("请输入需要检查的密码组合: ")
    special_characters = ["~", "!", "@", "#", "$", "%", "^", \
                          "&", "*", "(", ")", "_", "=", "-", "/", ",", \
                          ".", "?", "<", ">", ";", ":", "[", "]", \
                          "{", "}", "|"]
    special,number,word,flag = 0,0,0,0

    # 以下为条件审核
    if password_0[0].isalpha():
        if len(password_0) <= 8:
            print("您的密码安全级别评定为: 低")
            flag = 1
        elif password_0.isalnum():
            print("您的密码安全级别评定为: 低")
            flag = 1
        else:
            for password in password_0:
                if password in special_characters:
                    special = 1
                elif password.isdigit():
                    number = 1
                elif password.isalpha():
                    word = 1
            result = special+number+word

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

    if flag:
        print("请按以下方式提升您的安全密码级别:")
        print("\t1.密码必须由数字、字母及特殊字符三种组合")
        print("\t2.密码只能由字母开头")
        print("\t3.密码长度不能低于16位")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

太感谢了,我还是过于刻板的使用这些知识了,不能灵活变通,多谢哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 08:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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