smi*_*est 0 python arrays loops
当我遇到问题时,我在Project Euler中做了问题9.我的计划已经取得了长期的进展.超过半小时.这是我的代码.
def Problem9():
a = 1
b = 1
c = 1
x = []
while(a + b + c != 1000):
a = a + 1
for i in range(0,1000):
c = 1000 - (a + b)
if a < b < c:
if (a*a) + (b*b) == (c*c):
x.append(a*b*c)
print(a*b*c)
b = b + 1
print(x)
Problem9()
Run Code Online (Sandbox Code Playgroud)
这基本上应该找出所有Pythagorean三元组加起来一千(链接到问题,以便你可以更好地理解它:https://projecteuler.net/problem=9)我的代码是否有问题,我可以修复或者我的代码根本错误吗?
既然你知道这三个数字必须加起来1000,并且a < b < c你利用这个事实来更有效地循环(并且干净利落).
def Problem9():
for a in range(1000):
for b in range(a,1000):
if a**2 + b**2 == (1000 - a - b)**2:
return a*b*(1000 - a - b)
Run Code Online (Sandbox Code Playgroud)
在这里,你a从1到1,000 循环.因为b必须大于a,所以你从b到lo超过b.然后,既然你知道了1000 = a + b + c,那么c = 1000 - a - b,你可以测试毕达哥拉斯条件,而不需要再循环.