Tại sao Python không đọc dòng tiếp theo (nếu)?
Tôi đã viết chương trình về Pythagorean Tôi đã nhận được câu trả lời của mình nhưng python không đọc (ngắt) sau (nếu). Tên chương trình của tôi: (Bộ ba Pitago đặc biệt), có một câu trả lời tồn tại cho ((a+b+c=1000)&(a**2 + b**2 =c**2) )
tôi muốn tìm a b c. Tôi biết (a=200, b=375, c=425)
nhưng khi chương trình bắt đầu, nó không bao giờ dừng lại và nó vẫn tiếp tục. Nó cũng loại sản phẩm của ba số này.
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
Trả lời
Không cần pyth
biến. Bạn chỉ có thể sử dụng return True
hoặc return False
.
Câu if
lệnh cần được thụt lề để nó nằm trong vòng lặp.
Bạn cần kiểm tra giá trị của lời gọi hàm.
Bạn không cần else: continue
. Các vòng lặp tự động tiếp tục trừ khi bạn thoát ra khỏi chúng. continue
chỉ cần thiết khi bạn muốn bỏ qua phần còn lại của thân vòng lặp và bắt đầu lần lặp tiếp theo; nó không cần thiết ở phần cuối của cơ thể.
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