1

Тема: Не виконується перехід між інструкціями.

Є програма, яка містить 3 інструкції, і коли хочу запустити з-під головної інструкції любу іншу інстукцію, вибиває:

Traceback (most recent call last):
  File "D:\Python34\Метод Крамера.py", line 25, in <module>
    main()
  File "D:\Python34\Метод Крамера.py", line 20, in main
    fl()
NameError: name 'fl' is not defined

Перехід хочу здійснити за допомогою return.

def main():
        print('   ----')
        print('   - a11x1+a12x2+a13x3=b1')
        print('   -')
        print('-    a21x1+a22x2+a23x3=b2')
        print('   -')
        print('   - a31x1+a32x2+a33x3=b3')
        print('   ----')
        print('Твоя матриця 3х4 містить тільки цілі значення?')
        while True:
            choice = input('Якщо цілі, введи Так/Y, якщо дробові - Ні/N: ')
            if choice in ['Y', 'YES', 'Yes', 'yes', 'так', 'Так']:
                break
                return integer
            if choice in ['N', 'NOT', 'Not', 'not', 'ні', 'Ні']:
                break
                return fl
            if not choice in ['Y', 'YES', 'Yes', 'yes', 'так', 'Так'] or ['N', 'NOT', 'Not', 'not', 'ні', 'Ні']:
                print('Ти ввів не вірне значення!')
        fl()
        integer()
        s()

if __name__ == '__main__':
    main()

def fl():
        a11 = float(input('Введи значення а11: '))
        a12 = float(input('Введи значення а12: '))
        a13 = float(input('Введи значення а13: '))
        a21 = float(input('Введи значення а21: '))
        a22 = float(input('Введи значення а22: '))
        a23 = float(input('Введи значення а23: '))
        a31 = float(input('Введи значення а31: '))
        a32 = float(input('Введи значення а32: '))
        a33 = float(input('Введи значення а33: '))
        b1 = float(input('Введи значення b1: '))
        b2 = float(input('Введи значення b2: '))
        b3 = float(input('Введи значення b3: '))

        d = a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*a33+a23*a32*a11)
        print('a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*33+a23*a32*a11)','\n')
        print('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (a11,a22,a33,a12,a23,a31,a21,a32,a13,a13,a22,a31,a12,a21,a33,a23,a32,a11), '\n')
        print('Значення нульового трикутника: ',d,'\n')
        d1 = b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)
        print ('b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)')
        print ('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (b1,a22,a33,a12,a23,b3,b2,a32,a13,a13,a22,b3,a12,b2,a33,a23,a32,b1), '\n')
        print('Значення першого трикутника: ',d1,'\n')
        d2 = a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)
        print('a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)')
        print('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (a11,b2,a33,b1,a23,a31,a21,b3,a13,a13,b2,a31,b1,a21,a33,a23,b3,a11), '\n')
        print('Значення першого трикутника: ',d2,'\n')
        d3 = a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)
        print('a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)')
        print('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (a11,a22,b3,a12,b2,a31,a21,a32,b1,b1,a22,a31,a12,a21,b3,b2,a32,a11), '\n')
        print('Значення першого трикутника: ',d3,'\n')
        return s


def s():
        x1=d1/d
        print('d1/d =', x1, '\n')
        x2=d2/d
        print('d2/d =', x2, '\n')
        x3=d3/d
        print('d3/d =', x3, '\n')

2

Re: Не виконується перехід між інструкціями.

                break
                return integer

Як ви гадаєте, що робить оператор break? А що - return? Передивіться підручник.

Подякували: Q-bart, Nikson2