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
相关产品推荐
相关产品推荐

