From aa88562e4c30deb93b58f1cb5dfcbe0fbe3a177a Mon Sep 17 00:00:00 2001 From: Robert Hanacek Date: Tue, 31 Aug 2021 11:11:09 -0600 Subject: [PATCH] Add interview questions. --- interview.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 interview.py diff --git a/interview.py b/interview.py new file mode 100644 index 0000000..c496032 --- /dev/null +++ b/interview.py @@ -0,0 +1,34 @@ +''' + +Problem: Creage averager with following behavior. + +>>> avg(10) +10.0 +>>> avg(11) +10.5 +>>> avg(12) +11.0 + +Lead to functional implementation, explaining closures. + +''' + +# Class-based implementation +class Averager(): + + def __init__(self): + self.series = [] + + def __call__(self, new_value): + self.series.append(new_value) + return sum(self.series) / len(self.series) + +# Functional implementation +def make_averager(): + series = [] + + def averager(new_value): + series.append(new_value) + return sum(series) / len(series) + + return averager