Уведомления

Группа в Telegram: присоединиться

#1 Июнь 12, 2019 20:36:47

Dima-python
От: Санкт-Петербург
Зарегистрирован: 2019-06-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

НОК и НОД

Добрый день форумчане!
Вот снова я и составил очередную простенькую программу - вычисление НОД и НОК. Я уже одну книжку прочитал и хочу услышать вашу критику про кривые ручки. Заранее спасибо

Прикреплённый файлы:
attachment НОК И НОД.py (1,3 KБ)

Офлайн

#2 Июнь 13, 2019 09:47:54

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 1339
Репутация: +  200  -
Профиль   Отправить e-mail  

НОК и НОД

Dima-python
услышать вашу критику про кривые ручки.
Хмм, ну так навскидку:

     def composit_numb(number: int):
        '''Из каких чисел состоит число'''
из докстринга не совсем понятно(вернее совсем непонятно) что делает эта функция, пришлось читать всю функцию чтобы понять WTF?

 half_number = number / 2 + 1
назначение этой строчки непонятно, переменная half_number нигде больше не используется. Но это мелочи, спишем на невнимательность, мол осталось от “старого алгоритма, не заметили во время оптимизации”

А вот тут уже посерьезнее:
     
...
    print(composit_numb(a), composit_numb(b))
    NOD_ab = NOD(composit_numb(a), composit_numb(b))
    print('НОД({},{}): '.format(a, b), NOD_ab)
    NOK_ab = NOK(composit_numb(a), composit_numb(b))
    print('НОК({},{}): '.format(a, b), NOK_ab)
...
у вас composit_numb(a), composit_numb(b) вызываеться аж 3 раза подряд, эти функции выполняют одну и тоже работу зазря. Конечно на таком маленьком примере это несущественно, а представте что вам нужно обработать миллион-другой чисел(в минту). Подобный подход способен существенно сказаться на быстродействии.

 def NOD(a: list, b: list):
    ....
                b.remove(i)
    ....
def NOK(a: list, b: list):
        .....
                b.remove(let)
        a += b
        ....
Поскольку аргументы функций NOD и NOK списки, а операции со списками ссылочные, то ваши функции изменяют входные списки. Нужно хотябы предупреждать об это в докстрингах, а лучше не допускать такого если это не является целью работы функции.

Отредактировано PEHDOM (Июнь 13, 2019 09:52:11)

Офлайн

#3 Июнь 13, 2019 22:00:11

Dima-python
От: Санкт-Петербург
Зарегистрирован: 2019-06-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

НОК и НОД

PEHDOM
Огромное спасибо! Да моя невнимательность подвела)

Про списки и оптимизацию огромное спасибо буду иметь в ввиду на будущее. А так все косяки подчистил и выкладываю)

Прикреплённый файлы:
attachment НОК И НОД.py (1,5 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version