#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)
.