[英]Python - TypeError: 'float' object cannot be interpreted as an integer
[英]Least Common Denominator, TypeError: 'float' object cannot be interpreted as an integer,
对于给定的分母列表,通过找到它们的 LCM 来找到最小公分母。
例子
对于分母 = [2, 3, 4, 5, 6],output 应该是解(分母) = 60。
这是我的代码:
from math import gcd
def solution(denominators):
return functools.reduce(lambda x,y: x * y / gcd(x,y), denominators)
但随后它说: TypeError: 'float' object 不能解释为 integer
任何建议,如何解决?
gcd arguments 是整数,因此在 reduce 的第二次迭代中传递的参数是:
gcd(2*3/gcd(2,3)'''<-this is a float''' , 4)
正路
def solution(denominators):
return functools.reduce(lambda x,y: x * y , denominators) / functools.reduce(lambda x,y: gcd(x,y) , denominators)
首先需要导入functools
,如下:
from math import gcd
import functools
def solution(denominators):
return functools.reduce(lambda x,y: x * y / gcd(x,y), denominators)
然后让我们尝试 list test_list = [2, 3, 4, 5, 6]
,它返回:
TypeError: 'float' object cannot be interpreted as an integer
问题是在/
结果中您正在创建一个浮点数。 /
总是返回一个浮点数。 解决方案是使用 int 除法运算符//
。 //
返回一个 integer。 例如:
a = 1
b = 2
int_div = a // b
print(int_div)
返回0
。
因此解决方案是使用:
functools.reduce(lambda x,y: x * y // gcd(x,y), denominators)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.