我想知道如何附加到班级中的列表......
class Dataset(object):
def __init__(self):
self.grade=[]
def add(self, x):
return Dataset(self.grade.append(x))
这是我迄今为止所做的一件事的一个例子。在测试中,我有......
def main():
print('This is a program to compute the min, max, mean and')
print('standard deviation for a set of numbers.\n')
data = Dataset()
while True:
xStr = float(input('Enter a number (<Enter> to quit): '))
if xStr == '':
break
data.add(xStr)
到目前为止,我有正确的想法吗?
答案 0 :(得分:2)
add方法应该只是def add(self, x): self.grade.append(x)
。除此之外,你是对的。
答案 1 :(得分:2)
你需要这样的东西:
class Dataset(object):
def __init__(self):
self.grade=[]
def add(self, x):
self.grade.append(x)
由于list.append
是一个变异操作,因此无需返回任何内容。
其次,当您将xStr
转换为浮点数时,if xStr == ''
始终为False
。最好使用try-except,因为float('')
会引发ValueError
:
try:
xStr = float(input('Enter a number (<Enter> to quit): '))
data.add(xStr)
except ValueError:
break
while-True
循环的另一种替代方法:
from functools import partial
par = partial(input, 'Enter a number (<Enter> to quit): ')
for inp in iter(par, ''):
try:
inp = float(inp)
data.add(inp)
except ValueError:
break
最后,如果你在py3.x上,那么就不需要从object
继承,py3.x中已经删除了经典类。
<强>演示:强>
>>> data = Dataset()
>>> data.add(1)
>>> data.grade
[1]