Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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/8/python-3.x/19.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 2.7 未能在Pycipper中缩放-类型错误:';零';对象是不可编辑的_Python 2.7_Python 3.x_Sympy_Pyclipper - Fatal编程技术网

Python 2.7 未能在Pycipper中缩放-类型错误:';零';对象是不可编辑的

Python 2.7 未能在Pycipper中缩放-类型错误:';零';对象是不可编辑的,python-2.7,python-3.x,sympy,pyclipper,Python 2.7,Python 3.x,Sympy,Pyclipper,我刚刚遇到了一个TypeError我以前从未见过,也不知道为什么会发生。搜索错误TypeError:“Zero”对象不可编辑不会返回任何结果。我在Python2.7和3.5中进行了测试,两种情况下的错误都是相同的 以下是MCVE: from sympy.geometry.polygon import Polygon import pyclipper as pc start_list = [(0, 2), (2, 2), (2, 0), (0, 0)] scaled = pc.scale_to_

我刚刚遇到了一个
TypeError
我以前从未见过,也不知道为什么会发生。搜索错误
TypeError:“Zero”对象不可编辑
不会返回任何结果。我在Python2.7和3.5中进行了测试,两种情况下的错误都是相同的

以下是MCVE:

from sympy.geometry.polygon import Polygon
import pyclipper as pc

start_list = [(0, 2), (2, 2), (2, 0), (0, 0)]
scaled = pc.scale_to_clipper(start_list)  # this works fine

as_poly = Polygon(*start_list)
new_list = [(pt.x, pt.y) for pt in as_poly.vertices]
assert new_list == start_list  # check that the lists are the same (this passes)

fail_to_scale = pc.scale_to_clipper(new_list)  # this fails
追溯:

Traceback (most recent call last):
  File "C:\Users\Jamie\<blah>\mcve.py", line 10, in <module>
    fails = pc.scale_to_clipper(new_list)
  File "pyclipper/pyclipper.pyx", line 544, in pyclipper.scale_to_clipper (pyclipper/pyclipper.cpp:3535)
  File "pyclipper/pyclipper.pyx", line 542, in pyclipper.scale_to_clipper.scale_value (pyclipper/pyclipper.cpp:3454)
  File "pyclipper/pyclipper.pyx", line 542, in pyclipper.scale_to_clipper.scale_value (pyclipper/pyclipper.cpp:3454)
  File "pyclipper/pyclipper.pyx", line 542, in pyclipper.scale_to_clipper.scale_value (pyclipper/pyclipper.cpp:3416)
TypeError: 'Zero' object is not iterable
回溯(最近一次呼叫最后一次):
文件“C:\Users\Jamie\\mcve.py”,第10行,在
失败=pc.scale\u to\u clipper(新\u列表)
文件“pyclipper/pyclipper.pyx”,第544行,在pyclipper.scale_to_clipper(pyclipper/pyclipper.cpp:3535)中
文件“pyclipper/pyclipper.pyx”,第542行,在pyclipper.scale_到_clipper.scale_值(pyclipper/pyclipper.cpp:3454)中
文件“pyclipper/pyclipper.pyx”,第542行,在pyclipper.scale_到_clipper.scale_值(pyclipper/pyclipper.cpp:3454)中
文件“pyclipper/pyclipper.pyx”,第542行,在pyclipper.scale_到_clipper.scale_值(pyclipper/pyclipper.cpp:3416)中
TypeError:“零”对象不可编辑

有人知道此错误的来源和解决方案吗?

这已在PyClipper 1.0.2版中修复,这比使用下面描述的解决方法更可取

好的,我已将问题追溯到存储在
Polygon
中的值。问题是值
0
由Symphy存储为
Symphy.Zero

polyclipper.scale\u to\u clipper()
不接受这些
sympy.Zero
值,因此选中时会导致
TypeError

为了避免这个问题,我可以生成
new_list
casting
pt.x
pt.y
float

new_list = [(float(pt.x), float(pt.y)) for pt in as_poly.vertices]

断言通过还是失败?在分配到
新列表
失败到缩放
之间是否还有代码行?Prolly
new\u list
被修改断言通过,并且确切的MCVE产生错误。不需要额外的代码来重现该问题。正如您已经发现的,问题是
pyclipper
认为
sym.Zero
是一个集合。这是图书馆里的一个错误。当这个代码被固定转换为<代码> Sy.0/<代码> <代码> int <代码>或<代码>浮点(它被转换成C++双)似乎是一个有效的解决方案。