예제 #1
0
 def test_percentage_lower_than(self):
     sl = SuperList()
     for i in range(100):
         sl.append(100 - i)
     self.assertEqual(sl.percentage_lower_than(-1), 0)
     self.assertEqual(sl.percentage_lower_than(11), 10)
     self.assertEqual(sl.percentage_lower_than(33.3), 33)
     self.assertEqual(sl.percentage_lower_than(101), 100)
     sl.append(4)
     self.assertTrue(sl.percentage_lower_than(5) > 4.95
                     and sl.percentage_lower_than(5) < 4.96)
class DistributionAnalyzer:

    def __init__(self):
        self.list = SuperList()

    def add(self, value):
        self.list.append(value)

    def get_size(self):
        return len(self.list)

    def print_percentage(self, percentage):
        value = self.list.percentage(percentage)
        print(str(percentage) + "% under " + str(value))

    def print_default_percentages(self):
        self.print_percentage(50)
        self.print_percentage(75)
        self.print_percentage(90)
        self.print_percentage(99)
        self.print_percentage(100)

    def find_percentage_lower_than(self, value):
        p = self.list.percentage_lower_than(value)
        print("%.2f%% of values are < %s" % (p, value))

    def find_percentage_greater_than(self, value):
        p = self.list.percentage_greater_than(value)
        print("%.2f%% of values are > %s" % (p, value))

    def find_percentage_between(self, low, high):
        low, high = min(low, high), max(low, high)
        a = self.list.percentage_greater_than(high)
        b = self.list.percentage_lower_than(low)
        result = 100.0 - (a + b)
        print("%.2f of values are in [ %s, %s ]" % (result, low, high))