Задать вопрос
  • Как вставить строку на индекс, вне зависимости от того существует он или нет?

    Maksim_64
    @Maksim_64
    Data Analyst
    def f(l):
        return l[:2]+['Test']+l[2+1:] if len(l) > 2 else l + ['Test']
    Ответ написан
    Комментировать
  • Как вставить строку на индекс, вне зависимости от того существует он или нет?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Из условия четко следует, что в списке либо два, либо три элемента?
    Если да, то пытаетесь изменить нужный элемент по индексу а если падает ошибка IndexError - добавляете значение в конец.
    Если может быть любое количество - проверяете длину и и либо снова меняете элемент по индексу, либо добиваете в конец пока не получится список нужной длинны.
    Ответ написан
    1 комментарий
  • Как вставить строку на индекс, вне зависимости от того существует он или нет?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Ну можно вот так примитивно, но тут все завязано на то, что будет точно либо 2 либо 3 значения в массиве
    if(len(arr) > 2): arr[2] = 'Test'
    else: arr.append('Test')
    Ответ написан
    1 комментарий
  • Как освободить место на компьютере?

    wide_e
    @wide_e
    Начинающий разработчик на C#
    Попробуйте очистить прошлые обновления Windows:
    Проводник -> Этот компьютер -> пкм по диску-> свойства, далее очистка диска. В только что открытом окне ставьте все галочки (Будьте внимательны, корзина тоже есть в том списке) и удаляете файлы.
    Перейдем к очистке прошлых обновлений Windows. Все в том же окне с очисткой выбирает удалить системные файлы. Ну и ставим галочку возле обновлений виндовс. Удаляем
    Также, можно очистить временный кеш. Нажимаем Win + R, пишем %temp% . Далее нажимаем Ctrl + A, Delete. Очищаем. Если жалуется что какое нибудь приложение открыто - пропускаем
    Ответ написан
    Комментировать
  • Как освободить место на компьютере?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Ить, такое впечатление, что я вижу машину времени от Илона Маска. Такой комп был бы хорош лет двадцать назад. Сейчас, как его ни крути - он не станет хоть сколько-нибудь лучше.
    Ответ написан
    Комментировать
  • Как проверить в JSON наличие определенного поля?

    Vindicar
    @Vindicar
    RTFM!
    Элементарная работа со списками и словарями. Азы языка.
    Парсишь строку JSON в объект (назовем его json_obj) через json.load() или json.loads(), смотря что удобнее.
    У тебя объект верхнего уровня - массив, т.е. список. Перебираешь его элементы циклом for item in json_obj.
    Объекты следующего уровня - просто объекты, т.е. словари. Если надо проверить именно наличие поля, безотносительно его значения, то просто 'slot' in item.
    Всё.
    Ответ написан
    2 комментария
  • Какие есть аналоги Android Studio на Ubuntu?

    @Galyminsky
    Android Developer \ UX/UI Designer
    В принципе, сама по себе Android Studio - не сильно требовательная. В основном, вся боль начинается при сборке и запуске проекта на эмуляторе.
    Начинал тоже, с древнего ПК, (там по моему даже 4 ГБ ОЗУ не было).

    Решил проблему - запуском на реальном устройстве, девайсе, вместо эмулятора.
    Ответ написан
    Комментировать
  • Какие есть аналоги Android Studio на Ubuntu?

    GavriKos
    @GavriKos
    Прямых аналогов нет.
    Писать код можете в любом удобном для вас редакторе, а собирать потом в консоли.
    Ответ написан
    Комментировать
  • Стоит ли писать под Android на Python?

    @Galyminsky
    Android Developer \ UX/UI Designer
    Kotlin.
    Про остальное уже забудь, если ты решил заняться Android разработкой.
    Ответ написан
    Комментировать
  • Стоит ли писать под Android на Python?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Под андроид пишут 80% на котлине и 20% на Java, остальные 0% - на C#
    Ответ написан
    Комментировать
  • Что в Windows занимает почти 50 ГБ?

    @NortheR73
    системный инженер
    еще пожиратель дискового места - c:\Windows\SoftwareDistribution\Download\
    Ответ написан
    3 комментария
  • Что в Windows занимает почти 50 ГБ?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    hiberfil.sys — размером с ОЗУ. Если оно вам не надо powercfg -h off.
    C:\Windows\WinSxS содержит множество символических ссылок: показывает много — по факту значительно меньше.
    C:\ProgramData\Package Cache и C:\ProgramData\Packages — инсталляционные пакеты, которые можно перенести на другой диск и сделать символьные ссылки.
    Ответ написан
    1 комментарий
  • Что в Windows занимает почти 50 ГБ?

    @rPman
    c:\AMD - содержит временные файлы установщика драйверов (например на видеокарту), можно (нужно) удалить
    c:\$WinREAgent содержит бакап системы перед очередным крупным обновлением, должен удалиться через некоторое время сам, если у тебя все работает - удаляй
    c:\Recovery смело удаляй, содержит бакап с обновления с другой версии (типа win8 -> win10), на сколько я понимаю крупные обновления win10 так же туда попадают
    c:\Users - пользовательские файлы (документы, рабочий стол), временные и часто приложения, для установки которых не требовались права администратора, чистить этот каталог сложно но там легко десяток гигабайт найти
    например %localappdata%\Temp (можно прямо так в проводнике написать) - временный каталог, где скапливается гигабайтами мусор который надо удалять
    hiberfil.sys — размером с ОЗУ. Если оно вам не надо powercfg -h off.
    используется для быстрого включения/выключения машины без закрытия программ (по умолчанию оно используется даже при обычном выключении, пользовательские программы закрываются но службы и др. остаются и делается hibernate (очень удобно на ноутбуках настроить гибернацию при закрытии крышки)
    Отключить это безопасно, но скорость включения компьютера заметно увеличится (не секунды а минуты на слабом железе).
    c:\System Volume Information - системный каталог, содержит файлы точек восстановления, удалять не надо но можно регулировать процент занимаемого места в настройках восстановления

    p.s. запусти штатный cleanmgr (Освобождение места на диске за счет удаления ненужных файлов) в нем кнопку Очистить системные файлы, и внимательно посмотри на чекбоксики, почти всегда достаточно их отметить все, и нажми ОК

    p.p.s. после чистки лишних файлов, можно еще нажать чекбоксик - Сжимать этот диск для экономии места в свойствах диска, это освободит примерно 30% занятого места (будет долго думать, до неск. часов, выдаст несколько раз ошибки, их можно игнорировать), делать это безопасно, в очень редких случаях (медленный процессор + ssd) будет легкое замедление записи, во всех остальных случаях даже ускорится работа с диском
    Ответ написан
    2 комментария
  • Как понять, почему Windows не обновляется?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    63747f7b23664935215302.png
    Ответ написан
    Комментировать
  • Как получить доступ к управлению воспроизведением неактивного окна?

    @Drno
    либо большой монитор, либо 2 монитора)
    Ответ написан
    Комментировать
  • Как между асинхроными функциями делиться и перекидывать переменные и их значения?

    Vindicar
    @Vindicar
    RTFM!
    Потому что у каждого пользователя должен быть свой экземпляр хранимых данных.
    Например, вместо одиночного хранилища нужно иметь хранилище вида "ключ-значение", где ключом будет ID пользователя, а значением - данные, которые для этого пользователя актуальны.
    Природа этого хранилища не принципиальна: может быть простой словарь (если не нужно сохранение состоятния между перезапусками бота), может быть БД, может быть ещё что.

    Собственно, в аиограме есть механизм Finite State Machine, который как раз про организацию сценариев, с отслеживанием того, на каком этапе находится конкретный пользователь.

    Но для его использования нужно знать питон на уровне немножечко повыше "Если я пытаюсь исплользовать return то код дальше становится недоступным".
    Ответ написан
    Комментировать
  • Телеграм Бот Python. Кнопки и переменные?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Телеграм Бот Python. Кнопки и переменные?
    Нет!
    Ответ написан
    3 комментария
  • Как убрать лишние знаки?

    Vindicar
    @Vindicar
    RTFM!
    Ещё один не выучил основы языка, но пытается работать с БД.

    fectchone() возвращает кортеж, в твоём случае кортеж с одним элементом. Скобки - это строковое представление кортежа. Как вытащить значение из кортежа - читай по ссылке.

    Кортежи, списки и словари - это вообще азы языка. Их надо знать, и узнавать с первого взгляда.
    Ответ написан
    Комментировать
  • Можно ли написать OS на Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Сейчас включу максимального зануду и скажу, что не всё так уж однозначно.
    Вопрос в том, что называть языком. Если языком считать синтаксис, то вполне можно написать транспилер, который будет транслировать питоновский код в сишный код, например, а его уже в машинный.
    ОС, написанная на Си - это скомпилированный машинный код - результат работы компилятора над исходником на языке Си. Да, стандартный компилятор Си может откомпилировать машинный код, а потом стандартный сборщик превратит его в набор файлов операционной системы.
    Стандартный транслятор питона в его байткод и интерпретатор этого байткода не смогут работать самостоятельно без операционной системы, но разве в условии вопроса было сказано про стандартный интерпретатор?

    В общем, писать ОС на питоне - очень странная идея, но и микроскопом теоретически можно попробовать "разминировать" противопехотную мину, особенно если привязать его к длинной штанге и снабдить зарядом взрывчатки, однако это чревато большими и бессмысленными страданиями.

    Простой ответ - нет, питон не предназначен для написания ОС, но использовать его для разработки большОго количества элементов ОС можно.
    Ответ написан
    2 комментария
  • Почему приложение Flask не работает в классе?

    Vindicar
    @Vindicar
    RTFM!
    Чтобы понять, нужно понимать три вещи про питон.
    Во-первых, в нём всё - оператор. Да-да.
    def - это оператор объявления функции.
    class - оператор объявления класса.
    Тебе никто не запрещает сделать
    if condition:
        def foo():
            pass
    else:
        def bar():
            pass


    Во-вторых, все методы класса существуют на уровне класса. Явная передача self на это намекает.
    Иными словами:
    class Foo:
        def bar(self, baz):
            print(self, baz)
    
    foo = Foo()
    # вот этот вызов
    foo.bar('hallo!')
    # полностью эквивалентен вот этому
    Foo.bar(foo, 'hallo!')

    А когда ты обращаешься к foo.bar, Питон конструирует специальный временный объект-обёртку, который ссылается на Foo.bar(), но в то же время подставляет туда первым параметром тот объект foo, к которому произошло обращение. Так что если Foo.bar() принимает два параметра (self и baz), то foo.bar() принимает уже один (baz), так как правильный self будет подставлен этой обёрткой самостоятельно.

    В-третьих, декоратор - это просто синтаксический сахар для вызова функции. Иными словами:
    @app.route('/') 
    def index(self):
        return render_template('index.html')

    будет эквивалентно вот такому коду:
    def index(self):
        return render_template('index.html')
    
    _decorator = app.route('/')
    index = _decorator(index)

    Причем это будет работать одинаково и вне класса, и внутри класса.
    Как это относится к твоему вопросу? А вот как.
    class Web:
        app = Flask(__name__) 
    
        @app.route('/') 
        def index(self):
            return render_template('index.html')

    Последовательность действий тут такова:
    1. Создаётся пространство имён для нового класса, пока что безымянного.
    2. В этом пространстве имён создаётся переменная app, её выражение вычисляется немедленно
    3. В этом пространстве имён создаётся функция index()
    4. Отрабатывает декоратор @app.route(), и регистрирует эту функцию index() как обработчик запроса. Обрати внимание, ни функция index(), ни @app.route понятия не имеют, что index() находится внутри класса! Поэтому app.route не ожидает, что index() будет первым параметром принимать какой-то там self. Как следствие, вместо self функция index() получит то, что передал первым параметром Flask. В данному случае - ничего, так как у тебя роут без параметров.
    5. Ну и в итоге отрабатывает создание класса, с учётом указанных предков (у тебя это неявно указанный object), наполнения пространства имён, и пр. Этот класс потом присваивается переменной Web в вышележащем пространстве имён.

    Ну и как теперь жить?
    А очень просто. Если тебе вот позарезу нужны обработчики роутов в виде методов класса, можно сделать так:
    class Web:
        def __init__(self):
            self.app = Flask(__name__) 
            # получаем обёртку для метода, привязанную к нашему self, см. пункт 2
            self_index = self.index
            # вызываем декоратор вручную, см. пункт 3.
            decorator = self.app.route('/')
            decorator(self_index)
            # ну или то же самое в одну строку:
            self.app.route('/')(self.index)
    
        def index(self):
            return render_template('index.html')

    Разумеется, это не очень удобно. Можно попробовать схитрить, написав свой декоратор, который помечает методы класса ассоциированным роутом, а в конструкторе экземпляра найти все помеченные методы и скормить их фласку одним списком.
    Но я почти уверен, что такой механизм уже кем-то реализован, просто надо поискать... ну или забить на класс, если от него нет выигрыша.
    Ответ написан
    Комментировать