我需要编写一个具有以下条件的类构造函数:向量类构造函数参数
构造函数应该只带一个参数。如果这个参数是一个int或一个long或从其中一个派生的类的一个实例,则认为这个参数是Vector的长度。在这种情况下,构造一个具有指定长度的Vector,每个元素初始化为0.0。如果长度为负数,则用适当的消息提出ValueError
。如果参数不被认为是长度,那么如果参数是一个序列(例如list
),则使用具有给定序列长度和值的向量进行初始化。如果参数未用作向量的长度,并且它不是序列,则用适当的消息提出TypeError
。
我不知道怎么写相应的错误,我应该使用这个类错误:
class Failure(Exception):
"""Failure exception"""
def __init__(self,value):
self.value=value
def __str__(self):
return repr(self.value)
在交互式控制台:
>>> Vector(3)
Vector([0.0, 0.0, 0.0])
>>> Vector(3L)
Vector([0.0, 0.0, 0.0])
>>> Vector([4.5, "foo", 0])
Vector([4.5, 'foo', 0])
>>> Vector(0)
Vector([])
>>> Vector(-4)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "vector.py", line 14, in __init__
raise ValueError("Vector length cannot be negative")
ValueError: Vector length cannot be negative
这里是我的代码。我只需要添加的错误,一个在if
语句时,它在else
声明的int
或long
这是一个值误差,以及一个用于TypeError
:
def is_sequence(obj):
try:
len(obj)
obj[0:0]
return True
except TypeError:
return False
class Vector:
l=[]
def __init__(self,object):
if(isinstance(object,long) |isinstance(object,int)):
x=int(object)
if(x<0):
else:
for i in range(0,x):
l.append(0.0)
elif(is_sequence(object)):
l.append(object)
else:
我不知道如何做这个。
SO不是“代码写入”服务,到目前为止您尝试过哪些代码?你有什么特别的问题? –
你应该向我们展示一些代码_you_已经写好,然后我们帮你修复它。 –