鱼C论坛

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

第14课课后题引申出来的问题

[复制链接]
发表于 2016-1-20 00:27:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Lnan95 于 2016-1-20 17:25 编辑

14课的课后题有一个密码锁强度的习题折腾了一个晚上,实在想不出来,只好来论坛上求助了
感觉习题的答案有一些不足,比如输入两次空格或按两次回车一样能输入方程,没有过滤中文字符等等,强迫症简直不能忍啊!但是小弟我怎么也没能把这两个地方给修正,好不容易修正了错误(代码中圈红处一直在修改),数据又一直在第一个while里面不出来,头都大了。。
大家做while或for循环时候是怎么不把自己绕晕的呢

代码如下:
print("-------------------密码安全性检验器-------------------")
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
pwtext = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'''
password = input("请输入您的密码:")
length = 0
fe = 0
#回车检验
while True:
    if len(password) == 0:
        password = input("您的输入有误,请输入:")
    else:
        for i in password:
            test1 = pwtext.find(i)
            if test1 < 0:
                print(r"""字符输入仅限英文字符!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>""")
                password = input("请再输入您的密码:")
                continue
            else:
                continue
        break

print("输入格式正确!")
#密码安全性检验1
if password.isdigit() or password.isalpha() or len(password) <= 8:
    sa = 0
elif 16 >= len(password) > 8:
    sa = 1
elif len(password) > 16:
    sa = 2
#密码安全性检验2
if not (password.isdigit() or password.isalpha()):
    fe += 1
while not (password.isdigit() or password.isalpha()):
    for i in password:
        test1 = symbols.find(i)
        if test1 >= 0:
            fe += 1
            break
    break
safe = sa + fe
if sa==0 :
    print("密码安全系数为:低级\n提示:当前安全系数较低,提高密码复杂度即可提高安全系数")
elif safe >= 1 or safe <= 2:
    print("密码安全系数为:中级\n提示:提高密码复杂度即可提高安全系数")
elif safe == 4:
    print("密码安全系数为:高级\n提示:请继续保持")
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-20 10:10:29 | 显示全部楼层
我也刚刚做完(* ̄︶ ̄*)

小甲鱼这些题只是为了帮助你强化联系,没必要强迫症,具体应用的时候你就做出来了,你现在做不出来至少因为没有压迫感而已(* ̄︶ ̄*)

不过纠错都是经验问题,不同的人有不同的方法,和很多问题一样我觉得你这个问题也属于简单逻辑问题而不是概念问题,所以应该自己理清楚,这样才能提高自己,我相信你肯定有能力自己完成!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-20 17:17:32 | 显示全部楼层
四十二 发表于 2016-1-20 10:10
我也刚刚做完(* ̄︶ ̄*)

小甲鱼这些题只是为了帮助你强化联系,没必要强迫症,具体应用的时候你就做 ...

又搞了一天我终于弄出来了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-20 17:19:05 | 显示全部楼层
while True:
    if len(password) == 0:
        password = input("您的输入有误,请输入:")
        continue
    #↑回车检验↓字符检验
    else:
        for i in password:
            test1 = pwtext.find(i)
        if test1 < 0:
            print(r"""字符输入仅限英文字符!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>""")
            password = input("请再输入您的密码:")
            continue

自己弄出来了,是缩进逻辑的问题。

评分

参与人数 1鱼币 +5 收起 理由
冬雪雪冬 + 5 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-20 18:26:42 | 显示全部楼层
Lnan95 发表于 2016-1-20 17:19
while True:
    if len(password) == 0:
        password = input("您的输入有误,请输入:")

自己反复练习,仔细看出错信息,仔细调试,水平一定能与日俱增。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2016-1-21 08:19:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 19:10:45 | 显示全部楼层
冬雪雪冬 发表于 2016-1-20 18:26
自己反复练习,仔细看出错信息,仔细调试,水平一定能与日俱增。

感谢版主大大
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 19:11:24 | 显示全部楼层
wanglong12341 发表于 2016-1-21 08:19
一步一步调试 我就是那么做的

哈哈 是的,每一个步骤都加个print,看是那里出错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 07:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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