我刚刚开始用python编程和一般编程。 我制定了以下准则:
for a in range(1,1001):
for b in range(1,1001):
c2=(a**2)+(b**2)
c=c2**0.5
if type(c) == int and a+b+c == 1000:
print(a*b*c)
寻找一个a+b+c=1000的pitagorean集,但没有返回。代码运行但不打印任何内容并结束。 这是一个euler9的问题,我知道我可以在互联网上找到解决方案,但我真的想知道为什么我提出的这个特殊的一个不起作用。在我的理解中,它应该检查1000范围内的每一对a和b,并检查是否有“a^2+b^2=c^2”,c的平方根是整数,a+b+c=1000。 谢谢你的帮助
尝试设置c作为1000-a-b的结果这应该是一个整数。比比较c和a^2+b^2的幂。当你试图做一个平方根的时候,它通常不会给出一个整数,所以它的类型总是float。如果删除比较c type和int的代码应该可以工作。 如果要检查值是否为整数,应尝试使用内置函数is\ u integer()。
c.is_integer()
需要注意的几点:
1)
c
的类型将始终是一个float。因此,type(c) == int
将始终计算为False
,并且您的print语句将永远不会被命中。这是因为你的力量是一个浮点数。一般来说,平方根只能合理地表示为浮点数。你知道吗2)您几乎从不想在Python中检查变量的类型,您的情况也不例外。您要做的是检查
c
是否有一个值是整数,而不是检查c
的类型是否是整数。为此,请使用内置的is_integer
。举个例子:祝你解决问题好运。你知道吗
顺便说一句,这是毕达哥拉斯语,不是皮塔哥拉斯语。你知道吗
相关问题 更多 >
编程相关推荐