Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么会有打字错误_Python_Python 3.x - Fatal编程技术网

Python 为什么会有打字错误

Python 为什么会有打字错误,python,python-3.x,Python,Python 3.x,为什么会这样: 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.ap

为什么会这样:

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
这是什么意思?如何更正它?
提前感谢,

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


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


因为
sqrt
是一个浮点数,
range
严格要求整数

你可能想要这个:

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

因为
sqrt
是一个浮点数,
range
严格要求整数

你可能想要这个:

for b in range(3, int(sqrt) + 1, 2):
请记住,
int(sqrt)
将向下舍入平方根,并且不包括
range()
的停止。这里需要
int(sqrt)+1
。否则,9将被视为素数。请记住,
int(sqrt)
将向下舍入平方根,并且不包括
range()
的停止。这里需要
int(sqrt)+1
。否则,9将被视为素数。
for b in range(3, int(sqrt) + 1, 2):