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

Python字符串循环如何跳过字符?解决空格后字符重复大写问题

解决Python字符串大小写转换的重复字符问题

问题描述

给定字符串 "quick brown fox, jumps over the lazy dog!",要求使用i in range()遍历所有字符,遇到空格时将下一个字符转为大写,最终输出应为 Quick Brown Fox, Jumps Over The Lazy Dog!。但运行自行编写的代码后,出现大写字母后跟重复小写字母的情况,例如输出为 Quick Bbrown Ffox, Jjumps Oover Tthe Llazy Ddog!,无法解决循环中重复字符的问题。

原代码

mystring = 'quick brown fox, jumps over the lazy dog!'
newstring = mystring[0].upper()
for i in range (1,len(mystring)):
    newstring = newstring + mystring [i]
    if mystring [i] == ' ':
        newstring = newstring + mystring[i+1].upper()
print (newstring)

问题原因

代码核心问题:当遇到空格时,手动将i+1位置的字符转大写后添加到newstring,但后续循环到i+1时,又会把该位置的原小写字符再次添加,导致重复。

解决方法

添加标记变量skip_next,用来标记是否需要跳过下一个字符的循环,避免重复添加。同时增加索引越界判断,防止处理到字符串末尾时出错:

修正后的代码

mystring = 'quick brown fox, jumps over the lazy dog!'
newstring = mystring[0].upper()
skip_next = False  # 标记是否需要跳过下一个字符

for i in range(1, len(mystring)):
    if skip_next:
        skip_next = False
        continue  # 跳过当前字符,避免重复
    
    if mystring[i] == ' ':
        newstring += mystring[i]
        # 确保i+1不超出字符串范围(对应老师提示的len(mystring)-1)
        if i < len(mystring) - 1:
            newstring += mystring[i+1].upper()
            skip_next = True  # 标记下一个字符需要跳过
    else:
        newstring += mystring[i]

print(newstring)

代码说明

  1. skip_next变量初始为False,默认不跳过任何字符;
  2. 当遇到空格时,先添加空格到结果字符串,再将下一个字符转大写添加,同时设置skip_next=True;
  3. 下一次循环时,如果skip_next为True,则跳过当前字符并重置标记,避免重复添加;
  4. i < len(mystring)-1的判断确保不会访问超出字符串长度的索引,符合老师的提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:01:11