ทำไม Python ไม่อ่านบรรทัดถัดไป (ถ้า)
ฉันเขียนโปรแกรมเกี่ยวกับ Pythagorean ฉันได้รับคำตอบ แต่ python ไม่อ่าน (แตก) หลังจาก (if) ชื่อโปรแกรมของฉัน: (Special Pythagorean triplet) มีคำตอบหนึ่งอยู่สำหรับ((a+b+c=1000)&(a**2 + b**2 =c**2) )
ฉันต้องการหาb c ฉันรู้(a=200, b=375, c=425)
แต่เมื่อโปรแกรมเริ่มต้นมันไม่เคยหยุดและดำเนินต่อไป นอกจากนี้ยังพิมพ์ผลคูณของตัวเลขทั้งสามนี้
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
คำตอบ
2 Barmar
ไม่จำเป็นต้องมีpyth
ตัวแปร คุณสามารถใช้return True
หรือreturn False
.
if
คำสั่งจะต้องมีการเยื้องดังนั้นจึงเป็นเรื่องในวง
คุณต้องทดสอบค่าของการเรียกใช้ฟังก์ชัน
else: continue
คุณไม่จำเป็นต้อง ลูปจะดำเนินต่อไปโดยอัตโนมัติเว้นแต่คุณจะแยกออก continue
จำเป็นเฉพาะเมื่อคุณต้องการข้ามส่วนที่เหลือของลูปและเริ่มการวนซ้ำครั้งถัดไป ไม่จำเป็นต้องอยู่ที่ส่วนท้ายของร่างกาย
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