鱼C论坛

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

第14讲课后题最后一题

[复制链接]
发表于 2014-1-16 15:24:45 | 显示全部楼层 |阅读模式

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

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

x
temp = input('请输入一个密码:')
digit = '1234567890'
charcter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
others = '''#~!@$%^&*()_=-/,.?<>;:[]{}\|\\'''
length = len(temp)
countA = 0
list1 = []
for each in temp:
    if temp.isdigit() or temp.isalpha:
            countA = 1
    if length <= 8:
        countA = 1
    if 8 < length < 16:
        countA = 0
        if each in digit:
            countA += 1
        if each in charcter:
            countA += 1
        if each in others:
            countA += 1
    if length >= 16:
        countA = 0
        list1.append(each)
        if list1 in characer:
            countA += 1
        if each in digit:
            countA += 1
        if each in charcter:
            countA += 1
        if each in others:
            countA += 1

if countA == 1:
    print('密码等级为->低')
if countA == 2 or 3:
    print('密码等级为->中')
if countA == 4:
    print('密码等级为->高')
print('''1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
    2. 密码只能由字母开头
    3. 密码长度不能低于16位''')

为什么会这样。。我看了半天,还是没找出问题
请输入一个密码:111111111111111
密码等级为->低
密码等级为->中
1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
    2. 密码只能由字母开头
    3. 密码长度不能低于16位

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

使用道具 举报

发表于 2014-1-18 10:33:35 | 显示全部楼层
还是20讲那个回答,逻辑上搞不清楚,条件互相覆盖了,刚开始学习编程很容易这样,思考不够细致,多做做练习题就好:
  1. if temp.isdigit() or temp.isalpha:
  2.             countA = 1
复制代码
  1. if each in digit:
  2.             countA += 1
复制代码
产生覆盖,论坛发代码的话可以使用代码格式哦,就是点“<>”按钮~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-19 04:20:37 | 显示全部楼层

小甲鱼您好,这一题您在题中给的输出结果:
当输入I_love_FishC.com时,会显示为高等级,但是这个字符串只有字母及特殊字符并没有数字,应该是与题中高等级的定义是由出入的吧(数字,字母及特殊字符)?
我想这个密码应该是中级的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-19 15:23:07 | 显示全部楼层
五星上将 发表于 2014-1-19 04:20
小甲鱼您好,这一题您在题中给的输出结果:
当输入I_love_FishC.com时,会显示为高等级,但是这个字符串只 ...

根据您的输入测试了一下,是显示为中哦~

请输入需要检查的密码组合:I_love_FishC.com
您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
            1. 密码必须由数字、字母及特殊字符三种组合
            2. 密码只能由字母开头
            3. 密码长度不能低于16位'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-19 16:46:43 | 显示全部楼层
小甲鱼 发表于 2014-1-19 15:23
根据您的输入测试了一下,是显示为中哦~

请输入需要检查的密码组合:I_love_FishC.com

嗯,是的,我输出的结果也是中级,您给出的题目中有些条件是晦涩的,比如字符长度的限制,以及组合的形式,比如如果只是如果符合高级的1,3两个定义,但是不是以字母开头的,但却又好像高于中级的定义,那我写的程序是判断为中级的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-24 12:52:53 | 显示全部楼层
小甲鱼 发表于 2014-1-18 10:33
还是20讲那个回答,逻辑上搞不清楚,条件互相覆盖了,刚开始学习编程很容易这样,思考不够细致,多做做练习 ...

为什么会覆盖呢。我一个用的是temp整个字符串。一个用的是each啊。我还在每次countA使用前初始化了它。同一缩进不是意味着按顺序执行吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-24 15:11:57 | 显示全部楼层
FavouritePython 发表于 2014-1-24 12:52
为什么会覆盖呢。我一个用的是temp整个字符串。一个用的是each啊。我还在每次countA使用前初始化了它。同 ...

很容易嘛,用自己的大脑模拟CPU,假设你的输入,然后跟着指令一条条走,就知道为嘛为打印两个啦~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-2 02:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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