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

简单除数代码报错:TypeError: 'float'对象无法被解释为整数

解决TypeError: 'float' object cannot be interpreted as an integer的问题

嘿,我来帮你搞定这个报错!咱们先拆解一下问题出在哪:

你代码里的user_number是用float(input(...))获取的,所以不管用户输入的是整数还是小数,它都是float类型。然后你用num = user_number//2,哪怕结果是整数(比如输入4.0时得到2.0),这个num依然是float类型。

接下来你写了round(num,0)和int(num),但你没有把这两个操作的结果重新赋值给num!这两行代码相当于只算了个值但没存下来,num还是原来的float。当你把float类型的num传给range(divisor, num)时,range要求参数必须是整数,自然就触发了那个TypeError。

修正后的代码

def main(): 
    user_number = float(input("Enter a number: ")) 
    # 直接将//运算的结果转为整数,替代无效的round和int操作
    num = int(user_number // 2)  
    print(num) 
    divisor = 1 
    # 改成num+1,让range包含num本身(避免漏掉num自己这个除数)
    for divisor in range(divisor, num + 1):  
        if num % divisor == 0: 
            print(divisor) 
while True: 
    main()

关键修改点说明

  • 把num的赋值改成int(user_number // 2),一步到位得到整数类型的num,这样传给range就不会报错了。
  • 删掉了无效的round(num,0)和int(num)——因为这两个函数不会修改原变量,必须把结果赋值回去才有用,直接在赋值时转int更简洁。
  • 额外优化了range的第二个参数:原来的range(divisor, num)是左闭右开区间,比如num=5时只会遍历1-4,会漏掉5这个除数,改成num+1就能覆盖到num本身了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:47:45