Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复:此工厂功能只工作一次_Python_Vpython - Fatal编程技术网

Python 如何修复:此工厂功能只工作一次

Python 如何修复:此工厂功能只工作一次,python,vpython,Python,Vpython,这个函数只工作一次,然后就不再工作了。有人能告诉我我做错了什么吗 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(angl

这个函数只工作一次,然后就不再工作了。有人能告诉我我做错了什么吗

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 compound(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)

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

您应该返回
c
,并在
topleftfrontcorner
topmiddlefrontside
上使用
compound

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)
这样做给了我:

也许更熟悉
vpython
的人可以解释更多,但一般来说,创建多维数据集和渲染多维数据集是有区别的。在代码段中看不到两个多维数据集的原因是程序仍在渲染第一个多维数据集(一个阻塞操作),甚至还没有计算第二个函数调用。您可以通过在两个函数调用之间放置一个
打印(“hello!”)
来了解情况<代码>“你好!”永远不会打印,因为程序仍在忙于渲染
topleftfrontcorner


在更新后的代码片段中,我们构造了两个立方体,然后同时渲染它们。

您所说的“只工作一次”是什么意思?确切的行为是什么?是否有任何错误消息或警告?预期的行为是,无论我在哪里,它都会创建一个自定义多维数据集,但在第一次呼叫后,它不会在第二次呼叫时输出另一个多维数据集。当我尝试发布以下答案时,它被删除,因为它“没有解决问题”。所以我要再说一遍:金字塔构造器是有缺陷的。它们的形式是金字塔(…)。旋转(…)后接“、轴=向量(0,1,0)”,这使得这些轴计算成为要合成的元素,您会得到一个错误,因为“轴=向量(0,1,0)”不是三维对象。