Python第四周练习:分类统计字符、黑客语解密、密码强度判断

分类统计字符

用户输入一个字符串,分别统计其中小写字母、大写字母、数字、空格和其他字符的个数,并在一行内输出小写字母、大写字母、数字、空格和其他字符的个数。

n=input()
small=big=num=space=other=0
for i in n:
    if(ord(i)>=ord("a") and ord(i)<=ord("z")):
        small+=1
    elif(ord(i)>=ord("A") and ord(i)<=ord("Z")):
        big+=1
    elif(i>="0" and i<="9"):
        num+=1
    elif(i == " "):
        space+=1
    else:
        other+=1
print(small,big,num,space,other)
    

黑客语解密

黑客语(Leet)是从网络发展起来的一种文字书写方式。通常将英语中的字母替换为数字和特殊符号。这种方式被很多黑客组织所使用。由于具有隐密性,所以它也广泛被用于密码中。使用Leet书写的密码,不会增加密码记忆的复杂度,但却可以提高密码的强度。常见的转化规律有,$替换s,3替换e,4替换a,0替换o,1替换i等。例如,cats使用Leet书写,就变为c47$。一个纯字母的密码就转化为字母、数字构成的复杂密码了。table = ''.maketrans(before, after),这条语句可以创建映射表,str1.translate(table)语句可以将table中的字符按映射表中的顺序进行替换。
替换表如下:
0 1 3 4 5 6 7
o i e a s g t
写一个程序,用于破解一个加密的字符串。

str1 = input()
before = '0134567'
after = 'oieasgt'
table = ''.maketrans(before, after)
print(str1.translate(table))

密码强度判断

用户输入一个字符串做为密码,判断密码强度,规则为:密码长度小于8弱密码,密码长度大于等于8且包含至少2种字符为中等强度、密码包含3种字符为强、包含全部4种字符为极强。
提示:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

string.digits 可返回'0123456789'
string.ascii_lowercase 可返回'abcdefghijklmnopqrstuvwxyz'
string.ascii_uppercase 可返回'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.punctuation 可返回'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

import string
n=input()
a=b=c=d=0
if(len(n)<8):
    print("")
else:
    for i in n:
        if i in string.digits:
            a=1
        elif i in string.ascii_lowercase:
            b=1
        elif i in string.ascii_uppercase:
            c=1
        elif i in string.punctuation :
            d=1
e=a+b+c+d
if(e==2):
    print("")
elif(e==3):
    print("")
elif(e==4):
    print("极强")

 

posted @ 2020-04-01 16:13  Jessie-  阅读(2211)  评论(0编辑  收藏  举报