为什么这不起作用?
import matplotlib.pyplot as plt
import numpy as np
f1 = input ('funcao1: ')
f2 = input ('funcao2: ')
x = np.linspace(-3, 3)
plt.plot(x, f1)
plt.plot(x, f2)
plt.show()
当我将f1和f2更改为函数本身时,它就起作用了。当我替换输入变量时,没有。错误:
funcao1: x**2
funcao2: x+2
Traceback (most recent call last)
File "capitao.py", line 8, in <module>
plt.plot(x, funcao1)
File "C:UsersMeanaconda3libsite-packagesmatplotlibpyplot.py", line 2840, in plot
return gca().plot(
File "C:UsersMeanaconda3libsite-packagesmatplotlibaxes_axes.py", line 1743, in plot
lines = [*self._get_lines(*args, data=data, **kwargs)]
File "C:UsersMeanaconda3libsite-packagesmatplotlibaxes_base.py", line 273, in __call__
yield from self._plot_args(this, kwargs)
File "C:UsersMeanaconda3libsite-packagesmatplotlibaxes_base.py", line 369, in _plot_args
linestyle, marker, color = _process_plot_format(tup[-1])
File "C:UsersMeanaconda3libsite-packagesmatplotlibaxes_base.py", line 146, in _process_plot_format
raise ValueError(
ValueError: Illegal format string "x**2"; two marker symbols
使用input((函数时,变量f1只是一个字符串。要将其评估为python表达式,必须使用eval((命令,如下所示:
f1 = eval(f1)
因此,您的代码应该如下所示:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3)
f1 = input ('funcao1: ')
f2 = input ('funcao2: ')
f1 = eval(f1)
f2 = eval(f2)
plt.plot(x, f1)
plt.plot(x, f2)
plt.show()