Местоположение
Россия

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (3)
  • Как работает функция (рекурсия)?

    2lazy4dat
    @2lazy4dat
    Попробуйте нарисовать на листе стек вызовов:
    gen_bin(3, "")                 # начальный вызов
    --gen_bin(2, "" + "0")             # вызов gen_bin(m-1, prefix + "0"), где m = 3
    ----gen_bin(1, "0" + "0")            # вызов gen_bin(m-1, prefix + "0"), где m = 2
    ------gen_bin(0, "00" + "0")           # вызов gen_bin(m-1, prefix + "0"), где m = 1
    --------print("000")                           # попали в условие m == 0
    ------gen_bin(0, "00" + "1")           # вызов gen_bin(m-1, prefix + "1"), где m = 1
    --------print("001")                           # попали в условие m == 0
    ----gen_bin(1, "0" + "1")            # вызов gen_bin(m-1, prefix + "1"), где m = 2
    ------gen_bin(0, "01" + "0")           # вызов gen_bin(m-1, prefix + "0"), где m = 1
    --------print("010")                           # попали в условие m == 0
    ------gen_bin(0, "01" + "1")           # вызов gen_bin(m-1, prefix + "1"), где m = 1
    --------print("011")                           # попали в условие m == 0
    --gen_bin(2, "" + "1")             # вызов gen_bin(m-1, prefix + "1"), где m = 3
    ----gen_bin(1, "1" + "0")            # вызов gen_bin(m-1, prefix + "0"), где m = 2
    ------gen_bin(0, "10" + "0")            # вызов gen_bin(m-1, prefix + "0"), где m = 1
    --------print("100")                            # попали в условие m == 0
    ------gen_bin(0, "10" + "1")            # вызов gen_bin(m-1, prefix + "1"), где m = 1
    --------print("101")                            # попали в условие m == 0
    ----gen_bin(1, "1" + "1")            # вызов gen_bin(m-1, prefix + "1"), где m = 2
    ------gen_bin(0, "11" + "0")            # вызов gen_bin(m-1, prefix + "0"), где m = 1
    --------print("110")                            # попали в условие m == 0
    ------gen_bin(0, "11" + "1")            # вызов gen_bin(m-1, prefix + "1"), где m = 1
    --------print("111")                            # попали в условие m == 0


    Еще как вариант, чтобы понять как работает рекурсия, выводить значения переменных m и prefix:
    n = 3
    
    def gen_bin(m, prefix=""):
        print("  " * (n - m) + "Begin")
        print("  " * (n - m) + "m =", m)
        print("  " * (n - m) + "prefix =", prefix)
    
        if m == 0:
            print("  " * (n - m) + prefix)
            print("  " * (n - m) + "End")
            return
        
        print("  " * (n - m) + "Call gen_bin(m-1, prefix + '0')")
        gen_bin(m - 1, prefix + "0")
    
        print("  " * (n - m) + "Call gen_bin(m-1, prefix + '1')")
        gen_bin(m - 1, prefix + "1")
    
        print("  " * (n - m) + "End")
    
    gen_bin(n)
    Ответ написан
    1 комментарий
  • Как обрезать строку с первого до определенного символа?

    2lazy4dat
    @2lazy4dat
    В питоне есть срезы:
    a = "ABCDEFG"
    print(a[1:3])  # "BC" - вырезает с первого (включительно) до 3-его символа (не включительно)


    Если есть конкретный повторяющийся паттерн, например "Lalala", то можно разделить всю строку по "Lalala" и затем выбирать то, что нужно (только лишние пробелы будут присутствовать):
    a = '2 12574765324:55644652 Lalala Tralala...'
    a_split_list = a.split('Lalala')    #  Будет список: ['2 12574765324:55644652 ', ' Tralala...']


    Можно использовать метод find у string:
    a = '2 12574765324:55644652 Lalala Tralala...'
    index = a.find('Lalala')     #  Находит на каком месте впервые встречается 'Lalala'
    print(a[0 : (index - 1)])
    Ответ написан
    Комментировать
  • Как запретить закрытие консоли?

    2lazy4dat
    @2lazy4dat
    С помощью модуля pywin32.
    Пример
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (2)