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

Python字符串单词反转函数问题求助:输出重复及实现困境

问题分析与解决方案

先明确你原代码的核心问题:

  • 类型注解错误:Python字符串类型是str不是string,会直接触发语法报错
  • 变量未初始化:rev_word没有初始值,第一次赋值时会抛出NameError
  • 逻辑完全偏离需求:循环中反复拼接整个字符串的反转版,导致输出重复N次(N为字符串长度)
  • 未正确识别单词边界:完全没按照题目定义的「大写字母开头到下一个大写字母前」规则分割单词

正确实现思路(不使用列表/导入)

按照题目要求的单词规则,我们需要先定位每个单词的起止位置,单独反转每个单词后拼接结果:

  1. 遍历字符串,以大写字母为标记分割单词:每个单词从大写字母开始,到下一个大写字母的前一位结束,最后一个单词到字符串末尾结束
  2. 对每个截取到的单词直接反转(Python字符串支持切片反转word[::-1])
  3. 拼接所有反转后的单词得到最终结果

修正后的代码

def reverse_sentence(s: str) -> str:
    result = ""
    start = 0
    # 从第2个字符开始遍历,寻找单词边界
    for i in range(1, len(s)):
        # 遇到大写字母,说明上一个单词到i-1结束
        if s[i].isupper():
            word = s[start:i]
            result += word[::-1]
            start = i
    # 处理最后一个单词
    last_word = s[start:]
    result += last_word[::-1]
    return result

测试验证

用你的测试用例验证:

  • reverse_sentence('Peer Rep') → 输出'reeP peR',与预期一致
  • reverse_sentence('Amazing') → 输出'gnizamA',与预期一致
  • 若第一个测试用例输入为'ATest String!'(String的首字母大写),输出为'tseTA !gnirts',符合题目定义的单词分割规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:02:02