Ответы пользователя по тегу Python
  • Как декодировать текст?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Правильный ответ
    print(base64.b64decode(text + '=' * (-len(text) % 4)))

    Все же написано в сообщении об ошибке. Строка не добита символами = до нужной длины, чтобы быть кратной 4
    Ответ написан
    Комментировать
  • Как запустить python через php?

    Fockker
    @Fockker Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Главная проблема музыки в России начинающих программистов в том, что они "перерывают интернет" в поисках решения своей задачи. А надо - в поисках того, как разобраться, в чем проблема.
    Потому что само решение и так уже есть.

    Как минимум - в начало пхп скрипта и смотреть на ошибки
    ini_set('display_errors',1);
    error_reporting(E_ALL);
    Ответ написан
    4 комментария
  • Как при работе с MongoDB стандартизировать коллекции?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Да, принято. Без этого, фактически, с Монгой вообще работать невозможно.
    Больше того, учитывая, что (в отличие от нормальных баз данных) имена ячеек всегда хранятся вместе с данными (то есть дублируются столько раз, сколько документов хранится базе), то у монгеров принято давать ключам имена из одной-двух букв для экономии памяти. И эти сокращения тоже надо потом транслировать в человеческие имена. То есть база данных для работы с базой данных становится не прихотью, а жизненной необходимостью.

    Поэтому работа с монгой немного напоминает шизофрению (и это помимо принципиальных факапов этой модной стильной молодежной системы для хранения жизни, вселенной и всего такого)

    в качестве базы данных решено было использовать монгу.

    Флаг в руки и барабан на шею. Безумству храбрых поем мы песню.
    Ответ написан
    Комментировать
  • Как вывести данные из бд через строки?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я тоже долго тупил, но потом понял. Скорее всего, человеку требуется аналог fetch_assoc в РНР. То есть словарь, в котором уже есть имена полей, которые не нужно будет писать руками.
    sqlite_connection = sqlite3.connect('sqlite_python.db')
    sqlite_connection.row_factory = sqlite3.Row
    cursor = sqlite_connection.cursor()
    sqlite_select_query = """SELECT * from sqlitedb_developers"""
    cursor.execute(sqlite_select_query)
    records = cursor.fetchall()
    records = [dict(row) for row in records]
    print(records)

    В итоге получится это самое загадочное "все получить одним returnprint" без цикла.
    Ответ написан
  • Какой максимальный диапазон чисел в for i in range?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Господи, ну нельзя заниматься программированием с такими представлениями о логике.
    Причем не о какой-то там хитрой математической логике, а о логике своих действий.

    Неужели так трудно проверить свое собственное утверждение?
    for i in range(200000, 500000):
        if (i < 200005):
            print(i)
        if (i == 200005):
            print('...')
        if (i > 499995):
            print(i)


    Где здесь 0? Где здесь 208?
    С чего вы взяли, что эти цифры вообще берутся из этого цикла, а не откуда-то еще?

    Программист всегда должен проверять свои догадки.
    И если они не подтвердились, то искать другое объяснение своим проблемам.
    Ответ написан
    1 комментарий
  • Как в mysql.connector отключить добавление одинарных кавычек?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Никак.
    Собирать запрос через f-word и выполнять без параметров.
    Ответ написан
    Комментировать
  • Добрый день. Вопрос по Python связанный с вводом данных. Вводить число надо так чтобы программа принимала числа со знаками после запятой?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Давайте посмотрим на код вашей программы.
    a, b, c, d = map(int, input().split())

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

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Кликаем на адресную строку своего браузера, и пишем, Как вывести общее количество строк в базе данных sql?
    Нажимаем Enter.
    Ответ написан
    3 комментария
  • Объясните/заккоментируйте как работает эта програмка?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    такую программу можно написать в 5 раз короче
    и именно такое решение от вас и ожидается - примитивное, показывающее что вы понимаете самые базовые элементы языка - циклы, работу с переменными, строками.
    Никакие списки тут не нужны.
    От вас требуется продумать в голове алогоритм, и потом реализовать его на Питоне.

    Главное здесь - алгоритм
    Попробуйте для начала изложить его просто словами.
    Ответ написан
    21 комментарий
  • Ошибка sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type. Как исправить?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну хотя бы немного думать своей головой надо, а не просто копировать какие-то строчечки из интернета.
    Метод fetchall() возвращает данные какого типа?
    а в execute() надо передавать данные какого типа?

    Вот реально - неделю назад вы писали код, который был мало того что почти рабочим - он был осмысленным.
    Я понимаю, если бы вы не умели работать с базой данных. Но у вас уже был рабочий код!
    А здесь опять какие-то самолеты из соломы. Попытка получить скалярную переменную с числом из запроса, который возвращает ВСЕ колонки ВСЕХ строк таблицы.

    Для начала вам надо забыть про питон и телеграм, а сесть за консоль SQL
    и научиться писать все запросы, которые понадобятся
    Ответ написан
  • Как распаковать вложенный список?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Наверное, надо проверять элемент исходного списка, является ли он списком, и только тогда распаковывать?
    Если уровень вложенности у нас один, то так и написать
    chained = []
    for item in posl:
        if isinstance(item, list):
            for subitem in item:
                chained.append(subitem)
        else:
            chained.append(item)

    Это будет самый кондовый алгоритм. Задачу можно реализовать и короче, и оптимальнее. Но при изучении программирования надо сначала научиться составлять самому простейшие алгоритмы и их реализовывать, а не просто пытаться использовать по очереди какие-то магические заклинания - авось какое-то сработает. А если не сработает - то идти на Хабр, чтобы тебе его написали.
    Любой красивый код следует применять только тогда, когда ты понимаешь, как он работает, что делает внутри. А если не понимаешь, то лучше сначала разобраться, реализовать тот же алгоритм руками. Иначе ты будешь не программист, а обезьяна с гранатой.

    Если вложенность неограниченная, то придется познакомиться с таким понятием, как рекурсия.
    Ответ написан
    Комментировать
  • Почему возникает TypeError: must be str, not int?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    В качестве аргумента count() ожидает строку, а не число
    Ответ написан
    Комментировать
  • С чего начать изучение python, веб-сайты, приложения,читы или что-то другое?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вот для меня это тоже проблема - не знаю, что ответить, когда задают этот вопрос.
    Пока остановился на ботах. Рекомендую делать бота для телеги. По крайней мере, это очень популярное направление, ну и можно что-то интересное замутить. Бот для изучения английского, например.
    spoiler
    Судя по вопросам здесь, питон+телеграм - это новый пхп+веб. Абсолютное дежавю: точно так же, как 10 лет назад, просто пудовищное количество людей, которые абсолютно не понимают, что они делают, но им всё надо прямо щас.


    Джангу не рекомендую, это ступенькой выше. Это и так-то боль, а если не знать Питона, то совсем будет плохо. Джангу лучше учить после пхп. Потому что на пыхе можно сделать веб-сайт так же просто, как на Питоне - калькулятор. И уже потом, примерно поняв, что к чему, можно садиться за джангу, чтобы имея общее представление об SQL, HTTP, устройстве веб-сайта -уже переходить на ORM, роутинг, MVC.
    Ответ написан
  • Как изменять переменную каждый цикл?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это не нужно делать.
    "Переменная", имя которой может меняться в цикле - это индекс массива. Списка или коллекции.
    В данном случае a - это список, и обращаться к его элементам можно по индексам, a[1], a[2], и так далее

    Соответственно, код будет
    a = []
    i = 1
    while i <= 5:
      a[i] = i
      i += 1
    Ответ написан
    1 комментарий
  • Как изменить определённый элемент списка в цикле for?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну и для коллекции самый кондовый способ
    Надо, всё-таки, перед тем как использовать всякие enumerate, сначала понять как вообще работают циклы.
    i=0
    length = len(votes)
    while i < length:
        votes[i] = votes[i].replace(',', '')
        i += 1
    Ответ написан
    1 комментарий
  • Выходит ошибка с файлами что делать?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Указать правильный путь к файлу
    Ответ написан
    Комментировать
  • Как писать в csv в определенную колонку, а строки со второй?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Не нужно искать решение специфической задачи "как писать в колонку".
    Это всё равно что отдельно искать в гугле ответы на вопросы "как есть борщ", "как есть солянку", "как есть щи".
    Надо освоить несколько базовых понятий, и уже применять их для решения неограниченного круга задач.
    В данном случае надо просто подумать - что такое файл, что такое csv файл, как можно организовать работу с несколькими колонками. А главное - понять, что файл всегда перезаписывается ЦЕЛИКОМ. То есть каждый скрипт должен писать все колонки, а не только свои.
    И всё получится сделать, самыми простыми средствами.

    Если оставить в стороне эпическую кривизну исходной задачи "несколько скриптов пишут в один файл", которая в итоге приведёт к полному удалению информации из файла, то по сути задача сводится к работе со списками.
    Прочитал из файла список списков, заменил или добавил нужные значения, записал в файл. Не бином ньютона.
    Ответ написан
  • TypeError: can only concatenate list (not "str") to list?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Скажите, что, по вашему, означают вот эти скобочки - [ и ]? Они здесь просто для красоты?
    Ответ написан
  • Насколько допустимо с точки зрения стилистики вызывать Exception в конструкции if/else?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос не очень понятен, особенно в части "обрабатывать" можно как через try/catch".

    Если я правильно понял, то задача - выбросить кастомное исключение, и выбор между проверкой через if и поимкой встроенного TypeError с последующим перевыбросом исключения со своим текстом ошибки.

    В этом случае первый вариант однозначно предпочтительнее.
    При ловле исключения будет более сложная логика - его надо не только поймать, но и определить что это именно то, которое мы ждём. И если это какое-то другое, то перевыбросить без изменений.
    Кроме того, исключения в основном используются в исключительных, непредвиденных ситуациях. А здесь случай вполне предвиденный.

    Я бы только инвертировал условие, чтобы во-первых, сделать логику более стройной (проверили - вывалились), а во-вторых, чтобы избавиться от else и убрать лишний отступ.
    if not (isinstance(data_set, list) or isinstance(data_set, tuple)): 
        raise TypeError('argument must be list or tuple')
    return sum(data_set) / len(data_set)


    Но в целом я бы использовал другой подход.
    Если мы хотим свой собственный текст ошибки, то это явно намекает на валидацию данных с последующим информированием пользователя об ошибке.
    А чтобы сделать валидацию, исключения не нужны. Мы просто проверяем полученные данные и выдаём ошибку.

    То есть в реальном коде я бы убрал проверку из функции вообще, а проверял данные при их получении (и выводил ошибку).
    А на случай, если вдруг функция всё равно будет вызвана с неверным типом аргумента, есть системное исключение, 'type' object is not iterable
    Ответ написан
    Комментировать
  • Как подсчитать количество элементов в списке с помощью nunique()?

    Fockker
    @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    подсчитать количество элементов в списке без len, и вывести через print уведомление.

    Этот вопрос звучит настолько по-дурацки, что его вполне можно понять буквально
    count = 0
    for tmp in friends:
        count += 1
    Ответ написан
    Комментировать