Python 不使用列表的最小值

Python 不使用列表的最小值,python,class,Python,Class,我被告知要创建一个输出大小、最小值、最大值等的类,而不使用列表,属性主要在def add中。我的属性在大多数情况下工作正常,但由于某些原因,我无法获得最小值。有谁能给我一个正确的方向快速推一下,告诉我这条路是否正确 class Dataset(object): def __init__(self): self.totalScore=0 self.countScore=0 self._highest=0 self._lowe

我被告知要创建一个输出大小、最小值、最大值等的类,而不使用列表,属性主要在def add中。我的属性在大多数情况下工作正常,但由于某些原因,我无法获得最小值。有谁能给我一个正确的方向快速推一下,告诉我这条路是否正确

class Dataset(object):

    def __init__(self):
        self.totalScore=0
        self.countScore=0
        self._highest=0
        self._lowest=0
        self.dev=0
        self.mean=0

    def add(self, score):
        self.countScore= self.countScore + 1
        self.totalScore= self.totalScore + score

        self.mean=self.totalScore/self.countScore
        self.dev=self.mean - score


        if score > self._highest:
            self._highest = score
        if score < self._lowest:
            self._lowest = score

    def size(self):
        return(self.countScore)


    def min(self):
        return (self._lowest)


    def max(self):
        return (self._highest)
类数据集(对象):
定义初始化(自):
self.totalScore=0
self.countScore=0
自高=0
自最小值=0
self.dev=0
平均值=0
def添加(自我,分数):
self.countScore=self.countScore+1
self.totalScore=self.totalScore+分数
self.mean=self.totalScore/self.countScore
self.dev=self.mean-分数
如果得分>self.\u最高:
自我评价=最高分数
如果分数
我的结果是:

This is a program to compute the min, max, mean and
standard deviation for a set of numbers.

Enter a number (<Enter> to quit): 50
Enter a number (<Enter> to quit): 60
Enter a number (<Enter> to quit): 
Summary of 2 scores.
Min: 0
Max: 60.0
Mean: 55.0
Standard Deviation: 7.0710678118654755
这是一个计算最小值、最大值、平均值和
一组数字的标准偏差。
输入一个数字(要退出):50
输入一个数字(要退出):60
输入一个数字(要退出):
总结2分。
最低:0
最高:60.0
平均值:55.0
标准偏差:7.0710678118654755

问题在于您将初始的
自我初始化为
0
,这恰好低于您的所有输入。相反,您可以尝试以下方法:

  • 像这样初始化:
    self.\u lower=None
  • add
    中,将条件更改为在第一次呼叫时将
    self.\u lower
    设置为
    score
然后它会像这样:

if self._lowest is None or score < self._lowest:
  self._lowest = score

问题是您将初始的
self.\u lower
初始化为
0
,这恰好低于您的所有输入。相反,您可以尝试以下方法:

  • 像这样初始化:
    self.\u lower=None
  • add
    中,将条件更改为在第一次呼叫时将
    self.\u lower
    设置为
    score
然后它会像这样:

if self._lowest is None or score < self._lowest:
  self._lowest = score

完全合理。一种廉价而令人愉快的替代方法是使用
float('-inf')
float('inf')
初始化max/min。那么在这段代码中就不需要特殊情况了。缺点是,如果根本没有调用
add
,也就是说没有分数,那么结果就没有那么有用了。@SteveJessop,谢谢,没有想到这一点。这种方法还将if语句简化为简单的
min
/
max
调用。我已经看到
inf
-inf
对于许多算法来说都是完全有效的初始值,所以这只是一个惯例问题,或者在本例中是输出格式问题。非常感谢。我想情况就是这样,我只是不知道该怎么办。现在我知道了,完全合理。一种廉价而令人愉快的替代方法是使用
float('-inf')
float('inf')
初始化max/min。那么在这段代码中就不需要特殊情况了。缺点是,如果根本没有调用
add
,也就是说没有分数,那么结果就没有那么有用了。@SteveJessop,谢谢,没有想到这一点。这种方法还将if语句简化为简单的
min
/
max
调用。我已经看到
inf
-inf
对于许多算法来说都是完全有效的初始值,所以这只是一个惯例问题,或者在本例中是输出格式问题。非常感谢。我想情况就是这样,我只是不知道该怎么办。现在我更清楚了。