From 499829ced69356b0dd8fe73f9d2f2d2267728c17 Mon Sep 17 00:00:00 2001 From: ada1ra Date: Thu, 9 Oct 2025 23:34:28 +0300 Subject: [PATCH 1/7] Add rewrited code from task 1.4 --- src/hw_5-1_format/hw_5-1_format.py | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/hw_5-1_format/hw_5-1_format.py diff --git a/src/hw_5-1_format/hw_5-1_format.py b/src/hw_5-1_format/hw_5-1_format.py new file mode 100644 index 0000000..756f08b --- /dev/null +++ b/src/hw_5-1_format/hw_5-1_format.py @@ -0,0 +1,51 @@ +# У вас есть монеты номиналом в длина имени, длина фамилии, длина отчества(если нет, то 19). +# Напишите программу, выписывающую размен считанного с консоли числа, если таковой возможен. +# В противном случае выведите "-42!". +# 3, 10, 8 + +coin1 = 10 # номинал 1-ой монеты +coin2 = 8 # номинал 2-ой монеты +coin3 = 3 # номинал 3-ей монеты +take = '' # число для размена, взятое через input +test = 0 # переменная-флаг для проверки правильности введённого формата + +# проверка правильности введённого формата +while test == 0: + try: + take = int(input('Введите число для размена: ')) + test = 1 + except: + print('Неверный формат!') + +def change(x=0, y=take, z=[0, 0, 0]): + global coin1, coin2, coin3 + + if x == y: + return z # нашли решение, возвращаем его + + if x > y: + return None # превышение суммы, нет решения + + # пробуем добавить монету coin1 + res = change(x + coin1, y, [z[0] + 1, z[1], z[2]]) + if res is not None: + return res + + # пробуем добавить монету coin2 + res = change(x + coin2, y, [z[0], z[1] + 1, z[2]]) + if res is not None: + return res + + # пробуем добавить монету coin3 + res = change(x + coin3, y, [z[0], z[1], z[2] + 1]) + if res is not None: + return res + + return None # решений нет + +result = change() + +if result is None: + print('-42!') +else: + print(f'{result[0]} монет по {coin1}, {result[1]} монет по {coin2} и {result[2]} монет по {coin3}.') From 0bb6ca8562dc9ecfaba4451d27da1b47ae0242b5 Mon Sep 17 00:00:00 2001 From: ada1ra Date: Thu, 9 Oct 2025 23:36:05 +0300 Subject: [PATCH 2/7] Add pyproject.toml --- pyproject.toml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..b477208 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,78 @@ +# ruff.toml +target-version = "py311" +line-length = 100 + +# включить все основные правила +select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings + "F", # Pyflakes + "I", # isort + "N", # pep8-naming + "UP", # pyupgrade + "YTT", # flake8-2020 + "S", # flake8-bandit + "A", # flake8-builtins + "COM", # flake8-commas + "C4", # flake8-comprehensions + "DTZ", # flake8-datetimez + "T10", # flake8-debugger + "EM", # flake8-errmsg + "EXE", # flake8-executable + "ISC", # flake8-implicit-str-concat + "ICN", # flake8-import-conventions + "G", # flake8-logging-format + "INP", # flake8-no-pep420 + "PIE", # flake8-pie + "T20", # flake8-print + "PYI", # flake8-pyi + "PT", # flake8-pytest-style + "Q", # flake8-quotes + "RSE", # flake8-raise + "RET", # flake8-return + "SLF", # flake8-self + "SIM", # flake8-simplify + "TID", # flake8-tidy-imports + "TCH", # flake8-type-checking + "INT", # flake8-gettext + "ARG", # flake8-unused-arguments + "FBT", # flake8-boolean-trap + "B", # flake8-bugbear + "AIR", # flake8-airflow + "PERF", # flake8-perflint +] + +# игнорировать правила +ignore = [ + "E501", # line too long - handled by formatter + "S101", # assert used - ok in tests + "T201", # print found - sometimes needed + "COM812", # trailing comma missing - not always required +] + +# настройки для конкретных файлов +[per-file-ignores] +"__init__.py" = ["F401"] # Unused imports allowed in __init__.py +"tests/**" = ["S101", "SLF001"] # Allow assert and self in tests +"**/migrations/**" = ["ALL"] # Ignore all in migrations + +# настройки форматтера +[format] +indent-style = "space" +quote-style = "double" +skip-magic-trailing-comma = false +line-ending = "auto" + +# настройки для конкретных правил +[flake8-quotes] +docstring-quotes = "double" +inline-quotes = "double" + +[flake8-tidy-imports] +ban-relative-imports = "all" + +[isort] +known-first-party = ["myapp"] +lines-after-imports = 2 +combine-as-imports = true +split-on-trailing-comma = true From bbe5101b81e8e461d86d43ffe0fd51db4c90287b Mon Sep 17 00:00:00 2001 From: ada1ra Date: Thu, 4 Dec 2025 00:14:23 +0300 Subject: [PATCH 3/7] Update ruff.yml --- .github/workflows/ruff.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml index fb8d40a..364eec0 100644 --- a/.github/workflows/ruff.yml +++ b/.github/workflows/ruff.yml @@ -1,11 +1,6 @@ name: Ruff Code Quality Check -on: - push: - branches: [ main, master, develop, feature/** ] - pull_request: - branches: [ main, master, develop ] - +on: [ push, pull_request ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true @@ -30,3 +25,11 @@ jobs: - name: Install Ruff run: | pip install ruff + + - name: Run Ruff check + run: | + ruff check . --output-format=github + + - name: Check code formatting + run: | + ruff format --check . --diff \ No newline at end of file From bfb819f9f3292340bf223d9a4053ebc4b5e87d9c Mon Sep 17 00:00:00 2001 From: ada1ra Date: Thu, 4 Dec 2025 00:14:49 +0300 Subject: [PATCH 4/7] Fix format in homework --- src/hw_5-1_format/hw_5-1_format.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/hw_5-1_format/hw_5-1_format.py b/src/hw_5-1_format/hw_5-1_format.py index 756f08b..3b6480b 100644 --- a/src/hw_5-1_format/hw_5-1_format.py +++ b/src/hw_5-1_format/hw_5-1_format.py @@ -3,9 +3,9 @@ # В противном случае выведите "-42!". # 3, 10, 8 -coin1 = 10 # номинал 1-ой монеты -coin2 = 8 # номинал 2-ой монеты -coin3 = 3 # номинал 3-ей монеты +COIN_1 = 10 # номинал 1-ой монеты +COIN_2 = 8 # номинал 2-ой монеты +COIN_3 = 3 # номинал 3-ей монеты take = '' # число для размена, взятое через input test = 0 # переменная-флаг для проверки правильности введённого формата @@ -14,11 +14,12 @@ try: take = int(input('Введите число для размена: ')) test = 1 - except: + except ValueError: print('Неверный формат!') + def change(x=0, y=take, z=[0, 0, 0]): - global coin1, coin2, coin3 + global COIN_1, COIN_2, COIN_3 if x == y: return z # нашли решение, возвращаем его @@ -26,26 +27,27 @@ def change(x=0, y=take, z=[0, 0, 0]): if x > y: return None # превышение суммы, нет решения - # пробуем добавить монету coin1 - res = change(x + coin1, y, [z[0] + 1, z[1], z[2]]) + # пробуем добавить монету COIN_1 + res = change(x + COIN_1, y, [z[0] + 1, z[1], z[2]]) if res is not None: return res - # пробуем добавить монету coin2 - res = change(x + coin2, y, [z[0], z[1] + 1, z[2]]) + # пробуем добавить монету COIN_2 + res = change(x + COIN_2, y, [z[0], z[1] + 1, z[2]]) if res is not None: return res - # пробуем добавить монету coin3 - res = change(x + coin3, y, [z[0], z[1], z[2] + 1]) + # пробуем добавить монету COIN_3 + res = change(x + COIN_3, y, [z[0], z[1], z[2] + 1]) if res is not None: return res return None # решений нет + result = change() if result is None: print('-42!') else: - print(f'{result[0]} монет по {coin1}, {result[1]} монет по {coin2} и {result[2]} монет по {coin3}.') + print(f'{result[0]} монет по {COIN_1}, {result[1]} монет по {COIN_2} и {result[2]} монет по {COIN_3}.') From df16cc0805a47c75597fd0971fc2c41922c8d4a7 Mon Sep 17 00:00:00 2001 From: ada1ra Date: Thu, 4 Dec 2025 00:26:48 +0300 Subject: [PATCH 5/7] Fix format for ruff --- .../hw_2_3_euclid_algorithm.py} | 11 +++++------ src/hw_5-1_format/hw_5-1_format.py | 16 ++++++++-------- 2 files changed, 13 insertions(+), 14 deletions(-) rename src/{homework_190925/task_2-2_extended-euclidean-algorithm.py => hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py} (57%) diff --git a/src/homework_190925/task_2-2_extended-euclidean-algorithm.py b/src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py similarity index 57% rename from src/homework_190925/task_2-2_extended-euclidean-algorithm.py rename to src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py index f6809cb..08d867a 100644 --- a/src/homework_190925/task_2-2_extended-euclidean-algorithm.py +++ b/src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py @@ -10,11 +10,10 @@ def extended_gcd(a, b): return [gcd, x, y] -a = int(input('Введите первое число: ')) -b = int(input('Введите второе число: ')) +a = int(input("Введите первое число: ")) +b = int(input("Введите второе число: ")) gcd, x, y = extended_gcd(a, b) -print(f'НОД({a}, {b}) = {gcd}') -print(f'Коэффициенты: x = {x}, y = {y}') -print(f'Проверка: ({a})*({x}) + ({b})*({y}) = {a * x + b * y}') - +print(f"НОД({a}, {b}) = {gcd}") +print(f"Коэффициенты: x = {x}, y = {y}") +print(f"Проверка: ({a})*({x}) + ({b})*({y}) = {a * x + b * y}") diff --git a/src/hw_5-1_format/hw_5-1_format.py b/src/hw_5-1_format/hw_5-1_format.py index 3b6480b..0855c81 100644 --- a/src/hw_5-1_format/hw_5-1_format.py +++ b/src/hw_5-1_format/hw_5-1_format.py @@ -4,18 +4,18 @@ # 3, 10, 8 COIN_1 = 10 # номинал 1-ой монеты -COIN_2 = 8 # номинал 2-ой монеты -COIN_3 = 3 # номинал 3-ей монеты -take = '' # число для размена, взятое через input -test = 0 # переменная-флаг для проверки правильности введённого формата +COIN_2 = 8 # номинал 2-ой монеты +COIN_3 = 3 # номинал 3-ей монеты +take = "" # число для размена, взятое через input +test = 0 # переменная-флаг для проверки правильности введённого формата # проверка правильности введённого формата while test == 0: try: - take = int(input('Введите число для размена: ')) + take = int(input("Введите число для размена: ")) test = 1 except ValueError: - print('Неверный формат!') + print("Неверный формат!") def change(x=0, y=take, z=[0, 0, 0]): @@ -48,6 +48,6 @@ def change(x=0, y=take, z=[0, 0, 0]): result = change() if result is None: - print('-42!') + print("-42!") else: - print(f'{result[0]} монет по {COIN_1}, {result[1]} монет по {COIN_2} и {result[2]} монет по {COIN_3}.') + print(f"{result[0]} монет по {COIN_1}, {result[1]} монет по {COIN_2}, {result[2]} монет по {COIN_3}") From 2ac83c6f5965e91d97e5eadd3257cfe1ead99fef Mon Sep 17 00:00:00 2001 From: ada1ra Date: Thu, 4 Dec 2025 00:29:11 +0300 Subject: [PATCH 6/7] Fix format for ruff --- src/hw_5-1_format/hw_5-1_format.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hw_5-1_format/hw_5-1_format.py b/src/hw_5-1_format/hw_5-1_format.py index 0855c81..020abe0 100644 --- a/src/hw_5-1_format/hw_5-1_format.py +++ b/src/hw_5-1_format/hw_5-1_format.py @@ -50,4 +50,6 @@ def change(x=0, y=take, z=[0, 0, 0]): if result is None: print("-42!") else: - print(f"{result[0]} монет по {COIN_1}, {result[1]} монет по {COIN_2}, {result[2]} монет по {COIN_3}") + print( + f"{result[0]} монет по {COIN_1}, {result[1]} монет по {COIN_2} и {result[2]} монет по {COIN_3}." + ) From b10fe8d27d7b37ab00406b077c021512eca19b98 Mon Sep 17 00:00:00 2001 From: ada1ra Date: Thu, 4 Dec 2025 00:33:34 +0300 Subject: [PATCH 7/7] Fix format after merge main --- src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py | 2 +- src/hw_3-2_sort/hw_3-2_sort.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py b/src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py index d3eeda7..08d867a 100644 --- a/src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py +++ b/src/hw_2_3_euclid_algorithm/hw_2_3_euclid_algorithm.py @@ -16,4 +16,4 @@ def extended_gcd(a, b): gcd, x, y = extended_gcd(a, b) print(f"НОД({a}, {b}) = {gcd}") print(f"Коэффициенты: x = {x}, y = {y}") -print(f"Проверка: ({a})*({x}) + ({b})*({y}) = {a * x + b * y}") \ No newline at end of file +print(f"Проверка: ({a})*({x}) + ({b})*({y}) = {a * x + b * y}") diff --git a/src/hw_3-2_sort/hw_3-2_sort.py b/src/hw_3-2_sort/hw_3-2_sort.py index d27e05a..5a3a3d8 100644 --- a/src/hw_3-2_sort/hw_3-2_sort.py +++ b/src/hw_3-2_sort/hw_3-2_sort.py @@ -1,5 +1,6 @@ numbers = [1, 2, 3, 9, 3, 8, 478, 7] + def bubble_sort(nums): # значение для запуска цикла swap = True @@ -14,6 +15,6 @@ def bubble_sort(nums): # перезапускаем цикл, для ещё одной проверки swap = True + bubble_sort(numbers) print(numbers) -