Python判断字符串含大写及数字函数报错,求无导入修复方案
代码问题分析
- 条件逻辑错误:原代码中
if char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" and "1234567890"的判断逻辑完全错误,Python中该表达式会被解析为(char in 大写字符串) and (数字字符串),而非判断字符同时属于两个集合,且非空字符串的布尔值为True,因此该条件实际仅判断字符是否为大写字母,和需求完全不符。 - 提前终止循环:循环内部无论判断结果如何都会直接return,导致仅会校验字符串的第一个字符就返回结果,无法遍历整个字符串判断是否存在目标字符。
修改后代码
def passwordOK(password: str): has_upper = False has_digit = False upper_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" digit_list = "1234567890" for char in password: if char in upper_list: has_upper = True if char in digit_list: has_digit = True return has_upper and has_digit print(passwordOK(password='roskaisHsodihf'))
修改说明
- 新增两个布尔标记位分别记录字符串中是否出现过大写字母、数字,遍历过程中只要匹配到对应字符就更新标记位状态
- 移除循环内的return语句,等整个字符串遍历完成后,再返回两个标记位的与运算结果,只有同时存在大写字母和数字时才会返回True
- 全程未导入任何第三方模块,仅使用基础的遍历和布尔运算实现,符合要求
内容的提问来源于stack exchange,提问作者Snoopy_lukasz
相关产品推荐
相关产品推荐

