Skip to content

3.Кривчанская Елена Ивановна. 614 - #113

Open
Flounderena wants to merge 17 commits into
python-department:mainfrom
Flounderena:task_3
Open

Flounderena wants to merge 17 commits into
python-department:mainfrom
Flounderena:task_3

Conversation

@Flounderena

Copy link
Copy Markdown

No description provided.

@github-actions github-actions Bot added the 614 label Oct 9, 2026
Comment thread src/part3/crud.py
"""
# TODO: реализуйте функцию (используйте своё решение части 2)
return 0
if len(storage) == 0:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нарушение критерия T4. Минус 0,25 балла

Comment thread src/part3/crud.py
)
storage[ind] = new_product
return storage[ind]
if storage[ind][NAME_INDEX] == name:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Эта проверка неверная. Если занятое имя будет принадлежать записи, которая хранится после записи с искомым ID, то эта проверка просто не будет выполнена, и в сторадж попадет дубликат имени. Из-за этой ошибки некоторые тесты не пройдены

Comment thread src/part3/crud.py
"""
# TODO: реализуйте функцию
return 0
name = normalize_product_name(fields[0])

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Использование магических констант для индексации полей продуктов. Нарушение критерия S3. Минус балл

Comment thread src/part3/run_admin.py
quantity = int(s_quantity)
fields = (name, price, quantity)
res = create_product(storage, fields)
if res:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь не следовало использовать явную проверку с принтом. Вы же определили функцию print_result для этих целей. А так получилось явное дублирование логики.

Нарушение критерия S1. Минус балл

Comment thread src/part3/run_admin.py
match command:
case ["help"]:
show_help()
return True

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно было не писать return в каждом case. Достаточно было ограничиться return False для кейса с командой "exit", а return True написать в конце функции. В Python нет провала кейсов, как в C++, так что это корректно бы работало, и сократило бы объем кода

Comment thread src/part3/run_admin.py
case ["show"]:
print(get_storage_str_representation(storage))
return True
case ["create", name, s_price, s_quantity]:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очень хвалю вас за использование match-case. Но, к сожалению, для команд "create" и "update" в шаблонах допущена ошибка. Такой шаблон требует, чтобы имя товара name состояло строго из одного слова. Поэтому команды типа create cordless drill 89.90 12 не обрабатываются, что является ошибкой. Часть тестов не проходит.

Чтобы избежать этой ошибки, следовало записать шаблон следующим образом:

Suggested change
case ["create", name, s_price, s_quantity]:
case ["create", *name, s_price, s_quantity]:

Comment thread src/part3/run_admin.py
if res_d:
print(res_d)
return True
case [_]:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В этом шаблоне допущена ошибка. Шаблон [_] обозначает следующее: коллекция из одного элемента. Т.е. мы будем корректно обрабатывать неизвестные команды только в том случае, если они состоят из одного слова. Если слов будет больше, то мы рискуем не найти нужного обработчика. Обработчика по умолчанию нет, поэтому функция вернет False, что приведет к ошибкам тестирования.

Корректно определять случай по умолчанию следует так:

Suggested change
case [_]:
case _:

Comment thread src/part3/run_admin.py
print(HELP_TEXT)


def print_result(result: object) -> None:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Из-за того, что этот код нигде не используется, он является мертвым. Нарушение критерия M4. Минус 0.5 балла

Comment thread src/part3/utils.py
# TODO: при необходимости добавьте свои вспомогательные функции


def get_storage_str_representation(storage: list[Product]) -> str:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Эта функция нарушает принцип единой ответственности. В ней определена и логика определения максимальной длины полей, и логика форматирования текста.

Нарушение критерия S2. Минус балл

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants