From d3d020a4c119c078c7c56c6b3486ae320f174509 Mon Sep 17 00:00:00 2001 From: Natallia Paliashchuk Date: Wed, 29 Jun 2022 12:37:10 +0400 Subject: [PATCH] HW8 --- NatalliaPaliashchuk/hw8.py | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 NatalliaPaliashchuk/hw8.py diff --git a/NatalliaPaliashchuk/hw8.py b/NatalliaPaliashchuk/hw8.py new file mode 100644 index 00000000..dd9a46af --- /dev/null +++ b/NatalliaPaliashchuk/hw8.py @@ -0,0 +1,57 @@ +import unittest +from unittest.mock import patch + +class Error(Exception): pass + +class ArgError(Error): pass + +def iseven(num): + try: + if num % 2 == 0: + return True + else: + return False + except Exception: + raise ArgError('Bad arg') + + +def goldbach_conjecture(): + while True: + ent = input() + if 'q'== ent: break + try: + ent = int(ent) + except ValueError: + print('Enter the correct even number') + continue + if not iseven(ent) or ent < 4: + print('Enter the correct even number') + continue + prime = [] + for i in range(2, ent): + cnt = 0 + for j in range(2, i + 1): + if i % j == 0: + cnt += 1 + if cnt == 1: + prime.append(i) + for i, val in enumerate(prime): + for j in prime[i:]: + if val + j == ent: + print(val, j) + +class TestGoldbachsConjecture(unittest.TestCase): + def test_iseven(self): + self.assertTrue(iseven(2)) + self.assertFalse(iseven(1)) + with self.assertRaises(ArgError): + iseven('') + + @patch('input()', return_value='4') + def test_goldbach_conjecture(self): + self.assertEqual(goldbach_conjecture(), '2 2') + + + +if __name__ == '__main__': + unittest.main(argv=[''], exit=False) \ No newline at end of file