Why does Python not read the next line (if)?

Tags: ,



I wrote the program about Pythagorean I got my answer but python doesn’t read (break) after (if) . My program title : (Special Pythagorean triplet), there is a one answer exist for ((a+b+c=1000)&(a**2 + b**2 =c**2) ) I want find abc . I know (a=200, b=375, c=425) but when program starts it never stop and it continue. It also types the product of these three numbers.

import random as r
def pyth(b,d,c):
    pyth = None
    if b**2+c**2 == d**2 :
        pyth = True
        h=d*c*b
        print(h)
        return pyth
    if b**2+d**2==c**2 :
        pyth= True
        h=d*c*b
        print(h)
        return pyth
    if d**2 + c**2 == b**2:
        pyth =True
        h=d*c*b
        print(h) 
        return pyth
   else:
       pyth = False 
       return 

a = list(range (150,1000))
b=0
c=0
d=0
h = 0
for i  in range(0,10000000):
    b = r.choice(a)
    c = r.choice(a)
    d = 1000-b-c
    e = b+c+d
if e == 1000 :
    pyth(b,d,c)
if pyth == True:
    break
else:
    continue

Answer

There’s no need for the pyth variable. You can just use return True or return False.

The if statement needs to be indented so it’s in the loop.

You need to test the value of the function call.

You don’t need else: continue. Loops automatically continue unless you break out of them. continue is only needed when you want to skip the rest of the loop body and start the next iteration; it’s not needed at the end of the body.

import random as r

def pyth(b,d,c):
    if b**2+c**2 == d**2 :
        h=d*c*b
        print(h)
        return True
    if b**2+d**2==c**2 :
        h=d*c*b
        print(h)
        return True
    if d**2 + c**2 == b**2:
        h=d*c*b
        print(h) 
        return True
    else:
       return False

a = list(range (150,1000))

for i  in range(0,10000000):
    b = r.choice(a)
    c = r.choice(a)
    d = 1000-b-c
    e = b+c+d
    if e == 1000 and pyth(b,d,c)
        break


Source: stackoverflow