Amber999 发表于 2021-10-30 16:09:58

while循环

#密码安全性检查
#低级:1)单纯由数字或字母组成2)长度小于8位
#中级:1)密码由数字,字母或特殊字符任意两种组合
    # 2)长度不能低于8位
#高级:1)数字,字母,特殊字符三种
    # 2)只能以字母开头
    # 3)密码长度不能低于十六位

symbols=r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums='0123456789'
passwd=input("请输入需要检查的密码组合:")
#判断长度
length=len(passwd)
while (passwd.isspace() or length==0):
    passwd=input("您输入的密码为空(或空格),请重新输入:")
if length<=8:
    flag_len=1
elif 8< length <16:
    flag_len=2
else:
    flag_len=3

flag_con=0
#判断是否包含特殊字符
for each in passwd:
    if each in symbols:
      flag_con +=1
      break
#判断是否包含字母
for each in passwd:
    if each in chars:
      flag_con +=1
      break
#判断是否包含数字
for each in passwd:
    if each in nums:
      flag_con +=1
      break
#打印结果
#while 1:
print("您的密码安全级别为: ",end='')
if flag_len == 1 or flag_con==1:
    print("低")
elif flag_len == 2 or flag_con==2:
    print("中")
else:
    print("高")
    print("请继续保持")
#break
print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    #break
此参考答案中,while循环的作用是什么?我注释掉之后结果没什么影响
   

大马强 发表于 2021-10-30 16:58:28

这是哪题答案来着?
目前看来,不注释掉才会出现问题,两个缩进都一样

傻眼貓咪 发表于 2021-10-30 17:18:45

本帖最后由 傻眼貓咪 于 2021-10-30 17:20 编辑

def levels(p: str) -> str:
    """
    鉴别密码安全性等级
    低级:由数字或字母其中一种组合组成,长度小于 8 位
    中级:由数字、字母、或特殊字符任意两种组合组成,长度大于等于 8 位、小于 16 位
    高级:由数字、字母、和特殊字符三种组合组成,以字母开头,长度大于等于 16 位
    """
    symbol = [chr(i) for i in [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 58,\
      59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 96, 123, 124, 125, 126]]
    a = any()
    b = any()
    c = any()
    if len(p) < 8:
      return "密码等级:低级" if all() else "密码不符合任何等级"
    elif len(p) < 16:
      return "密码等级:中级" if (a and b and not c) or (b and c and not a) or (c and a and not b) else "密码不符合任何等级"
    elif len(p) >= 16 and p.isalpha():
      return "密码等级:高级" if a and b and not p.isalnum() else "密码不符合任何等级"
    else: return "密码不符合任何等级"

def main():
    print(levels.__doc__)
    print(levels(input("请输入您的密码:")))

if __name__ == "__main__":
    main()

Amber999 发表于 2021-11-1 10:18:55

大马强 发表于 2021-10-30 16:58
这是哪题答案来着?
目前看来,不注释掉才会出现问题,两个缩进都一样

第14课,0基础python课;缩进是没问题的, 注释掉之后调整了
页: [1]
查看完整版本: while循环