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

Python希尔排序代码中for循环出现TypeError:float对象无法转为整数

解决希尔排序代码中的'float' object cannot be interpreted as an integer错误

问题根源在这行代码:distance = distance / 2。Python里普通除法/不管操作数是不是整数,返回结果都是浮点数。比如当distance等于1时,1/2得到0.5,这时候distance变成了浮点数,但range()函数要求参数必须是整数,所以触发了这个报错。

修复方法很简单,把普通除法换成整数除法//,修改后的代码如下:

## Shell Sort
def ShellSort(list):
    distance = len(list) // 2
    while distance > 0:
        for i in range(distance, len(list)):
            temp = list[i]
            j = i
            while j >= distance and list[j - distance] > temp:
                list[j] = list[j - distance]
                j = j - distance
            list[j] = temp
        # 用整数除法保证distance始终为整数
        distance = distance // 2
    return list

整数除法//会自动向下取整,既符合希尔排序步长逐步减半的逻辑,又能确保distance全程都是整数类型,不会再出现类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:55:18