鱼C论坛

 找回密码
 立即注册
查看: 1708|回复: 3

while循环

[复制链接]
发表于 2021-10-30 16:09:58 | 显示全部楼层 |阅读模式

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

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

x
#密码安全性检查
#低级: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循环的作用是什么?我注释掉之后结果没什么影响
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-30 16:58:28 | 显示全部楼层
这是哪题答案来着?
目前看来,不注释掉才会出现问题,两个缩进都一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 17:18:45 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-10-30 17:20 编辑
  1. def levels(p: str) -> str:
  2.     """
  3.     鉴别密码安全性等级
  4.     低级:由数字或字母其中一种组合组成,长度小于 8 位
  5.     中级:由数字、字母、或特殊字符任意两种组合组成,长度大于等于 8 位、小于 16 位
  6.     高级:由数字、字母、和特殊字符三种组合组成,以字母开头,长度大于等于 16 位
  7.     """
  8.     symbol = [chr(i) for i in [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 58,\
  9.         59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 96, 123, 124, 125, 126]]
  10.     a = any([bool(i.isdigit()) for i in p])
  11.     b = any([bool(i.isalpha()) for i in p])
  12.     c = any([bool(i in symbol) for i in p])
  13.     if len(p) < 8:
  14.         return "密码等级:低级" if all([True for i in p if i.isalnum()]) else "密码不符合任何等级"
  15.     elif len(p) < 16:
  16.         return "密码等级:中级" if (a and b and not c) or (b and c and not a) or (c and a and not b) else "密码不符合任何等级"
  17.     elif len(p) >= 16 and p[0].isalpha():
  18.         return "密码等级:高级" if a and b and not p.isalnum() else "密码不符合任何等级"
  19.     else: return "密码不符合任何等级"

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

  23. if __name__ == "__main__":
  24.     main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-1 10:18:55 | 显示全部楼层
大马强 发表于 2021-10-30 16:58
这是哪题答案来着?
目前看来,不注释掉才会出现问题,两个缩进都一样

第14课,0基础python课;缩进是没问题的, 注释掉之后调整了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 01:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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