Ввод переменных в python
Смотрите, мне нужно написать код, который решает уравнения вида
(x ** 2 + a) ** (x * a) / (x - 1), решение этого уравнения можно сделать через def
def func(a,x)
return (x ** 2 + a) ** (x * a) / (x - 1)
Но как сделать такое решение с помощью x = input(), чтобы программа была универсальна для всех уравнений такого типа?
Ответы (2 шт):
Автор решения: 4500zenja
→ Ссылка
Насколько я понял, нужно ввести любое число (вещественное, скорее всего), а затем вызвать функцию с ним, верно?
Это можно сделать так:
- преобразуем полученный ввод с помощью
float() - затем подставляем получившееся число в функцию. И да, у нас может быть деление на нуль, поэтому учитываем данный случай при помощи исключений
def func(a,x):
return (x ** 2 + a) ** (x * a) / (x - 1)
x = float(input('Введите x: '))
a = float(input('Введите a: '))
try:
y = func(a, x)
print(y)
except ZeroDivisionError:
print('Нельзя делить на нуль!')
Автор решения: Stanislav Volodarskiy
→ Ссылка
Поставьте sympy (pip install sympy). И ...
import sympy
# читает формулу и преобразует её в символический вид
expr = sympy.sympify(input('formula: '))
# перебирает все переменные которые встретились в формуле
for s in expr.free_symbols:
# подставляет значение на место переменной
expr = expr.subs(s, sympy.sympify(input(f'{s}: ')))
print('=', expr)
$ python sym-calc.py formula: 2 * x x: 5 = 10 $ python sym-calc.py formula: x ** 2 x: y ** 2 = y**4
P.S. Осторожней, системы компьютерной алгебры затягивают: сперва вы играете с вычислителями, затем учитесь их настраивать, затем дополняете алгоритмы, а там уже аспирантура и конец нормальной жизни.