鱼C论坛

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

[已解决]零基础之第15讲作业之经典不知错在哪??(最新)

[复制链接]
发表于 2021-9-6 11:46:37 | 显示全部楼层 |阅读模式

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

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

x
print('~~~~~~~~~~密码安全性检查代码~~~~~~~~~~')
A=input('请输入需要检查的密码组合:')
zimu='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
shuzi='0123456789'
listA=[]
for i in A:#将字符串转化成列表,方便操作。
    listA.append(i)
fu='~!@#$%^&*()_=-/,.?<>;:[]{}|\\'
listB=listA[:]#创造替身
a=0
b=0
c=0
d=0
for i in listA:#判断是否有特殊字符
    if i in fu:
        a+=1
        break
for o in listA:#判断是否有数字
    if o in shuzi:
        b+=1
        break
for p in listA:#判断是否有字母
    if p in zimu:
        c+=1
        break
d=a+b+c
for ii in listB:#去除特殊字符
    if ii in fu:
        listB.remove(ii)
for oo in listB:#去除字母
    if oo in zimu:
        listB.remove(oo)
for pp in listB :#去除数字
    if pp in shuzi:
        listB.remove(pp)
if len(listB)==0 :
    if (int(d)==3) and (A.istitle()) and (len(listA)>=16):
        print('您的密码安全级别评定为:高\n请继续保持')
    if int(d)==2 and  len(listA)>=8:
        print('您的密码安全级别评定为:中\n请按以下方式提升您的密码安全级别:\n\t1. 密码必须由数字、字母及特殊字符三种组合\n\t2. 密码只能由字母开头\n\t3. 密码长度不能低于16位')
    if int(d)==1 and int(c)==0 and len(listA)<=8:
        print('您的密码安全级别评定为:低\n请按以下方式提升您的密码安全级别:\n\t1. 密码必须由数字、字母及特殊字符三种组合\n\t2. 密码只能由字母开头\n\t3. 密码长度不能低于16位')
else:
    print('您输入了其它字符,请按照以下要求输入:\n\t1. 密码必须由数字、字母及特殊字符三种组合\n\t2. 密码只能由字母开头\n\t3. 密码长度不能低于16位')

run:
请输入需要检查的密码组合:asxansx8738475{}[]
您输入了其它字符,请按照以下要求输入:
        1. 密码必须由数字、字母及特殊字符三种组合
        2. 密码只能由字母开头
        3. 密码长度不能低于16位


最佳答案
2021-9-6 13:31:10
本帖最后由 白two 于 2021-9-6 13:33 编辑

用 for 循环遍历的时候最好不要删除元素
例如:
>>> a = [2,4,6,8,10,12,14,16,18,20]
>>> for i in a:
        if i % 2 == 0:
                a.remove(i)

                
>>> print(a)
[4, 8, 12, 16, 20]

因为你遍历的时候把这个元素删除了,那么下一个元素就会顶上来,你遍历的下一个元素将会是原本下一个的后面那个。
你去除元素时,如果有两个都满足去除条件的挨在一起,那么后面那个就会因为这个原因不会被剔除,所以最后字符串长度不会为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 13:31:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 白two 于 2021-9-6 13:33 编辑

用 for 循环遍历的时候最好不要删除元素
例如:
>>> a = [2,4,6,8,10,12,14,16,18,20]
>>> for i in a:
        if i % 2 == 0:
                a.remove(i)

                
>>> print(a)
[4, 8, 12, 16, 20]

因为你遍历的时候把这个元素删除了,那么下一个元素就会顶上来,你遍历的下一个元素将会是原本下一个的后面那个。
你去除元素时,如果有两个都满足去除条件的挨在一起,那么后面那个就会因为这个原因不会被剔除,所以最后字符串长度不会为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-6 18:34:51 | 显示全部楼层
白two 发表于 2021-9-6 13:31
用 for 循环遍历的时候最好不要删除元素
例如:

谢谢,爱你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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