鱼C论坛

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

Python零基础入门学习的第14讲动动手的问题

[复制链接]
发表于 2017-3-29 14:59:31 | 显示全部楼层 |阅读模式

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

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

x
Python零基础入门学习的第14讲动动手的问题:
答案最后判断密码的安全性的时候用了一个while的循环,请问为什么要用这个循环啊,直接用if else判断不可以吗?
我是这样做的,好像也可以实现相同的功能:
password=input('请输入需要检查的密码组合:')
if password.isspace()or len(password)==0:
    password=print('您输入的密码不符合规范,请重新输入')
a=0
num=('0123456789')
character=('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
string=('~!@#$%^&*()_=-/,.?<>;:[]{}\|')
for each in password:
    if each in num:
        a+=1
        break
for each in password:
    if each in character:
        a+=1
        break
for each in password:
    if each in string:
        a+=1
        break
if a==1 or len(password)<=8:
   print('您的密码安全等级为低,请修改密码:')
elif a==2 or 8<len(password)<16:
    print('您的密码安全等级为中,请修改密码')
else:
    print('您的密码安全等级为高,请保持继续')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-30 08:41:51 | 显示全部楼层
本帖最后由 李金龙 于 2017-3-30 08:44 编辑

你只判断了一个条件,如果我输入8个以上的数字呢?16个以上的数字呢?
你只判断了a的长度,但如果需要数字+符号这种类型的密码
你是怎么判断的?数字 +字母 ,数字+字母 +符号

然后让你放弃设三个变量的想法

16< a +b or  a+c >8

这个里面也有bug可说,如果一个a 等于8个以上的数字,判断依然是无效的,莫非你要设定每一个值都大于0?太麻烦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-13 14:06:46 | 显示全部楼层
他加个while主要是为了那段只有在判定是高的时候才不出现的提示语句,
不加while直接用if else应该也可以的,但是下面这坨话你就要在代码里写两次,加了的话写一次就够了。
  print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    break
另外就是小甲鱼老师答案里写的 用高的那行来用elif 中的做else比较好
但其实应该还是有条件没概括进去的
就是passwd[0] in char == false 但是 flag_con (题主的a)==3 且len>16
我觉得应该算是个BUG吧- -!我也可能说错了,新人质疑大佬有点紧张
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-12 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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