为什么有一种类型

2024-04-25 07:40:38 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么:

def p3(x):
        primes = [2]
        for a in range(3, x, 2):
            sqrt = a ** 0.5
            for b in range(3, sqrt, 2):
                if a % b == 0:
                    break
            if a % b != 0:
                primes.append(a)
        return primes
    print(p3(19))

返回此:

TypeError: 'float' object cannot be interpreted as an integer, line 5

这是什么意思?我该怎么纠正?
提前感谢,
刘易斯


Tags: inforreturnifobjectdefrangesqrt
2条回答

sqrt属于float类型,因此不能与range()一起使用:

>>> range(1, 2.0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'float' object cannot be interpreted as an integer

若要修复,请将其转换为整数:

sqrt = int(a ** 0.5)

因为sqrt是一个浮点数,range需要严格的整数。

你可能想要这个:

for b in range(3, int(sqrt) + 1, 2):

相关问题 更多 >

    热门问题