如何要求用户在 python 3 中输入函数

How to ask a user to input a function in python 3

我正在尝试编写一个程序来查找函数的极限,但是,我找不到任何有效的方法来要求用户输入函数,或将任何类型的用户输入转换为一个函数,我发现最好的方法是使用: f= lambda n: eval(input("")
然而,使用这种方法,每次 i 运行 进入循环时,用户将被要求一遍又一遍地输入函数,在这种情况下,这将使其无法使用。我欢迎任何反馈 抱歉,如果 post 或我的英语不好,我对此表示歉意,我是新来的而不是母语为英语的人,如果它有帮助,这里是完整的代码(所有内容都是法语)

from lycee import *
n= int
# Rang actuel
f= lambda n: eval(input("veuillez introduire la fonction avec pour variable n"))
# Fonction introduite par l´usager
m= int(input("veuillez introduire la puisance de la valeur aussi grande, petite, ou proche que l´on veut"))
# Valeur max
l= int(input("veuillez introduire une limite eventuelle de la suite"))
d= int
# Prend une valeur selon la limite trouvé ou non
p= int(input("veuillez intoduire le pas"))
# Pas introduit par l´usager
x=int
# Valeur actuelle de la suite
n=1
d=0
x=0
#La limite est elle −∞?
while l>-10^m and n<10^15+1:
    n=n+p
    x=f(n)
    if n==10^15+1:
        print ("Après le calcul d’un billiard de termes, la suite ne semble pas tendre vers −∞")
    else:
        d=1
n=1
x=0
#La limite est elle +∞?
while l<10^m and n<10^15+1:
    n=n+p
    x=f(n)
    if n==10^15+1:
        print ("Après le calcul d’un billiard de termes, la suite ne semble pas tendre vers +∞")
    else:
        d=2
n=1
x=0
#La limite est elle l?
if l>=0:
    while x+l>10^-m and n<10^15+1:
        n=n+p
        x=f(n)
        if n==10^15+1:
            print ("Après le calcul d’un billiard de termes, la suite ne semble pas tendre vers l")
        else:
           d=3
else:
    while x-l>10^-m and n<10^15+1:
        n=n+p
        x=f(n)
        if n==10^15+1:
            print ("Après le calcul d’un billiard de termes, la suite ne semble pas tendre vers l")
        else:
            d=3
if d==1:
    print ("Après le calcul d’un billiard de termes, la suite semble avoir pour limite −∞")
else:
    if d==2:
        print ("Après le calcul d’un billiard de termes, la suite semble avoir pour limite +∞")
    else:
        if d==3:
            print ("Après le calcul d’un billiard de termes, la suite semble avoir pour limitel")
        else:
            print ("Après le calcul d’un billiard de termes, la suite semble ne pas avoir de limite")

您可以使用 compile 函数将用户的输入编译成 AST 对象,这样您的 lambda 函数就可以 eval AST 对象,而不是再次要求用户输入:

func = compile(input("veuillez introduire la fonction avec pour variable n"), '<input>', 'eval')
f = lambda n: eval(func)