×
  • 1. Установка Python 3.7
  • 2. Варианты выполнения кода. Первая программа
  • 3. Объекты. Числа и операции над ними
  • 4. Переменные в Python. Оператор присваивания
  • 5. Функция input()
  • 6. Функция print()
  • 7. Деление нацело и деление по остатку
  • 8. Функции trunc, floor, ceil
  • 9. Деление нацело и по остатку отрицательных чисел в Python
  • 10. Логический тип Bool. Операции сравнения
  • 11. Cтроки и операции над ними
  • 12. Строки: индексы и срезы
  • 13. Строки и их методы
  • 14. Списки и операции над ними
  • 15. Списки: индексы и срезы
  • 16. Списки и их методы
  • 17. Условный оператор if
  • 18. Вложенный оператор if
  • 19. Множественный выбор elif
  • 20. Цикл while
  • 21. Обход всех цифр числа с помощью while
  • 22. Алгоритм Евклида
  • 23. Цикл while. Нахождение всех делителей числа
  • 24. Цикл while. Инструкции break, continue, else
  • 25. Функция range и итерируемые объекты
  • 26. Цикл for. Обход элементов функции range
  • 27. Цикл for. Обход списков и строк
  • 28. Установка, настройка и использование PyCharm
  • 29. Метод подсчета. Сортировка подсчетом Python
  • 30. Вложенные циклы
  • 31. Вложенные списки
  • 32. Треугольник Паскаля
  • 33. Множества в Python. Тип данных set
  • 34. Словари Python. Операции и методы словаря
  • 35. 4 Ситуации, где полезно использовать словарь
  • 36. Как отсортировать словарь в Python
  • 37. Кортежи (tuple). Операции и методы кортежей
  • 38. Функции (def). Определение и вызов функции
  • 39. Зачем нужны функции в программировании
  • 40. Возвращаемое значение функции. Оператор return
  • 41. Область видимости: локальная, глобальная и встроенная.
  • 42. Вложенные функции Python
  • 43. Замыкания в Python. Closure Python
  • 44. Замыкания в Python Часть 2
  • 45. Передача аргументов. Сопоставление аргументов по имени и позиции
  • 46. *args и **kwargs Python. Передача аргументов в функцию
  • 47. Рекурсия в Python. Рекурсивная функция Часть 1
  • 48. Рекурсия в Python. Рекурсивная функция Часть 2
  • 49. Рекурсивный обход файлов
  • 50. Функция enumerate
  • 51. Анонимная функция Lambda
  • 52. Генераторы списков Python | List comprehension
  • 53. Генераторы списков 2 | List comprehension | Вложенные генераторы списков
  • 54. Выражения-генераторы
  • 55. Функция генератор. Создание генератора при помощи yield
  • 56. Функция map Python.
  • 57. Функция filter
  • 58. Функция zip python
  • 59. Сортировка коллекций в Python. Метод sort и функция sorted
  • 60. Декораторы в Python Часть 1
  • 61. Декораторы в Python Часть 2
  • 62. Сортировка по ключу Python. Аргумент key
  • 63. Установка модулей в Python || Установка пакета Python
  • 64. Работа с файлами в Python. Чтение и запись данных
  • 65. Экранированные и служебные символы в Python
  • 66. Встроенная функция isinstance
  • 67. Функции all и any.
  • 68. Форматирование строк. Метод format
  • 69. F-строка
  • 70. Импорт стандартных модулей
  • 71. Импорт собственных модулей в Python
  • 72. 7 видов вызываемых (callable) объектов в Python
  • 73. Метод split и метод join Python
  • 74. Пакеты в Python. Файл __init__, переменная __all__
  • 75. Работаем с JSON в Python. Парсинг JSON, сохраняем JSON в файл
  • Видео доступно только для спонсоров проекта

    Посмотреть данное видео на Boosty на Patreon

    Оформить спонсорскую подписку можно на Youtube Boosty Patreon

    Рекурсия в Python (part 2)

    В данном уроке мы продолжим знакомиться с рекурсией и разберем решение нескольких задач

    Задача 1

    Первая задача, которую мы рассмотрим, будет связана со строками. По условию на вход программе подается строка, а наша программа должна добавить открывающиеся и закрывающиеся скобки между символами по следующему примеру: "example" -> "(e(x(a(m)p)l)e)"

    Решение задачи следующее:

    def f(s):
        if len(s)==1 or len(s)==2:
            return s
        return s[0]+'('+f(s[1:-1])+')'+s[-1]
    
    s=input()
    print(f(s))

    Подробности о том, как работает данная программа, смотрите в видео.

    Задача 2. Возведение в степень

    При помощи рекурсии необходимо возвести число x в целую стпень n

    def power(x, n):
        if n == 0:
            return 1
        if n < 0:
            return 1 / power(x, -n)
        if n % 2 == 0:
            return power(x, n // 2) * power(x, n // 2)
        else:
            return power(x, n - 1) * x
    
    x = int(input())
    n = int(input())
    print(power(x, n))

    Подробности работы программы смотрите в видео.

    Задача 3. Рекурсивный обход списка

    Нужно обойти элементы многомерного списка с указанием уровня вложенности, на котором располагаются эти элементы.

    a = [1, 2, [2, 3, 4, [3, 4, [2, 3], 5]]]
                
    def rec(spicok, level=1):
        print(*spicok, 'level=', level)
        for i in spicok:
            if type(i) == list:
                rec(i, level + 1)
                
    rec(a)

    Задать вопрос