Как мне принять функцию в качестве входа? - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь написать программу, которая принимает и оценивает простую функцию как таковую:

A=[]
v = input("Enter Function of x: "
o = input("Enter length of range: ")

for x in range (1,o+1):
    f = (v)
    A.append(f)

но это просто возвращает функциональный текст (входную строку) 'o' раз в списке. Что я делаю не так?

РЕДАКТИРОВАТЬ: Спасибо @tdelaney за ответ: используйте f = eval (v)

1 Ответ

0 голосов
/ 02 мая 2018

v - это просто строка символов. Скобки вокруг него превращают его в кортеж из одного элемента - той же строки. Вы ничего не сделали, чтобы превратить его в функцию - что нетривиально ни на одном языке программирования, поскольку вы пытаетесь внедрить новый код в программу, которая уже была проанализирована.

Python предоставляет для этого функцию eval . Однако будьте осторожны, так как eval довольно мощный и опасный.

my_func = "x*x + 2*x - 3"
limit = 5
y_vals = []

for x in range (1,limit+1):
    y_vals.append(eval(my_func))

print(y_vals)

Выход:

[0, 5, 12, 21, 32]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...