Skip to content

1. Банад Михаил Вячеславович. 614 - #66

Open
phantom686 wants to merge 13 commits into
python-department:mainfrom
phantom686:main
Open

phantom686 wants to merge 13 commits into
python-department:mainfrom
phantom686:main

Conversation

@phantom686

Copy link
Copy Markdown

No description provided.

@phantom686 phantom686 changed the title 1. Банад Михаил Вячеславович. 614. 1. Банад Михаил Вячеславович. 614 Oct 12, 2026
@github-actions github-actions Bot added the 614 label Oct 12, 2026

@EvgrafovMichail EvgrafovMichail left a comment

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.

Баллов за оформление не снижаю. Т.к. часть тестов не пройдено итоговая оценка за ДЗ - 7/10

Comment thread src/part1/constants.py

# Здесь можно добавить собственные вспомогательные константы
# (например, сдвиги полей при сборке идентификатора).
EPOCH_MS_DEFAULT: int = 1288834974657

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.

А зачем удалили typing.Final из аннотаций?

Comment thread src/part1/snowflake.py
"""
# TODO: реализуйте функцию
return 0
return int(int(time.time() * 1000) - epoch_ms)

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.

Лишний int. Такого было бы вполне достаточно:

Suggested change
return int(int(time.time() * 1000) - epoch_ms)
return int(time.time() * 1000) - epoch_ms

Comment thread src/part1/snowflake.py
"""
# TODO: реализуйте функцию
return 0
return int(snowflake_id // (2**TIMESTAMP_SHIFT) + epoch_ms)

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.

Можно было бы реализовать это через битовые операции. Тогда не пришлось бы вызывать int для сохранения корректных аннотаций типов

Comment thread src/part1/snowflake.py
return 0
def decode_node_id(snowflake_id: int, epoch_ms: int = EPOCH_MS_DEFAULT) -> int:
return int(
(

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.

Очень длинная операция, на что указывает ее разбиение на несколько физических строк. Такой код тяжело читать и понимать. Лучше разбить его на несколько простых операций, записанных последовательно на разных физических строках.
Так код читался бы легче:

timestamp_shift_from_epoch = decode_timestamp_ms(snowflake_id, epoch_ms) - epoch_ms
id_without_timestamp = snowflake_id - (timestamp_shift_from_epoch * 2 ** TIMESTAMP_SHIFT)
node_id = id_without_timestamp  // (2 ** NODE_ID_SHIFT)

А так, реализация через битовые операции была бы гораздо проще и лаконичнее

Comment thread src/part1/snowflake.py
"""
# TODO: реализуйте функцию
return 0
return int(snowflake_id - ((snowflake_id // 2**NODE_ID_SHIFT) * (2**NODE_ID_SHIFT)))

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.

Аналогично. Реализация через битовые операции была бы гораздо проще и не требовала бы вызова int.

Comment thread src/part1/snowflake.py
sequence_id: int,
node_id: int = NODE_ID_DEFAULT,
epoch_ms: int = EPOCH_MS_DEFAULT,
sequence_id: int, node_id: int = NODE_ID_DEFAULT, epoch_ms: int = EPOCH_MS_DEFAULT

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.

Зачем изменили группировку параметров и переписали все на одной строке? Так сложнее читать код

Comment thread src/part1/snowflake.py
return 0
current_millis = read_current_millis(epoch_ms)
if current_millis < 0 or current_millis > TIMESTAMP_MS_MAX:
raise ValueError("Превышен максимальный лимит времени")

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.

raise - это очень хорошо. Но в условии задания требовался именно вывод сообщения в stdout с помощью print. Из-за этого часть тестов не пройдена.

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