Variable not defined Python

Asked

Viewed 936 times

1

I’m trying to run a code and all of a sudden you’re making this mistake, for example if you write "m"

Traceback (most recent call last):
  File "Energias", line 5, in <module>
    var = input("\nQue desejas calcular?: ")
  File "<string>", line 1, in <module>
NameError: name 'm' is not defined
>>> 

Here is the code:

print ("\nUtiliza as seguintes expressoes: Ec = Energia Cinetica / Ep = Energia Potencial Gravitica / Em = Energia Mecanica / v = Velocidade / m = Massa / h = Altura")
choice = "s"
while choice.lower() == "s":

    var = input("\nQue desejas calcular?: ")

    if var == "Ec":
        m = eval(input("Massa do corpo em kg: "))
        v = eval(input("Velocidade do corpo em m/s: "))
        Ec = m/2 * v**2 
        print ("\nA Energia Cinetica do corpo e\': %.5f J"%(Ec))

    if var == "Ep":
        m = eval(input("Massa do corpo em kg: "))
        h = eval(input("Altura em metros a que o corpo se encontra: "))
        g = eval(input("Acelaracao gravitica (g): "))
        Ep = m*g*h
        print ("\nA Energia Potencial Gravitica do corpo e\': %.5f J" %(Ep))

    if var == "Em":
        Emvars = input("Ja tens os valores da Energia Cinetica e da Energia Potencial Gravitica? (s/n): ")
        if Emvars == "s":
            Ec = eval(input("Energia Cinetica: "))
            Ep = eval(input("Energia Potencial Gravitica: "))
            Em = Ec + Ep 
            print ("\nA Energia Mecanica do corpo e\': %.5f J" %(Em))

        elif Emvars == "n":
            Emvars1 = input("Que Energia te falta calcular?(Ec/Ep/ambas): ")
            if Emvars1 == "Ec":
                m = eval(input("Massa do corpo em kg: "))
                v = eval(input("Velocidade do corpo em m/s: "))
                Ec = m/2 * v**2
                print ("\nJa temos a Energia Cinetica calculada!!\n")
                Ep = eval(input("Energia Potencial Gravitica do corpo: "))
                Em = Ec + Ep 
                print ("\nA Energia Mecanica do corpo e\': %.5f J" %(Em))
            if Emvars1 == "Ep":
                m = eval(input("Massa do corpo em kg: "))
                h = eval(input("Altura em metros a que o corpo se encontra: "))
                g = eval(input("Acelaracao gravitica (g): "))
                print ("\nJa temos a Energia Potencial Gravitica calculada!!\n")
                Ep = m*g*h
                Ec = eval(input("Energia Cinetica do corpo: "))
                Em = Ec + Ep 
                print ("\nA Energia Mecanica do corpo e\': %.5f J" %(Em))
            if Emvars1 == "ambas":
                m = eval(input("Massa do corpo em kg: "))
                v = eval(input("Velocidade do corpo em m/s: "))
                h = eval(input("Altura em metros a que o corpo se encontra: "))
                g = eval(input("Acelaracao gravitica (g): "))
                Ec = m/2 * v**2
                Ep = m*g*h
                Em = Ec + Ep 
                print ("\nA Energia Mecanica do corpo e\': %.5f J" %(Em))
            else:
                print("Nao entendi o que escreveste!")
    if var == "v":
        Ec = eval(input("Enegia Cinetica do corpo: "))
        m = eval(input("Massa do corpo em kg: "))
        v = (2 * Ec / m) **(1/2)
        print ("\nA velocidade do corpo e\': %.5f m/s" %(v))

    if var == "m":
        mvars = input("Que valores tens? (Ec/v ou Ep/g/h): ")
        if mvars == "Ec/v":
            Ec = eval(input("Energia Cinetica do corpo: "))
            v = eval(input("Velocidade do corpo em m/s: "))
            m = 2 * Ec / v**2
            print ("\nA massa do corpo e\': %.5f kg" %(m))

    choice = input("\n\nDesejas calcular mais alguma coisa?(s/n): ")

else:
    print("OBRIGADO POR ME USARES!\n")

1 answer

-1

You are probably using a Python 2.x interpreter to execute a code written in Python 3.x.

In Python 2.x, there were two functions for reading keyboard values: input() and raw_input(), the first reads numerical values and the second reads strings.

In Python 3.x, there is only one function: input(). It reads a keyboard string, which can then be converted to the appropriate type.

Therefore, there are 2 solutions to solve the problem:

1 - Use a Python 3.x interpreter to execute your code;

2 - Modify the function calls input() for raw_input().

References:

https://docs.python.org/3/whatsnew/3.0.html

Browser other questions tagged

You are not signed in. Login or sign up in order to post.