importing a file containing a function that I wrote: does not see global variable

1

ConstroiMatriz.py file:

"""
Escreva uma função que recebe um inteiro m e outro n e com isso
constrói uma matriz mxn
"""
matrix = []

def main():
    m = int(input("Digite o número de linhas da matriz: "))
    n = int(input("Digite o número de colunas da matriz: "))


    def matriz(m,n):

        for i in range(1,m+1):
            linha = []
            for j in range(1,n+1):

                x= int(input("Digite o valor ({},{}): ".format(i,j)))
                linha.append(x)

            global matrix    
            matrix.append(linha)

        return matrix


    print(matriz(m,n))


if __name__ == "__main__":
    main()

ExchangeElementsMyPath.py file:

"""
Escreva uma função que troca um elemento por outro numa matriz
"""

#from ConstroiMatriz import matriz ##ConstroiMatriz.py que eu fiz
import ConstroiMatriz


def troca():

    pos1 = int(input("Digite a linha do elemento a ser trocado: "))
    pos2 = int(input("Digite a coluna do elemento a ser trocado: "))
    pos3 =int(input("Digite a linha do elemento a ser trocado: "))
    pos4 = int(input("Digite a coluna do elemento a ser trocado: "))

    global matrix

    matrix[pos1][pos2], matrix[pos3][pos4] = matrix[pos3][pos4],matrix[pos1][pos2]



matriz(1,1)    
troca()

Purpose: To use the matrix (m, n) function defined in ConstroiMatrix.py in the Program.ExchangeMatrix.py program and thus change 2 elements of the matrix created in ConstroiMatrix.

When I run the ExchangeStyle.py file, I get the error:

matriz(1,1)
NameError: name 'matriz' is not defined

Any suggestions?

    
asked by anonymous 26.03.2018 / 01:06

1 answer

2

The function def matriz(m, n) is declared inside the function main() , so you can not access def matriz(m, n) from anywhere else within main() .

To solve, just take def matriz(m, n) from within main() .

def matriz(m,n):
    for i in range(1,m+1):
        linha = []
        for j in range(1,n+1):

            x= int(input("Digite o valor ({},{}): ".format(i,j)))
            linha.append(x)

        global matrix    
        matrix.append(linha)

    return matrix

def main():

    m = int(input("Digite o número de linhas da matriz: "))
    n = int(input("Digite o número de colunas da matriz: "))

    print(matriz(m,n))

if __name__ == "__main__":
    main()
    
26.03.2018 / 01:12