Perché Python non legge la riga successiva (if)?
Ho scritto il programma su Pythagorean, ho ricevuto la mia risposta ma Python non legge (si interrompe) dopo (se). Il titolo del mio programma: (tripletta pitagorica speciale), esiste una sola risposta perché ((a+b+c=1000)&(a**2 + b**2 =c**2) )
voglio trovare una b c. Lo so, (a=200, b=375, c=425)
ma quando il programma si avvia non si ferma mai e continua. Inoltre digita il prodotto di questi tre numeri.
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
Risposte
Non è necessaria la pyth
variabile. Puoi semplicemente usare return True
o return False
.
L' if
istruzione deve essere indentata, quindi è nel ciclo.
È necessario testare il valore della chiamata di funzione.
Non hai bisogno else: continue
. I loop continuano automaticamente a meno che tu non li interrompa. continue
è necessario solo quando si desidera saltare il resto del corpo del ciclo e avviare l'iterazione successiva; non è necessario alla fine del corpo.
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