def test_percentage_greater_than(self): sl = SuperList() for i in range(100): sl.append(100 - i) self.assertEqual(sl.percentage_greater_than(-1), 100) self.assertEqual(sl.percentage_greater_than(11), 90) self.assertEqual(sl.percentage_greater_than(101), 0)
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))