पायथन अगली पंक्ति (यदि) क्यों नहीं पढ़ता है?

Jan 18 2021

मैंने पाइथागोरस के बारे में प्रोग्राम लिखा था मुझे मेरा जवाब मिल गया लेकिन (if) के बाद पाइथन (ब्रेक) नहीं पढ़ता है। मेरे कार्यक्रम का शीर्षक: (विशेष पायथागॉरियन ट्रिपलेट), एक उत्तर मौजूद है क्योंकि ((a+b+c=1000)&(a**2 + b**2 =c**2) )मैं a 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 Jan 18 2021 at 13:15

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