3
respostas

NameError: name .... is not defined

print ("***********")
print ("Calculadora")
print ("***********")

print("Essa é nossa calculadora")
sinal = input("Escolha qual sinal voccê ira usar: (x) multiplicação , (+) soma , (-) subtração , (/) divisão ")
flag1 = 0
escolha = []
while flag1 < 2 :
    escolha_numero = int(input("Agora , escolha os dois numeros que irão ser utilizados "))
    escolha.append(escolha_numero)
    flag1 += 1

operacoes_matematicas(escolha)

def operacoes_matematicas(escolha):
    if sinal == "+":
        a = escolha[0]
        b = escolha[1]

        somass = a + b
        print(somass)

    if sinal == "x":
        a = escolha[0]
        b = escolha[1]

        multiplicacao = a * b
        print(multiplicacao)

    if sinal == "-":
        a = escolha[0]
        b = escolha[1]

        subtracao = a - b
        print(subtracao)

    if sinal == "/":
        a = escolha[0]
        b = escolha[1]

        divisao = a / b
        print(divisao)

como chamar a função corretamente ? Acho que me perdi na questão do que utilizar como parâmetro e argumento

3 respostas

Oi MrLexotan, como você está? Espero que esteja tudo bem com você ^-^

O código segue uma estrutura sequencial, então devemos chamar a função depois de defini-la. No seu caso, você primeiro chama a função e somente depois a define, com isso, o Python não tem conhecimento que sobre a função que está definida posteriormente, por isso diz que ela não foi definida. Para corrigir isso, basta invocar a função após defini-la:

Obs: é recomendado colocar as funções antes de qualquer código principal, veja:

def operacoes_matematicas(escolha):
    if sinal == "+":
        a = escolha[0]
        b = escolha[1]

        somass = a + b
        print(somass)

    if sinal == "x":
        a = escolha[0]
        b = escolha[1]

        multiplicacao = a * b
        print(multiplicacao)

    if sinal == "-":
        a = escolha[0]
        b = escolha[1]

        subtracao = a - b
        print(subtracao)

    if sinal == "/":
        a = escolha[0]
        b = escolha[1]

        divisao = a / b
        print(divisao)

if __name__ == '__main__':
    print ("***********")
    print ("Calculadora")
    print ("***********")

    print("Essa é nossa calculadora")
    sinal = input("Escolha qual sinal voccê ira usar: (x) multiplicação , (+) soma , (-) subtração , (/) divisão ")
    flag1 = 0
    escolha = []
    while flag1 < 2 :
        escolha_numero = int(input("Agora , escolha os dois numeros que irão ser utilizados "))
        escolha.append(escolha_numero)
        flag1 += 1


    operacoes_matematicas(escolha)

Qualquer dúvida é só falar. Abraços e bons estudos!

Muito obrigado , para que serve o if name == 'main' no codigo ?

MrLexotan, suponha que todo esse código acima esteja em um arquivo denominado principal.py.

Com a cláusula:

if __name__ == '__main__':

Dizemos ao python para executar o código que está dentro do if __name__ == '__main__': apenas se executarmos explicitamente o arquivo principal.py. Caso tenhamos que importar o arquivo principal.py em outro arquivo, o código que está dentro de if __name__ == '__main__': não será executado. Isso é útil para controlar o escopo da execução, definindo o que será executado caso executemos o arquivo diretamente e o que será executado caso ele seja importado.

Aqui na Alura temos um artigo que aborda sobre o assunto, caso queira ler mais a respeito, pode clicar nesse link.

Qualquer coisa é só falar.