我在Python中弄湿了自己的脚,而且我一直在盯着过去一两个小时的代码。即使我知道我的程序已经生成了正确的数字序列,即所谓的毕达哥拉斯三元组,逻辑将不会“抢”三元组。这是欧拉问题#9。我的Python代码不能像我认为的那样工作
#https://projecteuler.net/problem=9
def main(num):
i = num
j = k = 0
while i >= 0:
while j >= k:
print(i, ",", j, ",", k, ": ", i*i, "=", j*j + k*k)
if i*i == j*j + k*k & i > j > k: # this line here should detect the triple
print("found")
print(i, ",", j, ",", k)
break
j -= 1
k += 1
i -= 1
j = 1000 - i
k = 0
main(1000)
#The Pythagorean triple is 425, 375, 200, and the sum is 1000
#The product is 31875000
这里这条线显然...
if i*i == j*j + k*k & i > j > k: #this line here should detect the triple
...没有返回true,即使程序正确生成三重(425375200)
我敢肯定,我必须错过了完全明显的东西。
此建议对我无效。我试图将整个布尔语句分解为一组if语句,而且这种策略也不起作用。 –
你还需要一些括号。我已经更新了我的答案。 – DanielGibbs
这很奇怪,它仍然不适合我。如果它为你工作,那么我一定在做错事。 –