Ответы пользователя по тегу Python
  • Сохранение данных в PYTHON?

    @immelnikoff
    Изучаю БД
    Обычно для хранения информации используют базы данных.
    Но, если информации немного, то можно хранить её в файле. Но базы данных всё равно предпочтительнее. Хранение данных в файле и их последующее использование – это изобретение уже изобретенных механизмов, которые давно реализованы в СУБД.
    Ответ написан
    2 комментария
  • Как закодировать информацию в определенное количество символов?

    @immelnikoff
    Изучаю БД
    В английском языке всего 26 букв. Итого 52 символа: 26 строчных и 26 прописных букв.
    Если нет никакого ограничения на кодируемую информацию (то есть мы не знаем чего ожидать), то мы можем просто задать свою текстовую кодировку, которая будет представлять поток битов кодируемой информации в символьном виде.
    2⁵ < 52 < 2⁶. Отсюда следует, что 52 символов достаточно, чтобы кодировать каждые 5 бит (использоваться будут только 32 символа) -- 5-битовая кодировка.
    В 15 символах такого текста вы сможете закодировать не более 75 бит информации.
    PS. Оставшиеся 52 - 32 = 20 символов можно использовать для кодирования часто встречающихся последовательностей ранее определенных символов.
    Ответ написан
    Комментировать
  • Как перевести этот код C++ на python?

    @immelnikoff
    Изучаю БД
    Как вариант, можно не переводить этот код на Python, а дернуть его из python-кода с помощью cffi.
    Ответ написан
    Комментировать
  • Ускорить обработку файла?

    @immelnikoff
    Изучаю БД
    from re import sub
    
    pattern = r'^([A-z0-9]*)_([A-z0-9]*)(@.*)?:(.*)$'
    newpattern = r'\1_\2\3:\1'
    resfile = open('result.txt', 'w')
    with open('base.txt') as file:
        for line in file:
            resfile.write(sub(pattern, newpattern, line))
    resfile.close()
    Ответ написан
    Комментировать
  • Как считать количество выполненений методов импортированного класса?

    @immelnikoff
    Изучаю БД
    Как вариант:
    def counter(func):  #декоратор-счётчик
        def wrapper(*args, **kwargs):
            global counts
            func(*args, **kwargs)
            counts[func.__name__] = counts.get(func.__name__, 0) + 1
        return wrapper
            
    
    class Car():
        def __init__(self, speed=100):
            self.speed = speed
            
        @counter
        def up_speed(self, delta):
            self.speed += delta
            
        @counter
        def down_speed(self, delta):
            self.speed -= delta  
        
        def __str__(self):
            return 'Current speed equal ' + str(self.speed)
    
    
    counts = dict()
    x = Car()
    print(x)
    x.up_speed(10)
    x.up_speed(20)
    x.up_speed(30)
    x.down_speed(100)
    print(x)
    print(counts)

    Но так придется прописывать декоратор перед каждым методом. Возможно как-то можно сдекорировать класс целиком.
    Ответ написан
    Комментировать
  • Как мне вывести "YES"?

    @immelnikoff
    Изучаю БД
    ...
    if len(name) != 0:
        print('NO')
    else:
        print('YES')


    Я бы решил так:
    name1 = 'BABBONATALE'
    name2 = 'FATHERCHRISTMAS'
    letters = 'BABCHRISTMASBONATALLEFATHER'
    name = name1 + name2
    for letter in letters:
        if letter in name:
            name = name.replace(letter, '', 1)
        else:
            name = 'x'
            break
    if len(name) != 0:
        print('NO')
    else:
        print('YES')

    А ещё лучше так:
    name1 = 'SANTACLAUS'
    name2 = 'DEDMOROZ'
    letters = 'SANTAMOROZDEDCLAUS'
    if sorted(name1 + name2) != sorted(letters):
        print('NO')
    else:
        print('YES')
    Ответ написан
    5 комментариев