Python 如何实现忽略空格仅对每第二个字母进行大小写切换
现有代码的核心问题
原代码将字符串内所有字符(包含空格、数字、标点)都纳入遍历计数,非字母字符也会占用计数序号,直接打乱英文字母的大小写切换节奏,完全不符合“非字母不参与计数、不做任何修改”的需求。
修正实现逻辑
- 独立维护专门的英文字母计数器,仅当遍历到的字符是英文字母时,才触发计数器累加
- 对识别到的英文字母,根据计数器的奇偶值决定转换形式:每第二个出现的字母(对应字母序列里第2、4、6…位的字符)转为大写,其余字母转为小写
- 遍历到的所有非字母字符(空格、数字、标点等)直接原样保留,不做任何格式转换,也不触发计数器变化
修正后可运行代码
def spaces(test_space): letter_counter = 0 result = [] for char in test_space: if char.isalpha(): # 仅英文字母参与计数与大小写转换 processed_char = char.upper() if letter_counter % 2 == 1 else char.lower() result.append(processed_char) letter_counter += 1 else: # 非字母字符直接保留,不参与计数 result.append(char) return ''.join(result) # 测试场景验证 print(spaces('Ignore spaces and other characters')) print(spaces('Ignore spaces and 3rd characters!'))
修正后实际运行输出
iGnOrE sPaCeS aNd OtHeR cHaRaCtErS iGnOrE sPaCeS aNd 3Rd cHaRaCtErS!
内容的提问来源于stack exchange,提问作者Sekai
相关产品推荐
相关产品推荐

