Skip to content

Volha Halynskaya #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Conversation

Vaires
Copy link

@Vaires Vaires commented May 12, 2019

Знаю, знаю что криво написано. Но все тесты на локальном прошли, это просто попытка показать что работает. Теперь можно и логику переворачивать делая всё более красивым и правильным.

global quantity_arg
quantity_arg = 0
if tokens_operator.__name__ == '<lambda>':
quantity_arg = tokens_operator.__code__.co_argcount
Copy link
Collaborator

Choose a reason for hiding this comment

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

У функции может быть переменное количество аргументов (*args, **kwargs)
Это решение будет работать не всегда

Copy link
Author

Choose a reason for hiding this comment

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

Переписала своё решение, убрала функцию с подсчетом параметров. Теперь их список передается непосредственно в момент анализа параметров внутри скобок, их может быть столько сколько нужно функции.

space_between_operator_error = "ERROR: You have to delete space(s) between the operator(s)."
check = re.findall(r'(=\s+=)|(>\s+=)|(<\s+=)|(!\s+=)|(/\s+/)|(\w\s+\w)', check_expr)
if check:
return space_between_operator_error
Copy link
Collaborator

Choose a reason for hiding this comment

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

Лучше использовать исключения

Vaires added 5 commits May 19, 2019 22:13
Убрала вызов *, разбила на подгруппы
Удалена избыточная функция, часть ручных проверок заменена на механизм исключений, заменено именование словаря
Переписала алгоритм сортировочной станции на функцию не использующую генератор. Убрала избыточный код подсчитывающий количество параметров функции, теперь не используется переменная arg_count, польская запись сама забирает то что считает нужным для вычисления из стека.
И хотя травис сработал корректно, для некоторых функций неверно рассчитывалось количество аргументов. Переделала, теперь алгоритм сортировочной станции считает количество переменных для функции и заносит его в стэк, а затем читает для определения понимания сколько операндов ему взять из стэка. Есть мысли как сделать еще проще польскую нотацию.
Переписала алгоритм обратной польской записи. Существенно упростила её, вырезала часть кода где шел анализ определения списка параметров. Теперь не используется функция с определением числа аргументов, теперь в момент сортировочной станции для всех функций идет числа параметров внутри скобок. Это сделано для подсчета *args , **kwargs
@Vaires Vaires changed the title [WIP] Volha Halynskaya Volha Halynskaya May 29, 2019
@AlexeiBuzuma
Copy link
Collaborator

  1. Сообщения коммитов в гите должны нести какой-то смысл изменения, которое было сделано в этом коммите. Сообщение Update packages не несет особого смысла. Сообщения на русском языке тоже не рекомендуется использовать
  2. Название функции должно четко обозначать, что она делает. Название calc несет очень мало информации и без контекста очень сложно понять, что оно делает
  3. В данном решении есть места, где текст ошибки является возвращаемым значением из функции. Для работы с ошибками в Python есть замечательный механизм исключений.
  4. Наверное освноная проблема решения в том, что функции достаточно тяжело читаются человеком. Функции содержать большое количество логики. В таких больших функциях очень легко допустить ошибку. Разбиение на маленькие функции или классы обычно позволяет делать код более читаемым и менее подверженным случайным ошибкам.
  5. Советую много практиковаться и постоянно писать код. Есть много ресурсов, где можно найти большое количество небольших и интересных заданий. Например https://www.codewars.com/

@Vaires
Copy link
Author

Vaires commented Jun 10, 2019

Спасибо за ревью! Всё будет учтено, а из ресурсов для практики мне очень понравился Sololearn.

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.

3 participants