-1
for a in range(1,1000):
    for b in range(1,1000):
        c2 = a**2 + b**2
        c = c2**0.5

        if a + b + c == 1000:
            answer = a * b * c
            print(answer)
            break

answer gets printed twice, meaning the loop still goes after break. How do I stop the whole loop after I get my desired answer?

  • Use a boolean in the outer loop to know the inner has found it, or do it inside a method and use `return` – azro May 10 '20 at 13:18

2 Answers2

1

If you can put all your code in a function, you can call return when the value is result is computed by the inner loop. It will look something like this,

def fun():
    for a in range(1,1000):
        for b in range(1,1000):
            c2 = a**2 + b**2
            c = c2**0.5

            if a + b + c == 1000:
                answer = a * b * c
                return answer

print(fun())

Or you can set a flag to stop the outer loop like this,

stop_now = False
for a in range(1, 1000):
    for b in range(1, 1000):
        c2 = a ** 2 + b ** 2
        c = c2 ** 0.5

        if a + b + c == 1000:
            answer = a * b * c
            print(answer)
            stop_now = True
            break
    if stop_now:
        break
Sreeram TP
  • 11,346
  • 7
  • 54
  • 108
0

Yet another way:

for a in range(1,1000):
    for b in range(1,1000):
        c2 = a**2 + b**2
        c = c2**0.5
        if a + b + c == 1000:
            answer = a * b * c
            print(a, b, c, answer)
            break
    else:
        continue
    break
Błotosmętek
  • 12,717
  • 19
  • 29