使用VPython(Python 3.6.1)构造简单的原子晶格

使用VPython(Python 3.6.1)构造简单的原子晶格,python,vpython,Python,Vpython,我目前正在学习马克·纽曼的计算物理,在使用VPython模块进行3D建模练习时遇到了一些问题 我试图构造一个简单的L*L晶格,并使用VPython模块显示它。我正在运行Python 3.6.1 我的代码如下所示: from vpython import sphere L = 5 # lattice size R = 0.3 # atom radius for i in range(-L,L+1): for j in range(-L,L+1): for k in ra

我目前正在学习马克·纽曼的计算物理,在使用VPython模块进行3D建模练习时遇到了一些问题

我试图构造一个简单的L*L晶格,并使用VPython模块显示它。我正在运行Python 3.6.1

我的代码如下所示:

from vpython import sphere

L = 5 # lattice size
R = 0.3 # atom radius

for i in range(-L,L+1):
    for j in range(-L,L+1):
        for k in range(-L,L+1):
            sphere(pos=[i,j,k],radius=R)
我得到以下属性错误:

Traceback (most recent call last):
  File "C:\Users\xxx\Desktop\python\computational physics\web resources\lattice.py", line 7, in <module>
    sphere(pos=[i,j,k],radius=R)
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python36\lib\site-packages\vpython\vpython.py", line 1168, in __init__
    super(sphere, self).setup(args)
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python36\lib\site-packages\vpython\vpython.py", line 631, in setup
    else: raise AttributeError(a+' must be a vector')
AttributeError: pos must be a vector
回溯(最近一次呼叫最后一次):
文件“C:\Users\xxx\Desktop\python\computative physics\web resources\lattice.py”,第7行,在
球体(位置=[i,j,k],半径=R)
文件“C:\Users\xxx\AppData\Local\Programs\Python36\lib\site packages\vpython\vpython.py”,第1168行,在uu init中__
超级(球体,自)。设置(args)
文件“C:\Users\xxx\AppData\Local\Programs\Python36\lib\site packages\vpython\vpython.py”,第631行,在安装程序中
else:raise AttributeError(a+'必须是向量')
AttributeError:pos必须是向量
本书中的示例使用了可视化模块,因此我怀疑我的问题是由于我的Python版本和VPython之间的一些兼容性问题造成的


有没有办法修复我的代码,让它使用VPython显示晶格?如果没有,是否有VPython的替代方案?

您需要创建一个向量:

首先,您必须通过

from vpython import vector
现在您将最后一行更改为

sphere(pos=vector(i,j,k),radius=R)
希望它能起作用