使用VPython时Python出错

0 投票
1 回答
1352 浏览
提问于 2025-04-18 06:58

我在尝试导入任何东西时遇到了错误,或者当我想把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

在你的情况下,numpyvisual 都定义了一个叫 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

撰写回答