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

Python使用变量实现substring功能时报类型错误该如何解决?

问题说明

Python 没有独立的 substring 方法,你用到的字符串切片语法 s[start:end] 就是实现子串截取的标准方式,触发类型错误的原因是切片要求传入的 start、end 参数必须为整数,而你的代码中除法运算得到了浮点数。

错误原因

Python 3 中 / 运算符默认返回浮点数类型,比如 (3-1)/2 得到的结果是 1.0 而非整数 1,将浮点数传入切片参数就会触发类型错误。

修复方法

把代码中计算 start、end 时用到的普通除法 / 替换为整数除法运算符 // 即可,// 会返回整数结果,符合切片参数要求。

修正后的完整代码如下:

for i in range(len(s)):
    len1 = self.expandFromMiddle(s,i,i) 
    len2 = self.expandFromMiddle(s,i,i+1)
    len3 = max(len1,len2)
    if len3 > end - start:
        start = i - ((len3 - 1) // 2)
        end = i + (len3 // 2)

return s[start:end+1]

注:末尾切片增加+1是因为Python切片是左闭右开区间,原有逻辑要截取到end位置的字符需要把结束下标+1,避免丢失最后一位字符。

扩展说明
  • 整数除法//会自动向下取整,完美适配奇偶长度回文的下标计算:
    • 回文长度为奇数时(如len3=3):(3-1)//2 = 1,3//2 =1,得到的start=i-1、end=i+1,切片覆盖3个字符
    • 回文长度为偶数时(如len3=2):(2-1)//2 =0,2//2=1,得到的start=i、end=i+1,切片覆盖2个字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:42:03