Python 未绑定整数类

Python 未绑定整数类,python,python-2.7,Python,Python 2.7,我正在实现一个unboundenger类,它的行为类似于正则整数。 其思想是能够在任意大的范围内进行操作 两边都没有任何限制的整数 支持的大小 这是我的密码 class UnboundInteger(object): def __init__(self, integer): self.integer = str(integer) def __add__(self, other): carry = '0' temp = '0' result = ''

我正在实现一个unboundenger类,它的行为类似于正则整数。 其思想是能够在任意大的范围内进行操作 两边都没有任何限制的整数 支持的大小

这是我的密码

class UnboundInteger(object):

def __init__(self, integer):
    self.integer = str(integer)


def __add__(self, other):
    carry = '0'
    temp = '0'
    result = ''

    if (len(self.integer) > len(other.integer)):
        num_of_zeros = len(self.integer) - len(other.integer)
        other.integer = '0' * num_of_zeros + other.integer

    elif (len(self.integer < other.integer)):
        num_of_zeros = len(other.integer) - len(self.integer)
        self.integer = '0' * num_of_zeros + self.integer

    for i in range(1, len(self.integer)+1):
        temp = str(int(self.integer[-i]) + int(other.integer[-i]) + int(carry))
        temp = '0' + temp
        temp = temp[-1]
        carry = temp[-2]
        result = temp + result

    return UnboundInteger(result)



@classmethod
def from_int(cls, integer):
    '''\
    Take in a integer and build the unbound integer object.
    '''
    ub_integer = cls(integer)
    return ub_integer
类取消绑定器(对象):
def uuu init uuu(self,integer):
self.integer=str(整数)
定义添加(自身、其他):
进位='0'
温度='0'
结果=“”
如果(len(self.integer)>len(other.integer)):
num\u of_zeros=len(self.integer)-len(other.integer)
other.integer='0'*num_of_零+other.integer
elif(len(self.integer
不幸的是,我无法调试错误 请帮帮我

这里是错误

    In [40]: reload(test)
Out[40]: <module 'test' from 'test.py'>

In [41]: a = test.UnboundInteger(1000000000000)

In [42]: b = test.UnboundInteger(20000000000)

In [43]: a + b
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-43-f96fb8f649b6> in <module>()
----> 1 a + b

/home/neel101/test.py in __add__(self, other)
     17             temp = '0' + temp
     18             temp = temp[-1]
---> 19             carry = temp[-2]
     20             result = temp + result
     21 

IndexError: string index out of range
[40]中的
:重新加载(测试)
出[40]:
在[41]中:a=测试未绑定整数(10000000000)
In[42]:b=测试未绑定整数(200000000000)
In[43]:a+b
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在()
---->1 a+b
/home/neel101/test.py in\uuuuu add\uuuuuuu(自身、其他)
17温度='0'+温度
18温度=温度[-1]
--->19进位=温度[-2]
20结果=温度+结果
21
索引器错误:字符串索引超出范围

或任何更好的方法来解决这个问题。请让我知道

这是因为您正在覆盖临时变量

temp = '0' + temp
temp = temp[-1]
carry = temp[-2]
应该是这样的:

temp = '0' + temp
carry = temp[-2]
temp = temp[-1]

出于好奇,你需要这个做项目还是做家庭作业?如果对一个项目来说,只需使用python的
long
类型(通常,
int
会很好地工作——在需要时无声地转换为
long
)。。。蟒蛇3甚至更好
int
从一开始就具有任意大小。这必须是那些“学术”练习之一……是的,这是一个学术练习!您正在通过temp=temp[-1]将最后一个字符分配给temp,在下一行中,您正在尝试从temp读取最后一个字符;现在临时工只有最后一个字符。谢谢!我使用了温度,进位=温度[-1],温度[-2]