Write a function that returns a lambda expression, which adds n to its input.
adds1 = adds_n(1)
adds1(3) ➞ 4
adds1(5.7) ➞ 6.7
adds10 = adds_n(10)
adds10(44) ➞ 54
adds10(20) ➞ 30| from typing import Callable, TypeVar | |
| import unittest | |
| T = TypeVar("T", int, float) | |
| def adds_n(amount: int) -> Callable[[T], T]: | |
| return lambda x: 0 # Put your code here!!! | |
| class Test(unittest.TestCase): | |
| def test_1(self): | |
| adds1 = adds_n(1) | |
| self.assertEqual(adds1(3), 4) | |
| self.assertEqual(adds1(5.7), 6.7) | |
| def test_2(self): | |
| adds10 = adds_n(10) | |
| self.assertEqual(adds10(44), 54) | |
| self.assertEqual(adds10(20), 30) | |
| def test_3(self): | |
| adds5neg = adds_n(-5) | |
| self.assertEqual(adds5neg(0), -5) | |
| self.assertEqual(adds5neg(77), 72) | |
| def test_4(self): | |
| adds0 = adds_n(0) | |
| self.assertEqual(adds0(77), 77) | |
| if __name__ == "__main__": | |
| unittest.main() |
Found on Edabit: All About Lambda Expressions: Adding