-
Notifications
You must be signed in to change notification settings - Fork 28
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
Andrey Fesko #7
base: master
Are you sure you want to change the base?
Andrey Fesko #7
Conversation
final_task/test.py
Outdated
self.assertEqual(pycalc.main('222+222'), eval('222+222')) | ||
|
||
def test_module_math_trigonometry(self): | ||
self.assertEqual(pycalc.main('sin(90)'), eval('math.sin(90)')) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Для каких целей тут используется eval
? :)
Можно ведь просто написать math.sin(90)
:)
Для проверки равенства чисел с плавающей точкой я бы использовал метод assertAlmostEqual
: https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertAlmostEqual
потому что с такими числами могут возникать очень интересные и неожиданные вещи, например:
number = 0.1 + 0.1 + 0.1
print(number) # 0.30000000000000004
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Точно, проблемы чисел с плавающей.
P.S. Заранее благодарю за все последующие комментарии:)
final_task/tool.py
Outdated
|
||
|
||
def functions(a, func, b=None): | ||
if func == 'sin': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- вместо этого нужно сделать маппинг, где ключ -- это имя функции, значение -- сама функция. В текущей реализации есть огромное количество условий, которые фактически не нужны
- А что, если есть функции, которые принимают 3 аргумента? четыре? или например совсем могут принимать любое количество аргументов?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, конечно. Исправлю на args.
final_task/tool.py
Outdated
|
||
|
||
def constants_calculation(char): | ||
if char == 'pi': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- а куда пропала
tau
? :) - Для констант советую сделать такой же маппинг, как и для функций
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops. Если правильно понял, то проморгал из-за того, что tau была добавлена только в 3+ версии.
final_task/tool.py
Outdated
if char == '==': | ||
return a == b | ||
if char == '!=': | ||
return a != b |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Файл должен заканчиваться пустой строкой
final_task/tool.py
Outdated
|
||
|
||
def comparison_calculation(a, b, char): | ||
if char == '<': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Советую посмотреть на модуль operator
Возможно он окажется полезным в этой ситуации
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Более чем.
return tool.functions(object_type(result), array[0]) | ||
|
||
|
||
def brackets_calculation(array): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Функции очень большие и очень сложные. Я бы даже сказал крайне сложные. Они делают много вещей одновременно и имеют большую зону ответственности. Советую провести декомпозицию
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Согласен. Понимал когда писал. Исправлю.
…al cases of math module functions.
Последняя версия. С учетом потраченного времени на задание по Golang не реализовано дополнительное задание (--use-modules). |
|
|
test