• На что намекает галочка возле корневой папки проекта в PhpStorm

    DWSVad
    @DWSVad Автор вопроса
    Вообщем долго шарил по статьям посвященным phpStorm, в итоге нашел ответ в статье azverin: Продуктивное использование PHPStorm. Спасибо тебе, azverin за нее.

    Как оказалось это закладка, которую я случайно поставил на корневую папку.
    А ставить ее можно на любое место в проекте и части кода файла, с помощью F11.
    И так же легко просмотреть список закладок комбинацией Shift+F11.
    (Приведенные сочетания клавиш — дефолтные)
    Ответ написан
    1 комментарий
  • Как не прерывать python при ошибках, которые не критичны для приложения?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Есть ещё удобный контекстный менеджер для подавления исключений в случаях, когда не требуется какой бы то ни было обработки.
    from requests.exceptions import ConnectTimeout
    from contextlib import suppress
    
    with suppress(ConnectTimeout):
        # code
    Ответ написан
    Комментировать
  • Как реализовать умный перебор по списку?

    adugin
    @adugin Куратор тега Python
    >>> lst = list(range(10))
    >>> lst
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> list(zip(*[iter(lst)]*3))
    [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
    >>> list(zip(*[iter(lst)]*2))
    [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)]
    >>> from itertools import zip_longest
    >>> list(zip_longest(*[iter(lst)]*3, fillvalue=None))
    [(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)]

    import numpy as np
    np.array_split(lst, 3)
    Ответ написан
    Комментировать
  • Почему может не работать код?

    DevMan
    @DevMan
    зачем столько проверок?
    def is_anyone_in(collection, city):
    	for name, ct in collection.items():
    		if ct == city:
    			print('В городе ' + city + ' живёт ' + name + '.')
    ideone.com/0gJjH1
    Ответ написан
    Комментировать
  • Вывод строки, которая начинается с...?

    igorzakhar
    @igorzakhar
    with open('file', 'r') as fp:
    	print len([i for i in fp if i.startswith('123')])
    Ответ написан
    Комментировать
  • Как работает .map в python'e?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    И в Python'е можно через map:
    words = ['hello', 'world']
    with_exclamation = list(map(lambda s: s + '!', words))

    Но более идиоматично воспользоваться списковым включением:
    with_exclamation = [s + '!' for s in words]
    Ответ написан
    Комментировать
  • Python^работа с листами, как объеденить все объекты листа?

    kentuck1213
    @kentuck1213
    def http_method(urls):
        source = ["http://", "https://"]
        my_list = []
        for data in source:
                my_list += [data + urls]
    
        print(my_list)


    def http_method(urls):
        source = ["http://", "https://"]
        return [data + urls for data in source]
    Ответ написан
    1 комментарий
  • Как парсить сайт, использующий Ajax?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Смотрите исходник страницы, берете в руки блокнот и калькулятор и ищете что тут за обсфукация
    Конкретно на этом сайте все просто:

    Находим вашу строчку с "Показать телефон":
    "<div class="toogle-button" id="show-phone_button" blst="313548" lst1="313548" lst2="0">Показать телефон</div>"


    Ищем, где используются эти blst, lst1, lst2 и находим
    function ShowPhones(e)
    {
    	var blst = $(e).attr('blst');
    	var lst1 = $(e).attr('lst1');
    	var lst2 = $(e).attr('lst2');
    	if (blst != "0")
    	{
    		$('.object-builder-phone').each(function ()
    		{
    			<b>ShowAttr(this, "blst", blst);</b>
    ...


    Ищем ShowAttr и находим декодер:
    function ShowAttr(e, attr, value)
    {
    	if ($(e).attr(attr) == "true")
    	{
    		var decrypt = value / 17;
    		var p1 = Math.floor(decrypt / 100);
    		var p2 = decrypt - 100 * p1;
    		var t1 = ("" + p1).substring(1) + '-' + pad(p2, 2);
    		$(e).text($(e).text().replace("...", "") + t1);
    		$(e).attr(attr, 'false');
    	}
    }


    вот и выходит, что blst="313548", делим на 17, получаеем 313548/17 = 18444
    разбиваем на две части, убираем первый символ, добавляем между ними дефис, получаем: 84-44

    Итого +7 495 626-... преобразовывается в +7 495 626-84-44

    P.S. Можно даже проследить логику программиста, который забавно оптимизировал форматирование первой двойки чисел - чтобы не вызывать дополнительно функцию pad для форматирования нулей, он просто добавил 10000, чтобы нули просто были, и их можно было взять через substring. Для второй двойки чисел так нельзя, поэтому там вызывается pad.
    Ответ написан
    Комментировать
  • Как отправить 1000 pапросов за 1 секунду на Python?

    longclaps
    @longclaps
    Зачем теребить покойничка? Уж 2 года как есть asyncio, то, что надо.
    Ответ написан
    Комментировать
  • Как сделать так чтобы после return выполнилось действие?

    astec
    @astec
    Разработчик https://debtstracker.io/
    if delfile == 1:
    result = static_file(filenamegen, root="/Users/seal/Desktop/")
    os.remove(filenamegen)
    # сделать что то
    return result
    Ответ написан
    1 комментарий
  • Для чего нужен random.seed(x) python?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    Все дело в том, что в Питоне, как и в любом другом языке, используется т.н. генератор псевдо случайных чисел. Т.е. random выдает не случайное число, а число которое вычисляется алгоритмом на осное другого числа, по умолчанию это текущее время. random.seed позволяет изменить число, которое передается в random для генерации случайного числа, а т.к. "случайные" числа выдаются одним и тем же алгоритмом, то при одинаковом параметре в random.seed будут и одинаковые "случайные" числа.
    >>> import random
    >>> ['%.2f' % random.random() for i in range(10)]
    ['0.21', '0.66', '0.18', '0.48', '0.86', '0.46', '0.48', '0.04', '0.67', '0.37']
    >>> 
    >>> ['%.2f' % random.random() for i in range(10)]
    ['0.90', '0.68', '0.02', '0.90', '0.63', '0.06', '0.22', '0.14', '0.97', '0.68']
    >>> 
    >>> random.seed(5)
    >>> ['%.2f' % random.random() for i in range(10)]
    ['0.62', '0.74', '0.80', '0.94', '0.74', '0.92', '0.03', '0.47', '0.94', '0.65']
    >>> 
    >>> random.seed(5)
    >>> ['%.2f' % random.random() for i in range(10)]
    ['0.62', '0.74', '0.80', '0.94', '0.74', '0.92', '0.03', '0.47', '0.94', '0.65']
    Ответ написан
    4 комментария
  • Объясните пожалуйста код python?

    @CulHatsker
    Маслину поймал
    itertools.cycle(key) возвращает итератор, в котором по очереди циклично выдаются символы из key (то есть, если итерация дойдёт до последнего символа из key, то следующим он вернет первый символ из key и так без конца).

    zip(string, key) возвращает итератор кортежей, каждую итерацию берутся элементы из каждого аргумента (в данном случае string и key) и возвращается кортеж этих элементов до тех пор, пока во всех итераторах остаются элементы.

    Внутри цикла берется один символ шифруемого текста, один символ ключа, берутся их коды, находится XOR этих кодов а в список добавляется символ с получившимся кодом.

    В конце просто все символы списка склеиваются в одну строку.
    Ответ написан
    Комментировать
  • Вопрос по python(Задачка)?

    @User23
    a = int(input("Введите пожалуйста массу тела: "))
    b = int(input("Введите пожалуйста скорость тела: "))
    Ответ написан
    1 комментарий
  • Разница между двумя датами в днях на питоне?

    RusTech
    @RusTech
    42
    Ответ написан
    Комментировать
  • Python в csv файл пишет только первое значение?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    явное лучшя чем неявное - забыл?

    или режим файла ( 'wb') переключи на дозапись (ab)
    или все в список списков и потом в файл

    второе - правильнее
    Ответ написан
    9 комментариев
  • В чем разница между __init__ и __call__ ?

    ali_aliev
    @ali_aliev
    Разработчик на Django/Python, JavaScript
    __init__ это обычный конструктор, __call__ вызов объекта как функцию. Изначально необходимо понять, что все в питоне является объектом в том числе и функции, поэтому метод __call__ есть и у функций. Этот факт очень легко проверить:

    >>> def name():
    ...     pass
    ...
    >>> dir(name)
    ['__call__', ...


    Если вы создадите класс с методом __call__ и создадите объект, у вас объект "превратится" в функцию. Например:

    >>> class Name(object):
    ...     def __call__(self, first, second):
    ...         return first + second
    ...
    >>> f = Name()
    >>> f(1,2)
    3
    >>>


    В питоне нет магических методов (как их принято называть в пхп). Есть например методы для перегрузки операторов (__getitem__, __setitem__, __index__), протокол итерации (__iter__, __next__), протокол контекстных менеджеров (__exit__, __enter__), управляемые атрибуты (__getattr__, __setattr__, __slots__, __getattribute__), протоколы дескрипторов (__get__, __set__, __delete__) ну и т.д. :)

    P.S. как всегда рекомендую Лутца, там все очень подробно расписано
    Ответ написан
    Комментировать