Pourquoi Python ne lit-il pas la ligne suivante (si)?

Jan 18 2021

J'ai écrit le programme sur Pythagorean J'ai eu ma réponse mais python ne lit pas (pause) après (si). Le titre de mon programme: (Triplet spécial de Pythagore), il existe une seule réponse car ((a+b+c=1000)&(a**2 + b**2 =c**2) )je veux trouver un b c. Je sais (a=200, b=375, c=425)mais quand le programme démarre, il ne s'arrête jamais et il continue. Il tape également le produit de ces trois nombres.

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

Réponses

2 Barmar Jan 18 2021 at 13:15

Il n'y a pas besoin de la pythvariable. Vous pouvez simplement utiliser return Trueou return False.

L' ifinstruction doit être indentée pour qu'elle soit dans la boucle.

Vous devez tester la valeur de l'appel de fonction.

Vous n'en avez pas besoin else: continue. Les boucles continuent automatiquement à moins que vous n'en sortiez. continuen'est nécessaire que lorsque vous souhaitez ignorer le reste du corps de la boucle et démarrer l'itération suivante; ce n'est pas nécessaire à l'extrémité du corps.

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