#37. Алгоритм Евклида для нахождения НОД | Python для начинающих

Sdílet
Vložit
  • čas přidán 13. 09. 2021
  • Обучающий курс: stepik.org/course/100707
    Делаем быстрый алгоритм Евклида и тестируем его с помощью тестирующей функции.
    Telegram-канал: t.me/python_selfedu

Komentáře • 47

  • @MSMA8423
    @MSMA8423 Před 7 měsíci +3

    Ваш подход к обучению достоин аплодисментов. Объясняете быстро и понятно. Спасибо

  • @rustambox
    @rustambox Před 2 lety +15

    Тестирование функции это отличный способ из практики. Благодарю за передаваемую частичку опыта. Обязательно возьму на вооружение! Надеюсь, что с алгоритмом Евклида я больше не встречусь.

  • @user-gf7fr8qw2e
    @user-gf7fr8qw2e Před 2 lety +6

    все понятно как пять пальцев. Автору респект.

  • @alexanderdark
    @alexanderdark Před 2 lety +14

    Хорошо, что пишете комментарии документации!👍Но, тогда не плохо бы и аннотации принимаемых и возвращаемых типов при объявлении функции указать))

  • @x-user-agent
    @x-user-agent Před 2 lety +13

    спасибо👍 а может еще и про тестирование сделаете серию роликов?🤞 былобы ваще супер)👍

  • @user-ck1ut3qn3f
    @user-ck1ut3qn3f Před 17 dny +1

    Ты харош, спасибо тебе :)

  • @user-xv7sh6lp7o
    @user-xv7sh6lp7o Před 2 lety +4

    Отличное видео! Спасибо автору!

  • @user-tb2jp7kg2c
    @user-tb2jp7kg2c Před 2 lety +4

    отличное видео, большое спасибо!

  • @vladimirastrelin1719
    @vladimirastrelin1719 Před 2 lety +2

    Круто..реально, очень интересно. Спасибо большое за полезный урок!

  • @andredru4278
    @andredru4278 Před 5 měsíci +1

    Спасибо. Надо писать тесты!

  • @ekaterinad3350
    @ekaterinad3350 Před rokem +1

    Сергей,спасибо Вам огромное! В очередной раз помогли разобраться-все четко и понятно. Уже до написания Вами кода мне стало понятно в какую сторону двигаться)

  • @donfedor007
    @donfedor007 Před 2 lety +3

    Хороший урок, спасибо!

  • @assiyasabyrova8578
    @assiyasabyrova8578 Před rokem +1

    Спасибо большое

  • @return_1101
    @return_1101 Před 2 lety +4

    Теперь знаем что за тесты на степике.

  • @ibrahimoglu
    @ibrahimoglu Před 2 lety +6

    👍

  • @jamjam3337
    @jamjam3337 Před rokem +1

    спасибо!

  • @igorandante
    @igorandante Před 2 lety +21

    В быстром алгоритме не нужна проверка if a

    • @swaytornado8327
      @swaytornado8327 Před rokem +1

      Привет. Ты верно заметил! Я по твоему совету не использовал проверку с if и всё заработало. А расскажешь, как это Пайтон так сделал. Спасибо за совет)

    • @user-LvSerg777
      @user-LvSerg777 Před 4 měsíci

      Тоже обратил на это внимание!

  • @user-hi1bw5gb3r
    @user-hi1bw5gb3r Před 2 lety +1

    Очень интересно. И даже вроде все понятно, но надеюсь не понадобится =)

  • @gayratsaidakhmedov5451
    @gayratsaidakhmedov5451 Před 6 měsíci +1

    спасибо

  • @impellergimpeller5133
    @impellergimpeller5133 Před 2 lety +3

    👍👍👍👍👍

  • @user-jz8ik6ck8o
    @user-jz8ik6ck8o Před 2 lety +2

    пара моментов на которые хотелось бы указать.хотелось бы в 3 тесте увидеть время выполнения
    ну и самое интересное....попробовал я тут побаловаться с рекурсией и написал рекуррентную функцию для алгоритма Евклида....так это что-то просто фантастическое....Нод для астрономических чисел там что то порядка 100**100, 200**200 считает за тысячные доли секунды....это что-то невообразимое просто

    • @Youtubbber
      @Youtubbber Před 10 měsíci +1

      Код в студию!

  • @ney107-iz6xl
    @ney107-iz6xl Před 2 měsíci +1

    a, b = [int(input()) for _ in range(2)]
    def func(a, b):
    while a != 0 or b != 0:
    res = [b % a if a < b else a % b]
    return res
    result = func(a, b)
    print(result)
    мой синтакс

  • @tbassir9076
    @tbassir9076 Před rokem +1

    Как всегда всё великолепно! Сначала Вы объяснили медленный способ, а потом быстрый. Значит медленный попросту не нужен? Или нужен для более детального понимания?

  • @user-el5ee9ip3t
    @user-el5ee9ip3t Před 2 lety +1

    По алгебре сейчас проходим евклида

  • @funnydc9955
    @funnydc9955 Před rokem +1

    не могу понять, как при создании функции test_nod с аргументом (func) оно подтягивает тело функции от get_nod ???????? где мы указывает что именно func ссылается на get_nod ??

    • @a-km8045
      @a-km8045 Před rokem

      8:05 пишет имя заранее созданной функции test_nod(запихивает туда get_nod) , отсюда связь. К примеру могу написать look = oop(a,b) ----- nub(look) дальше вызвать функцию def nub(clup - в этот момент можно менять название )

    • @ToN95
      @ToN95 Před 6 měsíci

      @@a-km8045 после твоего ответа стало понято ничего

  • @michailpty6302
    @michailpty6302 Před 8 měsíci

    Думаю более корректное название этого видео
    #37. Функции тестирования на примере алгоритма Евклида для нахождения НОД | Python для начинающих

  • @yuriitkachenko2115
    @yuriitkachenko2115 Před 2 lety +4

    а можно будет посветить ролик вложенным ф-м?

  • @denistalko6585
    @denistalko6585 Před 2 lety +4

    Сергей, скажите, а будут ли ещё видео про тестирования? Думаю, это очень полезно в работе.

    • @selfedu_rus
      @selfedu_rus  Před 2 lety +2

      Пока не планирую. Здесь, в принципе, ничего сложного. Главное правильно составлять тесты, чтобы они охватывали все критичные вариации выполнения программы.

    • @denistalko6585
      @denistalko6585 Před 2 lety +1

      @@selfedu_rus согласен, тут ничего сложного. Но на будущее - я бы с удовольствием посмотрел примеры тестирования на более серьёзных программах.

  • @swaytornado8327
    @swaytornado8327 Před rokem +1

    а подскажите пожалуйста, а почему в этом примере на 5 мин, если записать проверку тернарным оператором, видает вот такую ошибку?
    a -= b if a > b else b -= a
    ^^
    SyntaxError: invalid syntax
    Может кто скажет. Заранее благодарен.

    • @selfedu_rus
      @selfedu_rus  Před rokem +1

      из-за оператора -= тернарный оператор должен просто возвращать значение, а не присваивать что-либо переменной

    • @swaytornado8327
      @swaytornado8327 Před rokem +2

      @@selfedu_rus спасибо вам большое за ответ. из-за обузнаности в таких простых вещах, надеюсь будет меньше плохих специалистов и говнокода)

  • @user-kt4yy5cf5e
    @user-kt4yy5cf5e Před 2 lety +1

    А если записать комментарии строчные через #, функция help покажет их?

  • @swaytornado8327
    @swaytornado8327 Před rokem +1

    """ test 3 """
    a, b = 2, 1000000000000000000000000000000000000
    st = time.time()
    res = func(a, b)
    et = time.time()
    dt = et - st
    if res == 2 and dt < 1:
    print('test 3 is Ok!')
    else:
    print('test 3 is Bad!')
    6
    Help on function get_nod in module __main__:
    get_nod(a, b)
    Визначаємо НЗД(найбільший загальниц дільник) для натуральних чисел a і b
    по швидкому алгоритму Евкліда
    :param a: перще натуральне число
    :param b: друге натуральне число
    :return: НЗД
    test 1 is Ok!
    test 2 is Ok!
    test 3 is Ok!
    Дальше не стал мучать ноут, хотя хочу ответить, что результат выводился в пределах 1секунды)

  • @ney107-iz6xl
    @ney107-iz6xl Před 9 měsíci

    Кто понял объясните быстрый алгоритм ничего не понимаю именно в быстром алгоритме
    заранее спасибо

  • @user-zm3ll4un7n
    @user-zm3ll4un7n Před rokem

    А если числа взаимно простые?

  • @Kerogas_
    @Kerogas_ Před 9 měsíci +1

    Кто-то может доступным языком объянить отличие a, b = b, a % b от
    a = b
    b = a % b

    • @some_dude1
      @some_dude1 Před 5 měsíci

      Обе записи одинаковы по смыслу. Просто в первом примере идет множественное присваивание, которое записывается в одну строчку. Тут вопрос личных предпочтений. Кому как удобнее читать код.