Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简单matplotlib问题-变量不起作用_Python_Python 3.x - Fatal编程技术网

Python 简单matplotlib问题-变量不起作用

Python 简单matplotlib问题-变量不起作用,python,python-3.x,Python,Python 3.x,为什么这不起作用 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 回溯(最近一

为什么这不起作用

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
回溯(最近一次呼叫最后一次)
文件“capitao.py”,第8行,在
plt.绘图(x,funcao1)
文件“C:\Users\Me\anaconda3\lib\site packages\matplotlib\pyplot.py”,第2840行,在plot中
返回gca().plot(
文件“C:\Users\Me\anaconda3\lib\site packages\matplotlib\axes\\u axes.py”,第1743行,在绘图中
行=[*self.\u获取行(*args,data=data,**kwargs)]
文件“C:\Users\Me\anaconda3\lib\site packages\matplotlib\axes\\u base.py”,第273行,在调用中__
从自身获得的收益。_plot_args(本,kwargs)
文件“C:\Users\Me\anaconda3\lib\site packages\matplotlib\axes\\u base.py”,第369行,在绘图参数中
线型、标记、颜色=\处理\打印\格式(tup[-1])
文件“C:\Users\Me\anaconda3\lib\site packages\matplotlib\axes\\ u base.py”,第146行,采用“进程\绘图”格式
升值误差(
ValueError:非法格式字符串“x**2”;两个标记符号
使用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()

它不起作用。名称错误:名称“x”未定义我编辑了答案。确实,x必须在eval函数之前定义。
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()