Warum liest Python die nächste Zeile nicht (wenn)?
Ich habe das Programm über Pythagorean geschrieben. Ich habe meine Antwort erhalten, aber Python liest (break) nicht nach (if). Mein Programmtitel: (Spezielles pythagoreisches Triplett), es gibt eine Antwort, denn ((a+b+c=1000)&(a**2 + b**2 =c**2) )
ich möchte ein b c finden. Ich weiß, (a=200, b=375, c=425)
aber wenn das Programm startet, hört es nie auf und geht weiter. Es gibt auch das Produkt dieser drei Zahlen ein.
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
Antworten
Die pyth
Variable ist nicht erforderlich . Sie können einfach return True
oder verwenden return False
.
Die if
Anweisung muss eingerückt sein, damit sie in der Schleife ist.
Sie müssen den Wert des Funktionsaufrufs testen.
Du brauchst nicht else: continue
. Schleifen werden automatisch fortgesetzt, sofern Sie nicht aus ihnen ausbrechen. continue
wird nur benötigt, wenn Sie den Rest des Schleifenkörpers überspringen und die nächste Iteration starten möchten. Es wird am Ende des Körpers nicht benötigt.
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