如何解决:此工厂功能仅可使用一次

时间:2019-06-01 17:51:45

标签: python vpython

此功能只能运行一次,然后有人不能告诉我我做错了吗?

Request URL: http://127.0.0.1:8080/auth/token
Request Method: GET
Status Code: 200 
Remote Address: 127.0.0.1:8080
Referrer Policy: no-referrer-when-downgrade

{"token":"92618f1e-0ed3-472b-b6a9-db2201a02d86"}

我希望这个函数在每次调用它时都输出一个自定义的“多维数据集”,而不仅仅是一次。

1 个答案:

答案 0 :(得分:0)

您应该返回c,并在compoundtopleftfrontcorner上同时使用topmiddlefrontside

from vpython import *
def create_cube(pos,size,front,back,left,right,bottom,top):
    c = [ pyramid(pos=pos-vector(0.5,0,0),size=size,color=left),
    pyramid(pos=pos+vector(0.5,0,0),size=size,color=right).rotate(angle=radians(180),axis=vector(0,1,0)),
    pyramid(pos=pos+vector(0,0,0.5),size=size,color=front).rotate(angle=radians(90),axis=vector(0,1,0)),
    pyramid(pos=pos-vector(0,0,0.5),size=size,color=back).rotate(angle=radians(270),axis=vector(0,1,0)),
    pyramid(pos=pos-vector(0,0.5,0),size=size,color=bottom).rotate(angle=radians(90),axis=vector(0,0,1)),
    pyramid(pos=pos+vector(0,0.5,0),size=size,color=top).rotate(angle=radians(270),axis=vector(0,0,1)),
    box(pos=pos,size = vector(0.9,0.9,0.9),color=color.black)]
    return c

topleftfrontcorner = create_cube(vector(-1,1,1),vector(0.5,0.90,0.90),color.red,color.black,color.blue,color.black,color.black,color.yellow)
topmiddlefrontside = create_cube(vector(0,0,0),vector(0.5,0.90,0.90),color.red,color.black,color.black,color.black,color.black,color.yellow)
compound(topleftfrontcorner, topmiddlefrontside)

这样做给了我: enter image description here

也许更熟悉vpython的人可以解释更多,但是通常创建多维数据集和呈现多维数据集之间会有区别。您在代码段中看不到两个多维数据集的原因是该程序仍在渲染第一个多维数据集(阻塞操作),甚至没有评估第二个函数调用。您可以通过在两个函数调用之间放置print("hello!")来看到这种情况。 "hello!"从未打印过,因为程序仍在忙于渲染topleftfrontcorner

在更新的代码段中,我们构造了两个多维数据集,然后同时渲染它们。