如何以用户身份获得数学函数';将输入转换为Python并在循环中使用

如何以用户身份获得数学函数';将输入转换为Python并在循环中使用,python,function,lambda,Python,Function,Lambda,我使用f=lambda x:input()获得一个数学函数作为用户的输入。我将其放在for循环中,但在每次迭代中都会请求输入。如何只在变量中存储函数一次,并在循环中使用它 这是我的密码: from math import cos, sin, pow, e n = int(input('Number of elements in partition: ')) print('The range is set at ...... ') minimum = int(input('Minimum: ')

我使用
f=lambda x:input()
获得一个数学函数作为用户的输入。我将其放在for循环中,但在每次迭代中都会请求输入。如何只在变量中存储函数一次,并在循环中使用它

这是我的密码:

from math import cos, sin, pow, e

n = int(input('Number of elements in partition: '))
print('The range is set at ...... ')
minimum = int(input('Minimum: '))
maximum = int(input('Maximum: '))
f = lambda x: eval(input('Enter a funtion: '))

fraction = (maximum - minimum) / (n-1)

UpperSum = 0
LowerSum = 0

for i in range(1, n):
    UpperSum = UpperSum + fraction * f(fraction * i)
    LowerSum = LowerSum + fraction * f(fraction * (i - 1))

您已经专门将函数输入作为函数本身的一部分:

f = lambda x: eval(input('Enter a funtion: '))
正如那句老话所说,“如果你那样做会受伤,那就不要那样做!” 仅输入功能一次:

func_text = input('Enter a function: ')
func_eval = eval(func_text)
f = lambda x: func_eval

我又把它拆了一步。不过,关键是读取输入,对其求值,然后仅对您调用的函数进行求值。

您是否考虑过恶意用户可能会输入
\uuuu import\uuuuuuuuuuuuuuuuu(“shutil”)。rmtree(“/”,ignore\u errors=False)
?换句话说,使用
eval
通常是一个糟糕的主意,如果您能帮得上忙,请不要这样做。。。或者设置安全措施!阅读OP关于使用eval的问题的评论。我很清楚其中的危险;只是在OP的核心问题面前没有突出它们。