diff --git a/.vscode/launch.json b/.vscode/launch.json index 306f58e..19c2924 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,13 +4,29 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { + { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true - } + }, + { + "name": "Python: Flask", + "type": "python", + "request": "launch", + "module": "flask", + "env": { + "FLASK_APP": "app.py", + "FLASK_ENV": "development" + }, + "args": [ + "run", + "--no-debugger" + ], + "jinja": true, + "justMyCode": true + } ] } \ No newline at end of file diff --git a/EXZAMEN/exam.py b/EXZAMEN/exam.py new file mode 100644 index 0000000..d598f2d --- /dev/null +++ b/EXZAMEN/exam.py @@ -0,0 +1,16 @@ +def revers_word(s: str) -> str: + l = s.split(' ') + l.reverse() + return ' '.join(l) + + +if __name__ == '__main__': + + print('0 words') + print(revers_word('')) + + print('1 words') + print(revers_word('one')) + + print('5 words') + print(revers_word('one two tree four five')) \ No newline at end of file diff --git a/EXZAMEN/exam_test.py b/EXZAMEN/exam_test.py new file mode 100644 index 0000000..29387df --- /dev/null +++ b/EXZAMEN/exam_test.py @@ -0,0 +1,28 @@ +from unittest import TestCase +import exam + +class ReversTest(TestCase): + + def test_zero_words(self): + self.assertEqual('', exam.revers_word('')) + + def test_one_words(self): + self.assertEqual('one', exam.revers_word('one')) + + def test_five_words(self): + self.assertEqual('five four tree two one', exam.revers_word('one two tree four five')) + + def test_five_words_with_dot(self): + self.assertEqual('five. four tree two One', exam.revers_word('One two tree four five.')) + + def test_five_words_sep_comma(self): + self.assertEqual('five four, tree, two, one,', exam.revers_word('one, two, tree, four, five')) + + def test_five_words_sep_dash(self): + self.assertEqual('one-two-tree-four-five', exam.revers_word('one-two-tree-four-five')) + + def test_ten_words_two_line(self): + self.assertEqual('ten nine eight seven five\nsix four tree two one', exam.revers_word('one two tree four five\nsix seven eight nine ten')) + + def test_digit(self): + self.assertEqual('5 4 3 2 1', exam.revers_word('1 2 3 4 5')) \ No newline at end of file diff --git a/Lab_1/function.py b/Lab_1/function.py new file mode 100644 index 0000000..595e54a --- /dev/null +++ b/Lab_1/function.py @@ -0,0 +1,36 @@ +import math + + +def f(a:float, b:float, x:float) -> float: + + chisl = math.log((x**2) - 1) + znam = math.log(a * x**2 - b, 5) + return chisl / znam + + +def task_a(a:float, b:float, xn:float, xk:float, dx:float) -> list: + + y = [] + while xn < xk: + y.append(f(a, b, xn)) + xn += dx + return y + + +def task_b(a:float, b:float, x:enumerate) -> list: + + y = [] + for i in x: + y.append(f(a, b, i)) + return y + + +if __name__ == '__main__': + + # print(f(1.1, 0.09, 0)) + + print('Task A') + print(task_a(1.1, 0.09, 1.2, 2.2, 0.2)) + + print('Task B') + print(task_b(1.1, 0.09, (1.21, 1.76, 2.53, 3.48, 4.52))) diff --git a/Lab_1/function_test.py b/Lab_1/function_test.py new file mode 100644 index 0000000..66b257a --- /dev/null +++ b/Lab_1/function_test.py @@ -0,0 +1,28 @@ +from unittest import TestCase +import Lab_1.function as function + +class TestFunction(TestCase): + + def test_f(self): + res = function.f(1.1, 0.09, 1.2) + self.assertAlmostEqual(-3.29, res, 2) + + def test_task_a_ok(self): + y = function.task_a(1.1, 0.09, 1.2, 2.2, 0.2) + self.assertAlmostEqual(6, len(y)) + + def test_task_b_ok(self): + y = function.task_b(1.1, 0.09, (1.21, 1.76, 2.53, 3.48, 4.52)) + self.assertAlmostEqual(5, len(y)) + + def test_task_a(self): + y = function.task_a(1.1, 0.09, 1.2, 2.2, 0.2) + right_y = [-3.291, -0.0905, 0.714, 1.042, 1.210, 1.308] + for i in range(5): + self.assertAlmostEqual(y[i], right_y[i], 3) + + def test_task_b(self): + y = function.task_b(1.1, 0.09, (1.21, 1.76, 2.53, 3.48, 4.52)) + right_y = [-2.948, 0.994, 1.4, 1.501, 1.536] + for i in range(5): + self.assertAlmostEqual(right_y[i], y[i], 3) \ No newline at end of file diff --git a/Loktev_198/loktev/function.py b/Loktev_198/loktev/function.py new file mode 100644 index 0000000..18371af --- /dev/null +++ b/Loktev_198/loktev/function.py @@ -0,0 +1,36 @@ +import math + + +def f(a:float, b:float, x:float) -> float: + + chisl = b**3 + math.sin(a*x)**2 + znam = math.acos(x*(b**x)) + math.exp(-x/2) + return chisl / znam + + +def task_a(a:float, b:float, xn:float, xk:float, dx:float) -> list: + + y = [] + while xn < xk: + y.append(f(a, b, xn)) + xn += dx + return y + + +def task_b(a:float, b:float, x:enumerate) -> list: + + y = [] + for i in x: + y.append(f(a, b, i)) + return y + + +if __name__ == '__main__': + + print(f(1.2, 0.48, 0)) + + print('Task A') + print(task_a(1.2, 0.48, 0.7, 2.2, 0.3)) + + print('Task B') + print(task_b(1.2, 0.48, (0.25, 0.36, 0.56, 0.94, 1.28))) diff --git a/Loktev_198/loktev/function_test.py b/Loktev_198/loktev/function_test.py new file mode 100644 index 0000000..96273d7 --- /dev/null +++ b/Loktev_198/loktev/function_test.py @@ -0,0 +1,32 @@ +from unittest import TestCase +import function as function + +class TestFunction(TestCase): + + def test_f(self): + res = function.f(1.2, 0.48, 0.7) + self.assertAlmostEqual(0.36, res, 2) + + def test_f_zero(self): + res = function.f(1.2, 0.48, 0) + self.assertAlmostEqual(0.043, res, 3) + + def test_task_a_ok(self): + y = function.task_a(1.2, 0.48, 0.7, 2.2, 0.3) + self.assertAlmostEqual(5, len(y)) + + def test_task_b_ok(self): + y = function.task_b(1.2, 0.48, (0.25, 0.36, 0.56, 0.94, 1.28)) + self.assertAlmostEqual(5, len(y)) + + def test_task_a(self): + y = function.task_a(1.2, 0.48, 0.7, 2.2, 0.3) + right_y = [0.361, 0.584, 0.708, 0.661, 0.468] + for i in range(5): + self.assertAlmostEqual(y[i], right_y[i], 3) + + def test_task_b(self): + y = function.task_b(1.2, 0.48, (0.25, 0.36, 0.56, 0.94, 1.28)) + right_y = [0.09, 0.13, 0.26, 0.54, 0.7] + for i in range(5): + self.assertAlmostEqual(right_y[i], y[i], 2) \ No newline at end of file diff --git a/Pipfile b/Pipfile index 1f26574..4bacb5d 100644 --- a/Pipfile +++ b/Pipfile @@ -4,6 +4,7 @@ verify_ssl = true name = "pypi" [packages] +flask = "*" [dev-packages] mypy = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 03a571e..968ffba 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "4894b22932cc8c76e138c68198ce54cb057a7f4b391476c15e3e05d193ceb7f7" + "sha256": "1edd9434c461d42d61275ada5a4ae2425150cdaaf0bd2830843ac3171f76f2cf" }, "pipfile-spec": 6, "requires": { @@ -15,7 +15,118 @@ } ] }, - "default": {}, + "default": { + "click": { + "hashes": [ + "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", + "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + ], + "markers": "python_version >= '3.7'", + "version": "==8.1.3" + }, + "colorama": { + "hashes": [ + "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", + "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + ], + "markers": "platform_system == 'Windows'", + "version": "==0.4.4" + }, + "flask": { + "hashes": [ + "sha256:315ded2ddf8a6281567edb27393010fe3406188bafbfe65a3339d5787d89e477", + "sha256:fad5b446feb0d6db6aec0c3184d16a8c1f6c3e464b511649c8918a9be100b4fe" + ], + "index": "pypi", + "version": "==2.1.2" + }, + "importlib-metadata": { + "hashes": [ + "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700", + "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec" + ], + "markers": "python_version < '3.10'", + "version": "==4.11.4" + }, + "itsdangerous": { + "hashes": [ + "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44", + "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.2" + }, + "jinja2": { + "hashes": [ + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.2" + }, + "markupsafe": { + "hashes": [ + "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", + "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", + "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", + "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", + "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", + "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", + "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", + "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", + "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", + "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", + "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", + "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", + "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", + "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", + "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", + "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", + "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", + "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", + "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", + "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", + "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", + "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", + "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", + "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", + "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", + "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", + "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", + "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", + "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", + "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", + "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", + "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", + "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", + "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", + "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", + "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", + "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", + "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", + "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", + "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.1" + }, + "werkzeug": { + "hashes": [ + "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6", + "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.2" + }, + "zipp": { + "hashes": [ + "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad", + "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099" + ], + "markers": "python_version >= '3.7'", + "version": "==3.8.0" + } + }, "develop": { "flake8": { "hashes": [ @@ -34,32 +145,32 @@ }, "mypy": { "hashes": [ - "sha256:0112752a6ff07230f9ec2f71b0d3d4e088a910fdce454fdb6553e83ed0eced7d", - "sha256:0384d9f3af49837baa92f559d3fa673e6d2652a16550a9ee07fc08c736f5e6f8", - "sha256:1b333cfbca1762ff15808a0ef4f71b5d3eed8528b23ea1c3fb50543c867d68de", - "sha256:1fdeb0a0f64f2a874a4c1f5271f06e40e1e9779bf55f9567f149466fc7a55038", - "sha256:4c653e4846f287051599ed8f4b3c044b80e540e88feec76b11044ddc5612ffed", - "sha256:563514c7dc504698fb66bb1cf897657a173a496406f1866afae73ab5b3cdb334", - "sha256:5b231afd6a6e951381b9ef09a1223b1feabe13625388db48a8690f8daa9b71ff", - "sha256:5ce6a09042b6da16d773d2110e44f169683d8cc8687e79ec6d1181a72cb028d2", - "sha256:5e7647df0f8fc947388e6251d728189cfadb3b1e558407f93254e35abc026e22", - "sha256:6003de687c13196e8a1243a5e4bcce617d79b88f83ee6625437e335d89dfebe2", - "sha256:61504b9a5ae166ba5ecfed9e93357fd51aa693d3d434b582a925338a2ff57fd2", - "sha256:77423570c04aca807508a492037abbd72b12a1fb25a385847d191cd50b2c9605", - "sha256:a4d9898f46446bfb6405383b57b96737dcfd0a7f25b748e78ef3e8c576bba3cb", - "sha256:a952b8bc0ae278fc6316e6384f67bb9a396eb30aced6ad034d3a76120ebcc519", - "sha256:b5b5bd0ffb11b4aba2bb6d31b8643902c48f990cc92fda4e21afac658044f0c0", - "sha256:ca75ecf2783395ca3016a5e455cb322ba26b6d33b4b413fcdedfc632e67941dc", - "sha256:cf9c261958a769a3bd38c3e133801ebcd284ffb734ea12d01457cb09eacf7d7b", - "sha256:dd4d670eee9610bf61c25c940e9ade2d0ed05eb44227275cce88701fee014b1f", - "sha256:e19736af56947addedce4674c0971e5dceef1b5ec7d667fe86bcd2b07f8f9075", - "sha256:eaea21d150fb26d7b4856766e7addcf929119dd19fc832b22e71d942835201ef", - "sha256:eaff8156016487c1af5ffa5304c3e3fd183edcb412f3e9c72db349faf3f6e0eb", - "sha256:ee0a36edd332ed2c5208565ae6e3a7afc0eabb53f5327e281f2ef03a6bc7687a", - "sha256:ef7beb2a3582eb7a9f37beaf38a28acfd801988cde688760aea9e6cc4832b10b" + "sha256:0ebfb3f414204b98c06791af37a3a96772203da60636e2897408517fcfeee7a8", + "sha256:239d6b2242d6c7f5822163ee082ef7a28ee02e7ac86c35593ef923796826a385", + "sha256:29dc94d9215c3eb80ac3c2ad29d0c22628accfb060348fd23d73abe3ace6c10d", + "sha256:2c7f8bb9619290836a4e167e2ef1f2cf14d70e0bc36c04441e41487456561409", + "sha256:33d53a232bb79057f33332dbbb6393e68acbcb776d2f571ba4b1d50a2c8ba873", + "sha256:3a3e525cd76c2c4f90f1449fd034ba21fcca68050ff7c8397bb7dd25dd8b8248", + "sha256:3eabcbd2525f295da322dff8175258f3fc4c3eb53f6d1929644ef4d99b92e72d", + "sha256:481f98c6b24383188c928f33dd2f0776690807e12e9989dd0419edd5c74aa53b", + "sha256:7a76dc4f91e92db119b1be293892df8379b08fd31795bb44e0ff84256d34c251", + "sha256:7d390248ec07fa344b9f365e6ed9d205bd0205e485c555bed37c4235c868e9d5", + "sha256:826a2917c275e2ee05b7c7b736c1e6549a35b7ea5a198ca457f8c2ebea2cbecf", + "sha256:85cf2b14d32b61db24ade8ac9ae7691bdfc572a403e3cb8537da936e74713275", + "sha256:8d645e9e7f7a5da3ec3bbcc314ebb9bb22c7ce39e70367830eb3c08d0140b9ce", + "sha256:925aa84369a07846b7f3b8556ccade1f371aa554f2bd4fb31cb97a24b73b036e", + "sha256:a85a20b43fa69efc0b955eba1db435e2ffecb1ca695fe359768e0503b91ea89f", + "sha256:bfd4f6536bd384c27c392a8b8f790fd0ed5c0cf2f63fc2fed7bce56751d53026", + "sha256:cb7752b24528c118a7403ee955b6a578bfcf5879d5ee91790667c8ea511d2085", + "sha256:cc537885891382e08129d9862553b3d00d4be3eb15b8cae9e2466452f52b0117", + "sha256:d4fccf04c1acf750babd74252e0f2db6bd2ac3aa8fe960797d9f3ef41cf2bfd4", + "sha256:f1ba54d440d4feee49d8768ea952137316d454b15301c44403db3f2cb51af024", + "sha256:f47322796c412271f5aea48381a528a613f33e0a115452d03ae35d673e6064f8", + "sha256:fbfb873cf2b8d8c3c513367febde932e061a5f73f762896826ba06391d932b2a", + "sha256:ffdad80a92c100d1b0fe3d3cf1a4724136029a29afe8566404c0146747114382" ], "index": "pypi", - "version": "==0.950" + "version": "==0.960" }, "mypy-extensions": { "hashes": [ diff --git a/README.md b/README.md index 4c68e76..4d08cff 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Tprogramming_2022_zaochn - +## Макаров Роман ### Установка виртуального окружения ```shell diff --git a/app.py b/app.py new file mode 100644 index 0000000..ac203ac --- /dev/null +++ b/app.py @@ -0,0 +1,70 @@ +from flask import Flask, render_template +from datetime import datetime +from flask import request + +app = Flask(__name__) + +@app.route("/") +def index(): + now = datetime.now() + user = {'username': 'Роман'} + if now.hour > 5 and now.hour < 12: + time_of_day = "morning" + elif now.hour >= 12 and now.hour < 17: + time_of_day = "day" + elif now.hour >= 17 and now.hour < 23: + time_of_day = "evening" + items = ["один", "два", "три", "четыре", "пять"] + return render_template('index.html', title='Home', user=user, time_of_day=time_of_day, items=items) + +@app.route("/simple") +def simple(): + a = request.args.get("a", default=1, type=float) + b = request.args.get("b", default=2) + return f"
Hello, World! {now}
" + +@app.route("/styled") +def hello_styles(): + now = datetime.now() + return f""" +hello_world!
+Текущее время {now}
+""" + +@app.route('/calc', methods=['GET', 'POST']) +def calc(): + a = request.form.get("a", default=0, type=float) + b = request.form.get("b", default=0, type=float) + print(a,b) + return render_template("calc.html", a=a, b=b, result=a+b) + +import cat + +cats = { + "vasya": cat.Cat("vasya", 3), + "barsik": cat.Cat("barsik", 3), + "murzik": cat.Cat("murzik", 3), +} + +@app.route('/cats') +def list_cats(): + return render_template("cats.html", cats = cats) + +@app.route("/cats/Result = {{result}}
+ + \ No newline at end of file diff --git a/templates/cats.html b/templates/cats.html new file mode 100644 index 0000000..c8ea852 --- /dev/null +++ b/templates/cats.html @@ -0,0 +1,13 @@ +{% extends "base_cat.html" %} +{% block main %} +