Перестановщик формул симпатии не работает с буквой «Е», и я не могу понять, почему

#python #sympy

Вопрос:

Итак, как следует из названия, я делаю перестановку формул для некоторых физических формул, и я пытаюсь сделать функцию для E=h*f формулой энергии с постоянной и частотой Планка.

По какой-то причине, когда вы вводите букву «E» во вход() функции E_query (), ответ получается просто «[]». У каждой второй буквы, капитолийской, строчной, капитолийской и строчной, этой проблемы нет. Это просто буква Е, и я не могу понять, почему.

Пример другого уравнения:

 def Fg_query():
Fg_variables = ["G", "M", "m", "r", "Fg"]
print("Fg=(G*M*m)/r^2 is the formula you selected.")
print("What variable are you trying to solve for?")
Fg_userchoice = input()
G = 0.0000000000667259 
if Fg_userchoice in Fg_variables:
   G,M,m,r,Fg = symbols('G M m r Fg')
   r = (G*M*m)/r**2
   l = Fg
   r = solve(l-r, Fg_userchoice)
   l = Fg_userchoice
   print(r)

elif Fg_userchoice is not Fg_variables:
    print("Invalid input")
    Fg_query()
 

Это функция E=f*h:

 def E_query():
E_variables = ["E","h","f"]

print("E=h*f is the formula you selected.")
print("What variable are you trying to solve for?")
E_userchoice = input()
h = 6.62607004e-34

if E_userchoice in E_variables:
   h,E,f = symbols('h E f')
   r = (h*f)
   l = E
   r = solve(l-r, E_userchoice)
   l = E_userchoice
   print(r)

elif E_userchoice is not E_variables:
    print("Invalid input")
    E_query()
 

Я не знаю, проблема ли это с библиотекой Сочувствия или я что-то делаю не так, но если бы кто-нибудь мог сказать мне, что происходит, это было бы большой помощью.

Ответ №1:

SymPy иногда позволяет вам обойтись вводом строки и сделает sympify это за вас. В случае E , однако, создается числовая константа E = exp(1) . Поэтому, чтобы быть в безопасности , не отправляйте выбор пользователя в виде строки solve кому, отправляйте его как Symbol(user_choice) .