You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现字符串存在连续三次相同字符时返回False

问题分析

  • 你原有代码的错误点:使用password.count(char)统计的是字符在整个字符串里的全局出现次数,无法识别「连续重复」的场景,比如密码A1A2A3里A总共出现3次但不连续,会被你的代码误判为不符合规则。
  • 顺便修正了你原有password函数的逻辑错误:原有逻辑会导致「不满足大写、数字、特殊字符要求的密码反而返回True」的问题,修正后所有规则都满足才会返回True,符合常规密码校验逻辑。

修改方案

用最基础的索引遍历方式判断是否存在连续三个相同字符,不需要引入任何额外库,入门阶段的知识点就能实现:

def passwordlength(password: str):
    upper = digit = special = False
    for char in password:
        if char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" :
            upper = True
        elif char in "1234567890":
            digit = True
        elif char in "$#@%!":
            special = True
    return upper and digit and special

def password(password: str):
    # 校验基础规则:必须同时包含大写字母、数字、特殊字符
    if not passwordlength(password):
        return False
    # 校验长度要求:7-11位
    if not (6 < len(password) < 12):
        return False
    # 新增规则:校验是否存在连续三个相同的字符
    # 从第3个字符(索引为2)开始遍历,每次对比当前字符和前两个字符
    for i in range(2, len(password)):
        if password[i] == password[i-1] == password[i-2]:
            # 找到连续三个相同字符,直接返回不通过
            return False
    # 所有规则都校验通过,返回通过
    return True

实现说明

我们只需要从字符串的第三个字符开始,每次拿当前位置的字符和前两个位置的字符做全等对比即可:

  • 如果三个字符完全相等,就说明出现了连续三次重复的情况,直接判定密码不合法
  • 遍历完整个字符串都没有找到连续重复的情况,就说明符合所有规则

测试示例

  • password("Aab123#") 返回 True:所有规则都满足
  • password("AAA123#") 返回 False:存在连续三个大写A
  • password("Aa1113#") 返回 False:存在连续三个数字1
  • password("Aa123##") 返回 False:存在连续三个特殊字符#
  • password("ab123#$") 返回 False:没有大写字母
  • password("Aa123456789#") 返回 False:长度超过11位

内容的提问来源于stack exchange,提问作者Joshua Bradley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:24:02