如何让我的用户输入在python中允许变量?

如何让我的用户输入在python中允许变量?,python,string,variables,input,Python,String,Variables,Input,我的问题是,我的程序将无法识别用户输入,因为等式的两侧包含一个变量(x),我正在使用试错法查找该变量。它将x视为一个字符串,与定义的变量x分开。因此,如果用户在等式16的右侧输入x*x,在左侧输入x,程序将不会将x识别为变量x,而是识别为字符串x。请帮忙。无论如何,这是我的代码,(这意味着只需要解一个变量类型为x的方程): 您可以使用来计算任意Python代码。在现实世界的代码中使用这个通常是一个非常糟糕的主意,因为允许用户执行未知代码是非常危险的,即使您试图限制他们可以做什么 但是,如果您确实

我的问题是,我的程序将无法识别用户输入,因为等式的两侧包含一个变量(x),我正在使用试错法查找该变量。它将x视为一个字符串,与定义的变量x分开。因此,如果用户在等式16的右侧输入x*x,在左侧输入x,程序将不会将x识别为变量x,而是识别为字符串x。请帮忙。无论如何,这是我的代码,(这意味着只需要解一个变量类型为x的方程):

您可以使用来计算任意Python代码。在现实世界的代码中使用这个通常是一个非常糟糕的主意,因为允许用户执行未知代码是非常危险的,即使您试图限制他们可以做什么

但是,如果您确实使用它,我强烈建议您使用
globals
locals
参数来限制允许用户使用的变量。例如:

>>> x=5
>>> eval('x*x', None, {'x': x})
25
通过明确定义变量x,您可以确保用户不会尝试访问他们不应该访问的内容:

>>> eval('x*y', None, {'x': x})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'y' is not defined

一些不相关的建议:您应该了解循环(
用于范围内计数(amountSolutions)
)和列表(
solutions=[]
solutions.append(newsolution)
)。您的代码现在有很多重复,这几乎总是一个迹象,表明您需要更深入地思考这个问题。
>>> eval('x*y', None, {'x': x})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'y' is not defined
>>> import math
>>> eval('sin(x)', {'sin': math.sin}, {'x': x})
-0.95892427466313845