0

クラスのリストに追加する方法を知りたい...

class Dataset(object):

    def __init__(self):
        self.grade=[]

    def add(self, x):
        return Dataset(self.grade.append(x))

これは私がこれまでに持っているものの1つの例です。テストでは、私は...

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)

Aslist.appendは変更操作であるため、何も返す必要はありません。

xStr第二に、フロートに変換しているのでif xStr == ''、常に になりますFalsefloat('')発生するため、ここでは try-except を使用することをお勧めします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]
于 2013-09-21T14:35:10.377 に答える