华为机考入门python3--(20)牛客20- 密码验证合格程序

分类:字符串

知识点:

  1. 遍历字符串的每个字符 for char in my_str:

  2. 可以直接比较字符范围 'a' <= char <= 'z'

  3. 列表统计元素个数 my_list.count(elem)

  4. 寻找子串 my_str.find(sub_str)

题目来自【牛客】

python 复制代码
import re  
import sys
  
def check_password(password):  
    # 检查密码长度  
    if len(password) <= 8:  
        return "NG"  

    # 判断是否至少包括大小写字母、数字和其他符号中的三种
    categories = [False] * 4
    for char in password:
        if 'a' <= char <= 'z':
            categories[0] = True
        elif 'A' <= char <= 'Z':
            categories[1] = True
        elif '0' <= char <= '9':
            categories[2] = True
        else:
            categories[3] = True
    if categories.count(True) < 3:
        return "NG"


    # 判断是否有长度大于2的重复子串
    for i in range(len(password) - 3):
        substr = password[i:i+3]
        # find() 方法是字符串类型(str)的一个方法,
        # 用于查找子字符串在主字符串中首次出现的位置。
        # 如果找到子字符串,则返回其首次出现的索引值;
        # 如果未找到子字符串,则返回-1
        if password[i+3:].find(substr) != -1:
            return "NG"

    return "OK"


for line in sys.stdin:
    password = line.strip()
    result = check_password(password)
    print(result)

by 软件工程小施同学

相关推荐
软件工程小施同学1 个月前
华为机考入门python3--(32)牛客32-密码截取
python·华为机考机试
软件工程小施同学1 个月前
华为机考入门python3--(31)牛客31-单词倒排
python·华为机考机试
软件工程小施同学1 个月前
华为机考入门python3--(28)牛客28-素数伴侣
python·华为机考机试
软件工程小施同学1 个月前
华为机考入门python3--(26)牛客26-字符串排序
华为机考机试
软件工程小施同学2 个月前
华为机考入门python3--(23)牛客23- 删除字符串中出现次数最少的字符
华为机考机试
软件工程小施同学2 个月前
华为机考入门python3--(22)牛客22- 汽水瓶
华为机考机试
软件工程小施同学2 个月前
华为机考入门python3--(21)牛客21- 简单密码
华为机考机试
软件工程小施同学2 个月前
华为机考入门python3--(19)牛客19- 简单错误记录
华为机考机试