我没有编程经验,正在学习Python课程。我现在正在经历条件限制并遇到一个我不理解其原因的问题。
我基本上只是想让某人在x的所需间隔内绘制x ^ 2,其限制是x不是负的。如果用户输入了负输入,他们会收到一条消息,说明它不被允许。否则,应绘制x与x ^ 2。
N = input('Enter upper limit of x:');
if N < 0:
print "Negative input isn't allowed."
else:
x = arange(N)
y = x*x
plot(x,y)
上面给出了错误:
NameError: name 'arange' is not defined
我不明白,因为arange()
通常是根据我的(很少)理解来定义的。
答案 0 :(得分:7)
Python有很多内置命令。但是,arange
和plot
不是其中之一。这些内容由numpy
和matplotlib
提供。
要使代码正常工作,您可以添加:
from numpy import *
from matplotlib import *
位于代码顶部。这不是推荐的方式。最好这样做:
import numpy
import matplotlib
然后当你调用他们的函数时
x=numpy.arange(N)
和
matplotlib.plot(x,y)
建议这样做的原因有时您可能有其他具有相同功能名称的模块。
更高级的(非常)更高级的版本就像:
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(N)
plt.plot(x,y)
np
是numpy
的标准缩写,plt
是matplotlib.pyplot
的标准缩写(实际定义了命令plot
)。这些是标准缩写,只导入matplotlib
的一部分有助于减少开销。
你应该读一下numpy数组与普通python列表的对比。
答案 1 :(得分:7)
您是否通过python
互动外壳了解了ipython
?使用ipython
,仍然可以使用已弃用的命令行开关-pylab
,该命令行开关matplotlib
向用户公开matplotlib.pyplot
模块中的numpy
交互式命令以及所有from pylab import *
...
库。
当你把这些习惯写成你的第一个python程序时,你会发现事情更复杂......
你基本上有两个解决方案,第一个是
arange
允许您从脚本中调用plot
和import numpy as np
import matplotlib.pyplot as plt
# ...
x = np.arange(N)
# ...
plt.plot(x, x*x)
等非限定函数名称,第二个
matplotlib.pyplot
即使第二种可能性比第一种可能性更冗长,也是建议的途径:不合格的导入被认为是不好的做法,因为它们污染了脚本的命名空间,对于像numpy
这样的大型模块尤其如此和np
定义了数百个名字!
重新使用导入的名称,即plt
和import numpy as np
import matplotlib.pyplot as plt
,这些选择是一种最佳实践协议,您明智地采用这种协议,因为您可以在net和SO 1000的示例,它们使用这些名称来访问绘图和数值库。
总结一下,使用
{{1}}
是一个如此常见的习语,我建议你这样做。
答案 2 :(得分:1)
我认为“arange”来自Numpy。如果你想要内置的Python函数,你需要使用“xrange”。如果你想要Numpy“arange”,那么你需要导入Numpy。基于您的代码片段,您正在使用Numpy,因此请添加:
from numpy import *