fork download
  1. import math
  2.  
  3. class Circle:
  4. def __init__(self, radius):
  5. self.radius = radius
  6. def getDiameter(self):
  7. return 2 * self.radius
  8. def getPerimeter(self):
  9. return math.pi * self.getDiameter()
  10. def getArea(self):
  11. return math.pi * self.radius**2
  12. def __repr__(self):
  13. return 'Circle({})'.format(self.radius)
  14.  
  15. def perimeter_sum(circles):
  16. return sum(circle.getPerimeter() for circle in circles)
  17.  
  18. def area_sum(circles):
  19. return sum(circle.getArea() for circle in circles)
  20.  
  21. def inches2yards(inches):
  22. return inches / 36
  23.  
  24. def percent_more(x1, x2):
  25. return 100 * (x1 - x2) / x2
  26.  
  27. # buying ribbon for hat bands
  28. hats = [Circle(3), Circle(3.5), Circle(4), Circle(4.5)]
  29. print(hats, perimeter_sum(hats))
  30. yards = inches2yards(perimeter_sum(hats))
  31. print('Need at least {:.1f} yards of ribbon for {} hats.'.format(yards, len(hats)))
  32.  
  33. # eating pancakes
  34. ralph = [Circle(2), Circle(3), Circle(4)]
  35. sally = [Circle(3), Circle(5)]
  36. print(ralph, area_sum(ralph))
  37. print(sally, area_sum(sally))
  38. pmore = percent_more(area_sum(sally), area_sum(ralph))
  39. print('Sally ate {:.0f}% more than Ralph.'.format(pmore))
  40.  
Success #stdin #stdout 0.04s 9440KB
stdin
Standard input is empty
stdout
[Circle(3), Circle(3.5), Circle(4), Circle(4.5)] 94.2477796076938
Need at least 2.6 yards of ribbon for 4 hats.
[Circle(2), Circle(3), Circle(4)] 91.106186954104
[Circle(3), Circle(5)] 106.81415022205297
Sally ate 17% more than Ralph.