鱼C论坛

 找回密码
 立即注册
查看: 851|回复: 2

[已解决]求助 关于循环分支条件设置

[复制链接]
发表于 2018-5-25 23:33:40 | 显示全部楼层 |阅读模式

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

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

x
模仿小甲鱼在python零基础,第14课的作业写了一段代码。
测试时发现怎么都测不出来等级为“高”的评价。
请大神们帮忙分析

请看原题

以下为我写的代码:


  1. # 密码安全性检查代码
  2. #
  3. # 低级密码要求:
  4. #   1. 密码由单纯的数字或字母组成
  5. #   2. 密码长度小于等于8位
  6. #
  7. # 中级密码要求:
  8. #   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
  9. #   2. 密码长度不能低于8位
  10. #
  11. # 高级密码要求:
  12. #   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
  13. #   2. 密码只能由字母开头
  14. #   3. 密码长度不能低于16位

  15. password = input('请输入需要检查的密码组合:')
  16. upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  17. lower = 'abcdefghijklmnopqrstuvwxyz'
  18. symbol = '~!@#$%^&*()-=\_+|<>?,./'
  19. num ='1234567890'
  20. long = len(password)
  21. longlevel = 0
  22. conlevel = 0

  23. while(long == 0):
  24.     password = input('不能为空,请重新输入:')
  25.     long = len (password)

  26. if long <= 8:
  27.     longlevel = 1
  28. elif 8 < long < 16:
  29.     longlevel = 2  
  30. elif long > 16:
  31.     longlevel = 3

  32. for each in password:
  33.     if each in upper:
  34.         conlevel += 1
  35.         break

  36. for each in password:
  37.     if each in lower:
  38.         conlevel += 1
  39.         break

  40. for each in password:
  41.     if each in symbol:
  42.         conlevel += 1
  43.         break

  44. for each in password:
  45.     if each in num:
  46.         conlevel += 1
  47.         break

  48. while 1:
  49.     print('您的密码安全组别为:',end='')
  50.     if longlevel == 1 or conlevel == 1:
  51.         print('低')
  52.     elif longlevel == 3 and conlevel == 3 and (password[0] in upper):
  53.         print('高')
  54.         print('不错哦')
  55.         break
  56.     else:
  57.         print('中')

  58.     break
复制代码
最佳答案
2018-5-26 09:09:24
hi 原因如下

  1. while 1:
  2.    
  3.     print('您的密码安全组别为:',end='')
  4.     if longlevel == 1 or conlevel == 1:
  5.         print('低')
  6.     elif longlevel == 3 and conlevel >= 3 and (password[0] in upper):    # here conlevel存在大于3的场景;另外,此处的代码要求 首字母必须大写才能算'高'
  7.         print('高')
  8.         print('不错哦')
  9.         break
  10.     else:
  11.         print('中')

  12.     break
复制代码


请输入需要检查的密码组合:A//3434343333333333333333333aaa
您的密码安全组别为:高
不错哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-26 09:09:24 | 显示全部楼层    本楼为最佳答案   
hi 原因如下

  1. while 1:
  2.    
  3.     print('您的密码安全组别为:',end='')
  4.     if longlevel == 1 or conlevel == 1:
  5.         print('低')
  6.     elif longlevel == 3 and conlevel >= 3 and (password[0] in upper):    # here conlevel存在大于3的场景;另外,此处的代码要求 首字母必须大写才能算'高'
  7.         print('高')
  8.         print('不错哦')
  9.         break
  10.     else:
  11.         print('中')

  12.     break
复制代码


请输入需要检查的密码组合:A//3434343333333333333333333aaa
您的密码安全组别为:高
不错哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-26 12:04:39 From FishC Mobile | 显示全部楼层
thexiosi 发表于 2018-5-26 09:09
hi 原因如下



谢谢,一共四种可能,我忽略了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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