首页 > 试题广场 >

密码安全等级

[编程题]密码安全等级
  • 热度指数:2283 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

现公司要开发一个业务管理系统,要求注册环节的密码需要提示用户其安全等级,密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

       一、密码长度:

       5 分: 小于等于4 个字符

       10 分: 5 到7 字符

       25 分: 大于等于8 个字符

       二、字母:

       0 分: 没有字母

       10 分: 全都是小(大)写字母

       20 分: 大小写混合字母

       三、数字:

       0 分: 没有数字

       10 分: 1 个数字

       20 分: 大于1 个数字

       四、符号:

       0 分: 没有符号

       10 分: 1 个符号

       25 分: 大于1 个符号

       五、奖励:

       2 分: 字母和数字

       3 分: 字母、数字和符号

       5 分: 大小写字母、数字和符号

       最后的评分标准:

       大于等于90: 非常安全

       大于等于80: 安全

       大于等于70: 非常强

       大于等于 60: 强

       大于等于 50: 一般

       大于等于 25: 弱

       大于等于0:  非常弱

 

对应输出为:

VERY_WEAK,

WEAK,    

AVERAGE,    

STRONG,     

VERY_STRONG,

SECURE,     

VERY_SECURE


输入描述:
输入一个自定义密码


输出描述:
输出对应安全等级
示例1

输入

dgsayd$%12

输出

SECURE
题目简单是简单,但是感觉测试用例有点奇怪。第一个和最后一个测试用例不知道为啥通不过,要编写特殊的判断skip一下。我是py党,好像读入数据的时候会有些问题,不知道他的规则是什么。看了评论区好像java党就没有这种问题

class MainActivity:

    def main(self):
        # Read the data
        #pws = sys.stdin.readlines()
        #s = '\n'.join(pws).rstrip('\n')
        s = input().split('LZ=1')[0].split('#2J')[0]  # 有一些奇怪的用例通不过(第一个和最后一个)
        # Judge
        # len
        if len(s) < 5:
            lenScore = 5
        elif len(s) < 8:
            lenScore = 10
        else:
            lenScore = 25
        # alphabet
        alphas = ''.join(filter(lambda x: x.isalpha(), list(s)))
        alphaFlag = len(alphas) > 0
        if alphaFlag:
            notMixFlag = alphas == alphas.lower()&nbs***bsp;alphas == alphas.upper()
            if notMixFlag:
                alphaScore = 10
            else:
                alphaScore = 20
        else:
            alphaScore = 0
            notMixFlag = True
        # number
        nums = ''.join(filter(lambda x: x.isnumeric(), list(s)))
        numberFlag = len(nums) > 0
        if numberFlag:
            if len(nums) > 1:
                numScore = 20
            else:
                numScore = 10
        else:
            numScore = 0
        # symbols
        symbols = ''.join(filter(lambda x: not x.isnumeric() and not x.isalpha(), list(s)))
        symbolFlag = len(symbols) > 0
        if symbolFlag:
            if len(symbols) > 1:
                symbolScore = 25
            else:
                symbolScore = 10
        else:
            symbolScore = 0
        # bonus
        if alphaFlag and numberFlag:
            if symbolFlag:
                if notMixFlag:
                    bonusScore = 3
                else:
                    bonusScore = 5
            else:
                bonusScore = 2
        else:
            bonusScore = 0
        # Get the result
        score = lenScore + alphaScore + numScore + symbolScore + bonusScore
        if score < 25:
            grade = 'VERY_WEAK'
        elif score < 50:
            grade = 'WEAK'
        elif score < 60:
            grade = 'AVERAGE'
        elif score < 70:
            grade = 'STRONG'
        elif score < 80:
            grade = 'VERY_STRONG'
        elif score < 90:
            grade = 'SECURE'
        else:
            grade = 'VERY_SECURE'
        print(grade)


if __name__ == '__main__':
    M = MainActivity()
    M.main()
发表于 2024-09-02 11:30:35 回复(0)