鱼C论坛

 找回密码
 立即注册
查看: 1199|回复: 7

[已解决]还是第十四课作业,求大大们教导

[复制链接]
发表于 2018-4-5 20:51:04 | 显示全部楼层 |阅读模式

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

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

x
我想实现的功能是只要密码输入判定为低级密码,就会陷入循环,直到输入中级或高级密码之后,但是为什么我怎么都输出不了中级和高级密码呢?是我循环做错了吗,求解

num="1234567890"
alp="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST"
spe="!@#$%^&*()_+}{|,.<>?"
flag=0
lenth=0
while lenth <=8 or flag <= 1:
    key=input("请输入你的密码:")
    key=str(key)
    lenth =len(key)
    for each in key:
        if each in alp:
            flag+=1
            break
        if each in num:
            flag+=1
            break
        if each in spe:
            flag+=3
            break
    print("密码安全性太低,请重新输入")
      
if lenth >8 and 5> flag > 1:
    print("密码安全性为中等")
elif  lenth >16 and  flag ==5  and key[0]==alp:
    print("密码的安全性为高")
最佳答案
2018-4-5 21:40:11

修改的,除了print("密码安全性太低,请重新输入")这句的问题外,其他正常。
  1. num="1234567890"
  2. alp="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST"
  3. spe="!@#$%^&*()_+}{|,.<>?"
  4. flag=0
  5. lenth=0
  6. while lenth <=8 or flag <= 1:
  7.     key=input("请输入你的密码:")
  8.     lenth =len(key)
  9.     for each in key:
  10.         if each in alp:
  11.             flag+=1
  12.             break
  13.     for each in key:
  14.         if each in num:
  15.             flag+=1
  16.             break
  17.     for each in key:
  18.         if each in spe:
  19.             flag+=1
  20.             break
  21.     print("密码安全性太低,请重新输入")
  22.       
  23. if lenth >8 and 5> flag > 1:
  24.     print("密码安全性为中等")
  25. elif  lenth >16 and  flag ==5  and key[0] in alp:
  26.     print("密码的安全性为高")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-5 20:59:56 From FishC Mobile | 显示全部楼层
while循环永远不会跳出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-5 21:07:53 | 显示全部楼层
for循环中flag最多为1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-5 21:32:03 | 显示全部楼层
BngThea 发表于 2018-4-5 20:59
while循环永远不会跳出

可以帮我修改一下吗,后来实测是可以跳到中,但永远跳不到高
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-5 21:32:44 | 显示全部楼层
冬雪雪冬 发表于 2018-4-5 21:07
for循环中flag最多为1

为什么啊?难道要在每一段前都要加个for each?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-5 21:37:07 | 显示全部楼层
猫不理 发表于 2018-4-5 21:32
为什么啊?难道要在每一段前都要加个for each?

就用3个for循环吧,如果用集合,做交集运算就简单了。
跳不到高是因为,key[0]==alp不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-5 21:37:13 | 显示全部楼层
冬雪雪冬 发表于 2018-4-5 21:07
for循环中flag最多为1

还是不行喔~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-5 21:40:11 | 显示全部楼层    本楼为最佳答案   

修改的,除了print("密码安全性太低,请重新输入")这句的问题外,其他正常。
  1. num="1234567890"
  2. alp="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST"
  3. spe="!@#$%^&*()_+}{|,.<>?"
  4. flag=0
  5. lenth=0
  6. while lenth <=8 or flag <= 1:
  7.     key=input("请输入你的密码:")
  8.     lenth =len(key)
  9.     for each in key:
  10.         if each in alp:
  11.             flag+=1
  12.             break
  13.     for each in key:
  14.         if each in num:
  15.             flag+=1
  16.             break
  17.     for each in key:
  18.         if each in spe:
  19.             flag+=1
  20.             break
  21.     print("密码安全性太低,请重新输入")
  22.       
  23. if lenth >8 and 5> flag > 1:
  24.     print("密码安全性为中等")
  25. elif  lenth >16 and  flag ==5  and key[0] in alp:
  26.     print("密码的安全性为高")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-1 02:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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