Pourquoi Python ne lit-il pas la ligne suivante (si)?
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
Il n'y a pas besoin de la pyth
variable. Vous pouvez simplement utiliser return True
ou return False
.
L' if
instruction 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. continue
n'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