lsdsg 发表于 2021-7-1 19:19:27

这个方法怎么会出错呢,大家来看看

【问题描述】   

    编写程序,对输入的密码(长度不超过28)进行强度检测。密码强度规定为:

    1)含有数字字符;

    2)含有小写字母;

    3)含有大写字母;

    4)密码长度不低于8;

    5)至少含有~!@#$%^&*()_=-/,.?<>;:[]{}|\中的一个字符

    规定密码满足上列任意条件即加一星,程序输出密码的星级

【输入形式】

长度在28以内的任意字符串。

【输出形式】

    根据密码强度要求,输出密码强度星级,用整数表示

【样例输入】

123.aq.Aw!

【样例输出】

5

a=input()
b=0
c='~!@#$%^&*()_=-/,.?<>;:[]{}|\\'

for i in a:
    if i.isdigit():
      b+=1
    break
for i in a:
    if i.isupper():
      b+=1
    break
for i in a:
    if i.islower():
      b+=1
    break
for i in a:
    if i in c:
      b+=1
    break
if len(a)>=8:
    b+=1
print(b)

深谙流年 发表于 2021-7-1 19:50:32

break放到判断语句里面就行了

qiuyouzhi 发表于 2021-7-1 19:50:49

break 放错位置了
a=input()
b=0
c='~!@#$%^&*()_=-/,.?<>;:[]{}|\\'

for i in a:
    if i.isdigit():
      b+=1
      break
for i in a:
    if i.isupper():
      b+=1
      break
for i in a:
    if i.islower():
      b+=1
      break
for i in a:
    if i in c:
      b+=1
      break
if len(a)>=8:
    b+=1
print(b)

其实代码可以写的更简洁一些,
你的代码里好多的 for 循环大体都是重复的,为什么不放到一个循环里呢?
页: [1]
查看完整版本: 这个方法怎么会出错呢,大家来看看