0

我想知道如何附加到类中的列表...

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)

到目前为止,我有正确的想法吗?

4

2 回答 2

2

add 方法应该只是def add(self, x): self.grade.append(x). 除此之外,你是对的。

于 2013-09-21T14:33:49.250 回答
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 上,则无需继承 from object,经典类已在 py3.x 中删除。

演示:

>>> data = Dataset()
>>> data.add(1)
>>> data.grade
[1]
于 2013-09-21T14:35:10.377 回答