|
发表于 2023-9-28 09:18:43
|
显示全部楼层
问题在于变量a在循环中被设置为1,但是当输入为连续的相同字符时,变量a会被多次设置为1,导致最终的判断结果不正确。
解决方法是在循环前将变量a、b、c都设置为0,以避免上一次循环的结果影响下一次循环的判断。
下面是修改后的代码:
- temp=input('输入密码')
- password = temp
- length=len(password)
- simple1 = 'abcdefghijklmnopqrstuvwxyz'
- simple2 = '1234567890'
- simple3 = simple1.upper()
- simple4 = "~!@#$%^&*()_=-/,.?<>;:[]{}\|"
- a=0
- b=0
- c=0
- if length == 0:
- print('密码不能为空')
- if 0< length <=8:
- print("低级密码")
- if 8<length <16:
- for i in password:
- a, b, c = 0, 0, 0 # 修改:将变量a、b、c在循环前都设置为0
- if i in simple1 or i in simple3:
- a=1
- if i in simple2:
- b=1
- if i in simple4:
- c=1
- if a+b+c >= 2:
- print("中级密码")
- break # 修改:添加break语句
- else: # 修改:在for循环后添加else语句
- print("低级密码")
- if length >=16:
- for i in password:
- a, b, c = 0, 0, 0 # 修改:将变量a、b、c在循环前都设置为0
- if i in simple1 or i in simple3:
- a=1
- if i in simple2:
- b=1
- if i in simple4:
- c=1
- if a+b+c == 3:
- print('高级密码')
- break # 修改:添加break语句
- elif a+b+c == 2:
- print("中级密码")
- break # 修改:添加break语句
- else: # 修改:在for循环后添加else语句
- print("低级密码")
- print(a,b,c,length)
复制代码 |
|