Ввод переменных в 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

Насколько я понял, нужно ввести любое число (вещественное, скорее всего), а затем вызвать функцию с ним, верно?

Это можно сделать так:

  1. преобразуем полученный ввод с помощью float()
  2. затем подставляем получившееся число в функцию. И да, у нас может быть деление на нуль, поэтому учитываем данный случай при помощи исключений
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. Осторожней, системы компьютерной алгебры затягивают: сперва вы играете с вычислителями, затем учитесь их настраивать, затем дополняете алгоритмы, а там уже аспирантура и конец нормальной жизни.

→ Ссылка