使用VPython时Python出错
我在尝试导入任何东西时遇到了错误,或者当我想把numpy的导入语句改成其他形式,比如from numpy import arange改成from numpy import *,或者添加其他导入语句时,都会出问题。
我还不能让我的半径变成随机的小数,系统提示说r = random.uniform(0,2)出现了AttributeError: 'builtin_function_or_method' object has no attribute 'uniform'。
这是我在尝试修改导入语句时遇到的错误:
Traceback (most recent call last):
line 13, in <module>
rate(5)
TypeError: rate() missing 3 required positional arguments: 'pmt', 'pv', and 'fv'
代码:
from visual import *
from math import cos,sin,pi
from numpy import arange
from random import *
s = sphere(pos=[1,0,0],radius=0.1,color = color.red)
s0 = sphere(pos=[0,0,0],radius=0.25,color = color.green)
for i in arange(0,100,0.1):
rate(5)
theta = randint(0,30)
r = randint(-2,2)
x = cos(theta)
y = sin(theta)
s.pos = [x,y,r]
1 个回答
1
在脚本或程序中使用 from <some_library> import *
通常不是个好主意,因为这样会把 <some_library>
中的所有内容都导入到当前的命名空间里。如果 <some_library>
中的某些名字已经在当前命名空间中存在,它们就会被重新定义。更好的做法是,比如说,
import numpy as np
使用前缀 np
来访问 numpy
的内容(例如 np.arange
),或者在脚本中明确只导入你需要的东西。例如,如果你想从 random
中导入 randint
,可以这样做:
from random import randint
在你的情况下,numpy
和 visual
都定义了一个叫 rate
的函数。(你可以查看 http://vpython.org/contents/docs/rate.html 和 http://docs.scipy.org/doc/numpy/reference/generated/numpy.rate.html。)显然,当你遇到错误时,你是用 from numpy import *
导入的,所以你的脚本调用的是 numpy.rate
而不是 visual.rate
。