Тестирование функции это отличный способ из практики. Благодарю за передаваемую частичку опыта. Обязательно возьму на вооружение! Надеюсь, что с алгоритмом Евклида я больше не встречусь.
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) мой синтакс
@@swaytornado8327 если меньшее делить по остатку на большее, то останется в остатке все меньшее число целиком. Но я бы проверку оставил, для наглядности и понятности кода
Сергей,спасибо Вам огромное! В очередной раз помогли разобраться-все четко и понятно. Уже до написания Вами кода мне стало понятно в какую сторону двигаться)
пара моментов на которые хотелось бы указать.хотелось бы в 3 тесте увидеть время выполнения ну и самое интересное....попробовал я тут побаловаться с рекурсией и написал рекуррентную функцию для алгоритма Евклида....так это что-то просто фантастическое....Нод для астрономических чисел там что то порядка 100**100, 200**200 считает за тысячные доли секунды....это что-то невообразимое просто
Как всегда всё великолепно! Сначала Вы объяснили медленный способ, а потом быстрый. Значит медленный попросту не нужен? Или нужен для более детального понимания?
""" 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секунды)
не могу понять, как при создании функции test_nod с аргументом (func) оно подтягивает тело функции от get_nod ???????? где мы указывает что именно func ссылается на get_nod ??
8:05 пишет имя заранее созданной функции test_nod(запихивает туда get_nod) , отсюда связь. К примеру могу написать look = oop(a,b) ----- nub(look) дальше вызвать функцию def nub(clup - в этот момент можно менять название )
Пока не планирую. Здесь, в принципе, ничего сложного. Главное правильно составлять тесты, чтобы они охватывали все критичные вариации выполнения программы.
а подскажите пожалуйста, а почему в этом примере на 5 мин, если записать проверку тернарным оператором, видает вот такую ошибку? a -= b if a > b else b -= a ^^ SyntaxError: invalid syntax Может кто скажет. Заранее благодарен.
Обе записи одинаковы по смыслу. Просто в первом примере идет множественное присваивание, которое записывается в одну строчку. Тут вопрос личных предпочтений. Кому как удобнее читать код.
Ваш подход к обучению достоин аплодисментов. Объясняете быстро и понятно. Спасибо
Тестирование функции это отличный способ из практики. Благодарю за передаваемую частичку опыта. Обязательно возьму на вооружение! Надеюсь, что с алгоритмом Евклида я больше не встречусь.
Хорошо, что пишете комментарии документации!👍Но, тогда не плохо бы и аннотации принимаемых и возвращаемых типов при объявлении функции указать))
все понятно как пять пальцев. Автору респект.
Сказал фрезировщик 3 разряда
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)
мой синтакс
В быстром алгоритме не нужна проверка if a
Привет. Ты верно заметил! Я по твоему совету не использовал проверку с if и всё заработало. А расскажешь, как это Пайтон так сделал. Спасибо за совет)
Тоже обратил на это внимание!
@@swaytornado8327 если меньшее делить по остатку на большее, то останется в остатке все меньшее число целиком. Но я бы проверку оставил, для наглядности и понятности кода
Отличное видео! Спасибо автору!
Спасибо. Надо писать тесты!
отличное видео, большое спасибо!
Сергей,спасибо Вам огромное! В очередной раз помогли разобраться-все четко и понятно. Уже до написания Вами кода мне стало понятно в какую сторону двигаться)
спасибо👍 а может еще и про тестирование сделаете серию роликов?🤞 былобы ваще супер)👍
Хороший урок, спасибо!
Ты харош, спасибо тебе :)
Спасибо большое
спасибо
спасибо!
Очень интересно. И даже вроде все понятно, но надеюсь не понадобится =)
Теперь знаем что за тесты на степике.
пара моментов на которые хотелось бы указать.хотелось бы в 3 тесте увидеть время выполнения
ну и самое интересное....попробовал я тут побаловаться с рекурсией и написал рекуррентную функцию для алгоритма Евклида....так это что-то просто фантастическое....Нод для астрономических чисел там что то порядка 100**100, 200**200 считает за тысячные доли секунды....это что-то невообразимое просто
Код в студию!
👍
Как всегда всё великолепно! Сначала Вы объяснили медленный способ, а потом быстрый. Значит медленный попросту не нужен? Или нужен для более детального понимания?
👍👍👍👍👍
""" 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секунды)
а можно будет посветить ролик вложенным ф-м?
Это будет
Все это прекрасно, но что насчет НОД для многих чисел?
вкладываешь функцию в функцию. Профит!
не могу понять, как при создании функции test_nod с аргументом (func) оно подтягивает тело функции от get_nod ???????? где мы указывает что именно func ссылается на get_nod ??
8:05 пишет имя заранее созданной функции test_nod(запихивает туда get_nod) , отсюда связь. К примеру могу написать look = oop(a,b) ----- nub(look) дальше вызвать функцию def nub(clup - в этот момент можно менять название )
@@a-km8045 после твоего ответа стало понято ничего
Думаю более корректное название этого видео
#37. Функции тестирования на примере алгоритма Евклида для нахождения НОД | Python для начинающих
По алгебре сейчас проходим евклида
Сергей, скажите, а будут ли ещё видео про тестирования? Думаю, это очень полезно в работе.
Пока не планирую. Здесь, в принципе, ничего сложного. Главное правильно составлять тесты, чтобы они охватывали все критичные вариации выполнения программы.
@@selfedu_rus согласен, тут ничего сложного. Но на будущее - я бы с удовольствием посмотрел примеры тестирования на более серьёзных программах.
А если записать комментарии строчные через #, функция help покажет их?
Нет
а подскажите пожалуйста, а почему в этом примере на 5 мин, если записать проверку тернарным оператором, видает вот такую ошибку?
a -= b if a > b else b -= a
^^
SyntaxError: invalid syntax
Может кто скажет. Заранее благодарен.
из-за оператора -= тернарный оператор должен просто возвращать значение, а не присваивать что-либо переменной
@@selfedu_rus спасибо вам большое за ответ. из-за обузнаности в таких простых вещах, надеюсь будет меньше плохих специалистов и говнокода)
А если числа взаимно простые?
тогда 1
Кто понял объясните быстрый алгоритм ничего не понимаю именно в быстром алгоритме
заранее спасибо
Кто-то может доступным языком объянить отличие a, b = b, a % b от
a = b
b = a % b
Обе записи одинаковы по смыслу. Просто в первом примере идет множественное присваивание, которое записывается в одну строчку. Тут вопрос личных предпочтений. Кому как удобнее читать код.
@@some_dude1 не только множественное присваивание, а еще и кортеж