Найти - Пользователи
Полная версия: НОК и НОД
Начало » Python для новичков » НОК и НОД
1
Dima-python
Добрый день форумчане!
Вот снова я и составил очередную простенькую программу - вычисление НОД и НОК. Я уже одну книжку прочитал и хочу услышать вашу критику про кривые ручки. Заранее спасибо
PEHDOM
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 списки, а операции со списками ссылочные, то ваши функции изменяют входные списки. Нужно хотябы предупреждать об это в докстрингах, а лучше не допускать такого если это не является целью работы функции.
Dima-python
PEHDOM
Огромное спасибо! Да моя невнимательность подвела)

Про списки и оптимизацию огромное спасибо буду иметь в ввиду на будущее. А так все косяки подчистил и выкладываю)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB