Почему Python не читает следующую строку (if)?

#python #if-statement

#python #if-statement

Вопрос:

Я написал программу о Pythagorean, я получил свой ответ, но python не читает (прерывает) после (if) . Название моей программы: (Специальный пифагорейский триплет), существует один ответ, потому ((a b c=1000)amp;(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
 

Комментарии:

1. break может использоваться только в for while цикле or . Ваш break не находится в цикле.

2. Вы не должны использовать одно и то же имя pyth для переменной и функции. Переменная заменяет функцию.

3. Вы правильно скопировали отступ? Вы должны получать сообщение об ошибке, когда break и continue находятся вне цикла.

4. if pyth == True никогда не будет успешным. pyth это функция, а не значение, возвращаемое функцией.

5. @Grismar Почему? Он хочет, чтобы цикл останавливался, когда функция возвращает успех.

Ответ №1:

Переменная не нужна 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