密码输入检测 Python版

本文详细描述了如何通过Python编程实现密码输入流处理,利用栈模拟退格功能,并检查密码是否满足特定的安全规则。
摘要由CSDN通过智能技术生成

一、题目描述

给定用户密码输入流input,输入流中字符'<'表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。

密码安全要求如下:

        1.密码长度>=8;

        2.密码至少需要包含1个大写字母;

        3.密码至少需要包含1个小写字母;

        4.密码至少需要包含1个数字;

        5.密码至少需要包含1个字母和数字以外的非空白特殊字符;

注意空串退格后仍然为空串,且用户输入的字符串不包含空白字符。

输入描述

用一行字符串表示输入的用户数据,输入的字符串中'<'字符表示退格,用户输入的字符串不包含空白字符,例如:

WC#134<shinia<

输出描述

输出经过程序处理后,输出的实际密码字符串,并输出该密码字符串是否满足密码安全需求。两者间使用','分隔。例如:

WC#13shini,True

二、解题思路

利用栈实现退格操作,首先处理字符串,之后再判断是否符合安全需求。

三、详细代码

def deal_input(string):
    password_stack = []
    # 遍历字符串字符,如果是<则出栈,即实现退格;不是则压入栈中
    for c in string:
        if c == '<':
            password_stack.pop()
        else:
            password_stack.append(c)
    # 返回处理好的密码输入流
    return ''.join(password_stack)  # 将栈(列表)中字符元素联成字符串


def check_password_security(password):
    '''
    检查密码是否符合安全要求
    :param password: 处理好的密码输入流
    :return:bool值
    '''
    has_upper_case = any(c.isupper() for c in password)  # 大写字母
    has_lower_case = any(c.islower() for c in password)  # 小写字母
    has_digit = any(c.isdigit() for c in password)  # 数字
    has_special_char = any(not c.isalnum() for c in password)  # 特殊符号
    return len(password) >= 8 and has_upper_case and has_lower_case and has_digit and has_special_char


if __name__ == '__main__':
    string = input()
    password = deal_input(string)
    is_secure = check_password_security(password)
    print(f"{password},{is_secure}")

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值