• python每天一个小练习-强壮的密码


    强壮的密码

    题目来源

    • checkio

    需求

    斯蒂芬和索菲亚对于一切都使用简单的密码,忘记了安全性。请你帮助尼古拉开发一个密码安全检查模块

    • 如果密码的长度大于或等于10个符号,至少有一个数字,一个大写字母和一个小写字母,该密码将被视为足够强大
    • 密码只包含ASCII拉丁字母或数字
    • 输入: 密码 (str, unicode)
    • 输出: 密码的安全与否,作为布尔值(bool),或者任何可以转换和处理为布尔值的数据类型。你会在结果看到转换后的结果(True 或 False)

    分析

    • 对一个字符串进行解析:

      • 长度大于等于10
      • 有一个数字
      • 有一个大写
      • 有一个小写
      • 只是字母或数字
    • 反向思路:

      • 长度大于10的数字和字母组合字符串
      • 不都是数字
      • 不都是字母
      • 不都是大写
      • 不都是小写

    想到的解决方式

    1. 正则表达式
    2. 字符串内置方法

    代码实现

    1. 第一种方式
    def check_strong(input_string):
        '''
    
        :param input_string: 
        :return: 
        '''
        import re
        flag = False
        r1 = re.search('[a-z]+',input_string)
        r2 = re.search('[A-Z]+',input_string)
        r3 = re.search("[0-9]+",input_string)
        r4 = re.search("w{10,}",input_string)
        if r1 and r2 and r3 and r4:
            flag = True
        return flag
    
    1. 第二种方式
    def check(psswd):
        '''
        
        :param psswd: 
        :return: 
        '''
        return ( (len(psswd) >= 10) and     #长度大于等于10
                (not psswd.islower()) and  # 不都是小写  (有大写)
                (not psswd.isupper()) and   # 不都是大写 (有小写)
                (not psswd.isalpha()) and   #不都是字母(有数字)
                (not psswd.isdigit()) and   # 不都是数字(有字母)
                 (psswd.isalnum()))          # 只是数字和字母
    

    知识点

    正则表达式

    参考链接

    字符串内置方法

    1. str.isalnum():至少有一个字符并且所有的字符都是字母或者数字则返回True,否则返回False(判断是否含有标点符号等特殊字符)

    2. str.isalpha():至少有一个字符并且所有的字符都是字母则返回True,否则返回False(判断全是link字母,不区分大小写)

    3. str.isdecimal():如果str中只包含十进制数字则返回True,否则返回False

    4. str.isdigit():如果str中只包含数字则返回True,否则返回F

    5. str.islower():如果str中至少包含一个区分大小写的字符,并且所有的的这些字符(区分大小写的)字符都是小写则返回T,否则返回F

    6. str.isupper();如果str中至少包含一个区分大小写的字符,并且所有的的这些字符(区分大小写的)字符都是大写则返回T,否则返回F

    7. str.lstrip():裁掉str左边的空格

    8. str.rstrip():裁掉str右边的空格

    9. str.upper():转换str中的小写字母为大写

    10. str.lower():转换str中的大写字母为小写

    11. str.capitalize():把字符串的第一个字符大写

    12. str.swapcase():反转大小写

  • 相关阅读:
    排序链表
    给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。
    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
    快速排序之三路快排
    双向链表实现
    删除链表重复元素
    链表是否是回文串
    链表逆序
    排序之归并排序
    线性表之链表实现
  • 原文地址:https://www.cnblogs.com/forsaken627/p/7019425.html
Copyright © 2020-2023  润新知