找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2933|回复: 1

[求助] 卡了好几天了哪位大哥帮帮我!

1

主题

1

帖子

1

积分

贫民

积分
1
pumpkin_ever 发表于 2017-5-27 21:01:50 | 显示全部楼层 |阅读模式
class Line(object):

      def __init__(self, normal_vector=None, constant_term=None):   
        self.dimension = 2

        if not normal_vector:   
            all_zeros = ['0']*self.dimension   
            normal_vector = Vector(all_zeros)   

        self.normal_vector = normal_vector  

        if not constant_term:
            constant_term = Decimal('0')

        self.constant_term = Decimal(constant_term)     

        self.set_basepoint()
   
    def set_basepoint(self):
        try:
            n = self.normal_vector
            c = self.constant_term
            basepoint_coords = ['0']*self.dimension     

            initial_index = Line.first_nonzero_index(n)     
            initial_coefficient = n[initial_index]      

            basepoint_coords[initial_index] = c/initial_coefficient   
            self.basepoint = Vector(basepoint_coords)


ell1 = Line(normal_vector = Vector(['4.046', '2.836']), constant_term = '0')
print ell1.normal_vector

报错信息:
Traceback (most recent call last):
  File "C:\Users\hhf\Desktop\vector\class_line.py", line 160, in <module>
    ell1 = Line(normal_vector = Vector(['4.046', '2.836']), constant_term = '0')
  File "C:\Users\hhf\Desktop\vector\class_line.py", line 29, in __init__
    self.set_basepoint()
  File "C:\Users\hhf\Desktop\vector\class_line.py", line 49, in set_basepoint
    raise e   
TypeError: iteration over non-sequence
迭代无序列

class Vector():

        def __init__(self, coordinates):
                try:
                        if not coordinates:
                                raise ValueError
                        self.coordinates = tuple([Decimal(x) for x in coordinates])
                        self.dimension = len(coordinates)

               

回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2017-5-28 12:48:10 | 显示全部楼层
            initial_index = Line.first_nonzero_index(n)     
            initial_coefficient = n[initial_index]
这两句有问题没有哦?看着有点不对劲的样子, Line.first_nonzero_index(n) 这个从哪冒出来的?这个我不知道对不对,暂时不讨论,
n[initial_index]这里的n=self.normal_vector,而normal_vector = Vector,Vector是一个类的实例,你咋个用来迭代的哦,猜想你应该是想用
Vector.coordinates来进行迭代吧?即initial_coefficient = n.coordinates[initial_index]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表