Python字符串处理代码调试:奇偶转换后子串截取偏移问题
问题分析与修复
问题根源
你的代码在处理偶数长度字符串时,修改字符串后没有更新长度变量,依然使用原字符串的长度n计算切片位置,导致截取的子串偏移。
比如原字符串长度为偶数n,处理后字符串长度变为n±1(奇数),但你还是用n//2来计算中间位置,这和处理后字符串的实际中间位置不符,自然会偏移一位。
修复后的代码
string = str(input()) n = len(string) if n % 2 != 0: m = n else: if string[-1] == '.': string = string[:-1] else: string += '.' m = len(string) # 更新为处理后的字符串长度 # 以处理后的奇数长度字符串的中间位置为中心截取三个字符 print(string[m//2 - 1 : m//2 + 2])
关键修改点
- 在处理完偶数长度的字符串后,新增
m = len(string)获取处理后的实际长度 - 统一使用
m(处理后的奇数长度)计算切片的起始和结束位置,确保以中间字符为中心截取三个连续字符
测试示例
- 输入偶数长度字符串
"hell"(长度4):处理后变成"hell."(长度5),截取结果为"ell",符合需求 - 输入偶数长度字符串
"hello."(长度6):处理后变成"hello"(长度5),截取结果为"ell",符合要求
内容的提问来源于stack exchange,提问作者Parv Naithani
相关产品推荐
相关产品推荐

