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

Python字符串处理:提取第一、二个空格间子串的代码bug排查

错误根因

代码的核心bug在第二个空格的查找逻辑:
你当前从字符串末尾倒序遍历找空格,拿到的是整个字符串的最后一个空格,完全不是题目要求的第二个空格。
拿测试用例user_input = "Hello World my name"举例,字符串里三个空格的索引分别是5(Hello后面)、11(World后面)、14(my后面)。倒序遍历最先碰到的是索引14的最后一个空格,所以切片[start_space_index+1: second_space_index]取的是6到14的区间,输出自然是World my,和预期结果不符。
另外原代码else分支打印字面量"Empty string"也不符合需求,需求要求仅含1个空格时输出空字符串,不是输出这串提示文字。

修正方法

保留你原有统计空格总数、查找第一个空格的正确逻辑,只需要把查找第二个空格的逻辑改成:从第一个空格的下一位开始,继续向后正序遍历,碰到的第一个空格就是目标第二个空格,再做切片即可。
修正后完整代码:

user_input = input("Enter your string: ")

space_counter = 0
for char in user_input:
    if char == " ":
        space_counter += 1

if space_counter > 1:
    first_space_idx = None
    for i in range(len(user_input)):
        if user_input[i] == " ":
            first_space_idx = i
            break

    second_space_idx = None
    # 从第一个空格的下一位开始向后找第二个空格
    for i in range(first_space_idx + 1, len(user_input)):
        if user_input[i] == " ":
            second_space_idx = i
            break

    print(user_input[first_space_idx+1: second_space_idx])
else:
    # 输出空字符串,而非提示文字
    print("")

用测试用例"Hello World my name"验证,代码会正确输出两个空格之间的子串World;输入仅含1个空格的字符串时,会正确输出空串,符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:48:10