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

Python报错'int' object has no attribute 'check_div' 求解决方案

问题分析与解决

报错原因

你代码里的核心问题是变量名冲突:

  • 一开始你创建了NombrePremier类的实例number
  • 但在for number in range(5,100)循环里,number被重新赋值为循环中的整数,覆盖了之前的实例对象
  • 当你调用number.check_div(number)时,此时的number是int类型,自然没有check_div方法,所以报错

修复后的代码

先修正变量名冲突,再优化质数判断的逻辑(原逻辑存在错误,比如用type(x)==float判断整除是无效的,Python3中/运算永远返回浮点数,应该用取模%判断余数是否为0):

# 创建程序检测0到100之间的所有质数
class NombrePremier:
    def check_div(self, number):
        # 小于2的数不是质数
        if number < 2:
            return
        # 质数的判断:从2到sqrt(number)遍历,只要有一个能整除就不是质数
        for i in range(2, int(number**0.5) + 1):
            if number % i == 0:
                return
        print(f"{number} 是质数!!")

# 实例化类
premier_checker = NombrePremier()
# 遍历0到100的数
for num in range(0, 101):
    premier_checker.check_div(num)

关键优化点

  • 变量名:把循环变量改成num,避免覆盖类实例
  • 质数判断逻辑:
    • 先排除小于2的数(质数定义是大于1的自然数)
    • 遍历范围缩小到2到sqrt(number),减少循环次数,效率更高
    • 用number % i == 0判断是否能被整除,这是正确的整除判断方式
    • 只要找到一个能整除的数就直接返回,确认不是质数;遍历完都没找到则是质数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:45:33