0

当我尝试导入任何内容或尝试修改 numpy 语句以导入除from numpy import arange以外的任何内容(如 from numpy import *)或添加任何其他导入语句时,我收到错误消息。

我也不能让我的半径随机浮动它说 r = random.uniform(0,2) AttributeError: 'builtin_function_or_method' 对象没有属性 '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]
4

1 回答 1

1

在脚本或程序中使用通常是一个坏主意from <some_library> import *,因为这会将所有内容<some_library>导入到当前命名空间中。如果<some_library>当前命名空间中已经存在任何名称,它们将被重新定义。例如,最好这样做

import numpy as np

并使用前缀np来访问numpy命名空间(例如np.arange),或者仅显式导入您在脚本中需要的内容。例如,randint要从导入random

from random import randint

在您的情况下,两者都numpy定义visual一个名为rate. (参见http://vpython.org/contents/docs/rate.htmlhttp://docs.scipy.org/doc/numpy/reference/generated/numpy.rate.html。)显然你已经完成from numpy import *了您报告的错误,因此您的脚本正在调用numpy.rate而不是visual.rate.

于 2014-05-19T11:41:10.190 回答