如果我执行以下代码,我会收到类型错误,错误是类型错误:'float'对象无法解释为整数



这是我的挑战:

编写一个程序来找出一个数字的质因数。示例:56 的质因数 - 2, 2, 2, 7

这是我的代码:

num = 64
def factors (n):
while n % 2 == 0:
print(2)
n = n/2
for i in range (3,n):      
if n % i == 0:
print(i)
n = n/i
if n > 2:
print(n)
factors (num)

与其使用,不如使用\是浮点除法或简称division\是整数除法或称为floor division。 参考

3 / 2 = 1.5
3 // 2 = 1  

因此,您的代码如下所示:

num = 64
def factors (n):
while n % 2 == 0:
print(2)
n = n//2
for i in range (3,n):      
if n % i == 0:
print(i)
n = n/i
if n > 2:
print(n)
factors (num)

你得到了这个错误,因为范围对象将整数作为参数,使用n = n/2会将 n 转换为浮点数,所以正如 Thierry Lathuille 所说,将n = n/2替换为n = n//2

正如其他人所提到的,整数除法很重要,但最重要的是您的算法无法正确检测 2>多个因子。

def factors (n):
for i in range (2, n):
while (n % i == 0):
print(i)
n //= i

尝试以下操作(即,将"/"替换为"//"以获得整数而不是浮点数)

num = 64
def factors(n):
while n % 2 == 0:
print(2)
n = n // 2  # -------> Do the integer Division.
for i in range(3, n):
if n % i == 0:
print(i)
n = n / i
if n > 2:
print(n)

factors(num)

相关内容

最新更新