我有一个奇怪的问题,SymPy中的平面交叉点可以用简单的例子,但是对于坐标更复杂的一个,它会失败.我发布了一个有效的简单示例和失败的示例.正如Povray图像所示,我有三个平面穿过多面体的顶点并垂直于穿过相应顶点和中心的直线.我想计算这些平面相交的点,但是SymPy给出了平面对相交的线的错误结果.在图像中,正确的交叉点可以看作短线(用CSG交叉点创建).与它们平行的长线是由SymPy计算的线.
我做错了什么,或者这是SymPy中的错误?
更多图片在这里:http ://paste.watchduck.net/1712/sympy_planes/
有谁知道如何在页面上放置许多图像,而不是不发布问题?("您的帖子似乎包含未正确格式化为代码的代码.")
码:
from sympy import Point3D, Plane
pointR = Point3D(1/2, 0, 1/2)
pointG = Point3D(1, 0, 0)
planeR = Plane(pointR, pointR)
planeG = Plane(pointG, pointG)
print('\n######## Intersection of the planes:')
lineRG = planeR.intersection(planeG)[0] # yellow
print(lineRG)
print('\n######## Intersection of plane and contained line returns the line:')
lineRG_again = planeR.intersection(lineRG)[0]
print(lineRG_again.equals(lineRG))
Run Code Online (Sandbox Code Playgroud)
输出:
######## Intersection of the planes:
Line3D(Point3D(1, 0, 0), Point3D(1, 1/2, 0))
######## Intersection of plane and contained line …Run Code Online (Sandbox Code Playgroud) 无论我尝试什么,自从我切换到 Python 3 后,我只能从项目的根文件夹运行导入的脚本,而不能从子文件夹导入。我知道这里有很多关于我收到的错误消息的问题,但建议的解决方案对我不起作用。有人可以为这个小示例项目提供示例解决方案吗?我相信它会受到很多人的赞赏。
proj\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foofolder\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foofile.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subfolder\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 run.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\nRun Code Online (Sandbox Code Playgroud)\n\nfoofun()我在 中定义了该函数foofile.py,并想在 中调用它run.py。
如果run.py直接在proj里面就可以了。但是(只是为了让事情井井有条)我想将其放在子文件夹中 - 令人惊讶的是,这似乎是不可能的。
烦人的是,我的 IDE (PyCharm) 中的自动完成功能表明from foofolder.foofile import foofun应该可以工作。但事实并非如此。我也无法想象任何其他进口:
from foofolder.foofile import foofun-->ImportError: No module named 'foofolder'
from .foofolder.foofile import foofun--> SystemError: Parent module '' not loaded, cannot perform relative import(与开头的两个点相同。)
from proj.foofolder.foofile import foofun--> …
在Python库SymPy我试着去理解函数partitions()中sympy.utilities.iterables:
它是这样开始的:
def partitions(n, m=None, k=None, size=False):
"""Generate all partitions of integer n (>= 0).
Run Code Online (Sandbox Code Playgroud)
我对以下while循环感到困惑,因为它看起来毫无意义.如果我删除while 1:和break它应该没有什么区别.但是,我希望开发SymPy的人知道他们在做什么,并且不会犯很简单的错误.那么这是否意味着我没有看到?
while 1:
# Let i be the smallest key larger than 1. Reuse one instance of i.
i = keys[-1]
newcount = ms[i] = ms[i] - 1
reuse += i
if newcount == 0:
del keys[-1], ms[i]
room += 1
# Break the remainder into pieces of size i-1.
i -= 1
q, …Run Code Online (Sandbox Code Playgroud) 我经常读到,检查是否定义了变量在某种程度上是一个错误的设计选择。但是我没有其他方法可以处理类方法中的可选参数。因此make_sound_twice,以下代码中处理的可选参数的方式有问题吗?
class Cat(object):
def __init__(self):
self.default_sound = 'meow'
def make_sound_twice(self, sound=None):
if sound is None:
sound = self.default_sound
print("{sound} {sound}".format(sound=sound))
kitty = Cat()
kitty.make_sound_twice()
custom_sound = 'hiss'
kitty.make_sound_twice(custom_sound)
custom_sound = 0
kitty.make_sound_twice(custom_sound)
Run Code Online (Sandbox Code Playgroud)
这将打印以下行:
meow meow
hiss hiss
0 0
Run Code Online (Sandbox Code Playgroud)
self当时尚未定义,因此我不能简单地设置默认值,而不是None:
def make_sound_twice(self, sound=self.default_sound):
Run Code Online (Sandbox Code Playgroud) 我v-repeat在Vue.js中创建了一个下拉菜单,我有一个当前值,我需要将selected属性添加到select标记中.似乎v-if只能用于控制标签,而不能用于控制属性.
<select name="flavor">
<option value=""></option>
<option v-repeat="proposed_value: proposed_values" value="{{ proposed_value }}">{{ proposed_value }}</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西:
<option v-repeat="proposed_value: proposed_values"
value="{{ proposed_value }}"
{{ proposed_value == current_value ? 'selected' }}
>
{{ proposed_value }}
</option>
Run Code Online (Sandbox Code Playgroud)
这是用于创建下拉列表的对象:
{
"name": "flavors",
"current_value": "strawberry",
"proposed_values": [
"vanilla",
"strawberry",
"lemon"
]
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,不会强迫我像这样的对象猴子?
{
"name": "flavors",
"proposed_values": [
{"name": "vanilla", "selected": ""}
{"name": "strawberry", "selected": "selected"}
{"name": "lemon", "selected": ""}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Vue 0.11.10.
我会认为finally只有 a 的子句pass是毫无意义的。
但在 Bottle 模板中,如果没有它,以下可选包含代码将无法工作。
结果将包含之前的所有内容以及所包含的代码本身,但之后不包含任何内容。
(参见相应的问题。)
try:
include(optional_view)
except NameError:
pass
finally:
pass
Run Code Online (Sandbox Code Playgroud)
有什么finally: pass作用,什么时候有用?