我没有编程经验,正在学习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)
Run Code Online (Sandbox Code Playgroud)
以上给出了错误:
NameError: name 'arange' is not defined
Run Code Online (Sandbox Code Playgroud)
我不明白,因为arange()通常是根据我(很少)的理解来定义的.
Python有很多内置命令.然而,arange和plot是不是其中的一部分.这些是由numpy和提供的matplotlib.
要使代码正常工作,您可以添加:
from numpy import *
from matplotlib import *
Run Code Online (Sandbox Code Playgroud)
在代码的顶部.这不是推荐的方式.最好这样做:
import numpy
import matplotlib
Run Code Online (Sandbox Code Playgroud)
然后当你调用他们的功能
x=numpy.arange(N)
Run Code Online (Sandbox Code Playgroud)
和
matplotlib.plot(x,y)
Run Code Online (Sandbox Code Playgroud)
建议这样做的原因有时您可能有其他具有相同功能名称的模块.
一个(更)更高级的版本,甚至更好,如:
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(N)
plt.plot(x,y)
Run Code Online (Sandbox Code Playgroud)
np是标准缩写,numpy并且plt是matplotlib.pyplot(plot实际定义命令的位置)的标准缩写.这些是标准缩写,只导入部分matplotlib内容有助于减少开销.
你应该阅读numpy数组与普通python列表的对比.
您是否python通过ipython交互式shell 接触过?使用ipython它仍然可以使用不推荐使用的命令行开关-pylab,该命令行开关向用户公开matplotlib来自matplotlib.pyplot模块和所有numpy库的交互式命令.
当你把这些习惯写成你的第一个python程序时,你会发现事情更复杂......
你基本上有两个解决方案,第一个是
from pylab import *
...
Run Code Online (Sandbox Code Playgroud)
它允许你调用不合格的函数的名称,如arange和plot从你的脚本,第二个
import numpy as np
import matplotlib.pyplot as plt
# ...
x = np.arange(N)
# ...
plt.plot(x, x*x)
Run Code Online (Sandbox Code Playgroud)
即使第二个可能性是比第一个更详细,这是建议的途径:不合格进口被认为是不好的做法,因为它们污染脚本的命名空间,这是尤其如此大的模块,如matplotlib.pyplot和numpy定义数百名!
重新用于进口的名字,即np和plt,这些选择一种最佳实践一致的,你会是明智的采取,因为你会发现在网上和的例子,让1000的使用正是这些名称访问绘图和数值库.
总结一下,使用
import numpy as np
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
是一个如此常见的习语,我建议你这样做.