分类:字符串
知识点:
-
遍历字符串的每个字符 for char in my_str:
-
可以直接比较字符范围 'a' <= char <= 'z'
-
列表统计元素个数 my_list.count(elem)
-
寻找子串 my_str.find(sub_str)
题目来自【牛客】
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 软件工程小施同学