Задать вопрос
  • TypeError: unhashable type: 'list' как исправить?

    phaggi
    @phaggi Куратор тега Python
    Заметки на полях
    Код лучше вставлять в тело вопроса, можно под спойлер.
    Желательно приводить также полный текст ошибки (если длинный, тоже под спойлер).


    По тексту кода вижу несколько мелких косяков, например
    lemmatizer = nltk.WordNetLemmatizer()
    …
    from nltk.stem import WordNetLemmatizer
    …
    
    lemmatizer = WordNetLemmatizer

    Первый lemmatizer создаёт, очевидно, экземпляр класса WordNetLemmatizer
    Но строкаlemmatizer = WordNetLemmatizerво-первых тут же удаляет этот экзмепляр и во-вторых помещает в переменную lemmatizer ссылку на сам класс WordNetLemmatizer.
    Уверен, планировалось что-то другое. Возможно, надо убрать первую строку, а в строке lemmatizer = WordNetLemmatizer()добавить в конце круглые скобки, это, по-идее, поместит в переменную lemmatizer ссылку на экземпляр класса WordNetLemmatizer. Вероятно, именно это было целью всего этого безобразия.

    Затем,words.append(word_list)делает не совсем очевидную вещь:
    words = []
    for i in range(3):
        words_list = ['qwa', 'wow', 'meow']
        words.append(words_list)
    print(words)
    >>> [['qwa', 'wow', 'meow'], ['qwa', 'wow', 'meow'], ['qwa', 'wow', 'meow']]

    т.е. оно добавляет в список words несколько списков, которые были в words_list, но не добавляет в список слов слова из этих списков.
    Возможно, тут надо было использовать метод .extend вместо .append?
    words = []
    for i in range(3):
        words_list = ['qwa', 'wow', 'meow']
        words.extend(words_list)
    print(words)
    
    >>>['qwa', 'wow', 'meow', 'qwa', 'wow', 'meow', 'qwa', 'wow', 'meow']

    Во всяком случае, мне кажется, что сейчас на вход words циклаfor word in wordsпопадают не список слов, а, вероятно, список списков слов.
    Поэтому при итерации по этому списку списков в word попадают не слова, как ожидается по названию и логике строки, а списки слов. Полагаю, .extend, о котором речь выше, исправит ситуацию.
  • Как перед ".png", ".jpeg" и др. добавить новый кусок текста?

    phaggi
    @phaggi Куратор тега Python
    Tera4Byte, это значит, что эту строку можно и нужно вынести из цикла.
    Вне цикла один раз присвоить значение переменной, а в цикле вызывать метод thumbnail с этой переменной в качестве аргумента.

    Зачем в цикле гонять это присваивание? Мелочь, но малоосмысленная и будет атмосферу только греть.
  • Как сделать отображение время по мск в статусе бота discord.py?

    phaggi
    @phaggi Куратор тега Python
    «Где коды, Билли? Нам нужны коды!»

    AgileSingleGuanaco-size_restricted.gif
  • Как перед ".png", ".jpeg" и др. добавить новый кусок текста?

    phaggi
    @phaggi Куратор тега Python
    Tera4Byte, т.е. для каждого файла будет не 200, 200, а свои разрешения? Или всем будет одинаково 200х200?
  • Как перед ".png", ".jpeg" и др. добавить новый кусок текста?

    phaggi
    @phaggi Куратор тега Python
    Мне кажется, ещёimg_size = (200, 200)можно из цикла вытащить. Мелочь, но как-то хочется поровнее.
  • Как можно создать условие if в Python?

    phaggi
    @phaggi Куратор тега Python
    Reikoni, признаться, я не совсем понимаю, что значит if как-то по-другому. Можешь написать, как ты хотел бы видеть этот if? (Пусть нерабочий код, просто смысл).
  • Как можно создать условие if в Python?

    phaggi
    @phaggi Куратор тега Python
    Reikoni, первое, что приходит в голову: сделать словарь, ключи - имена функций (и, возможно, операторов), значения - сами функции. Тогда обработчику надо сделать split и нулевой элемент использовать для вызова функции (или оператора) из словаря по ключу. А остальные элементы от split передавать вызванной функции как аргументы. Кстати, в качестве default значения словаря можно сделать обработку некорректных значений ввода.

    Что-то такое:
    Пример
    def logic(*args):
        action, what1, what2 = args
        if action == "==":
            if what1 == what2:
                print("True")
                return True
            else:
                 print("False")
                 return False
        elif action == "!=":
            if what1 != what2:
                print("True")
                return True
            else:
                 print("False")
                 return False
    
    
    def wrt(*args):
        print(*args)
        return f'printed {args}'
    
    
    def default_func(*args):
        return f'Error {args}'
    
    
    def make_args(*args):
        key = ''
        try:
            if isinstance(args[0], list) or isinstance(args[0], tuple):
                args = args[0]
            elif isinstance(args[0], str):
                args = args[0].split(' ')
            key = args[0]
            args = args[1:]
        except IndexError:
            print('Empty')
        result = []
        result.append(key)
        for i in args:
            result.append(i)
        return tuple(result)
    
    
    def call_func(*args):
        if not args:
            key = 'keyerror'
        else:
            args = make_args(args[0])
            key = args[0]
            if len(args)> 1:
                args = args[1:]
        try:
            result = functions[key](*args)
        except KeyError:
            result = functions['keyerror'](key, *args)
        return result
    
    
    functions = {'logic': logic, 
    'wrt': wrt, 
    'keyerror': default_func}
    
    questions = ['ttt fff aaa',
    'wrt "hello, world!"',
    'wrt hello',
    'logic == 1 1',
    'logic == a 1',
    'logic != True False',
    ['wrt', 'hello list'],
    ['wrt', 1, 2, '\n', '!'],
    ['wrt', '1\n2', '\t!'],
    ()]
    for question in questions:
        print(f'{question}: {call_func(question)}\n')

    spoiler
    я там накостылил, не надо это брать, пожалуйста… просто направление идеи
  • Почему решение идёт не так как нужно?

    phaggi
    @phaggi Куратор тега Python
    брюликам не важно сколько ты н, иногда лучше не давать расписанный ответ, можно дать человеку самому написать код. Впрочем, не настаиваю.
  • Как можно создать условие if в Python?

    phaggi
    @phaggi Куратор тега Python
    alexbprofit, я где-то написал, что надо файл сюда поместить? Нет. Я понимаю, что у него там километр кода. И полагаю, что никто не хочет копаться в этом коде. Поэтому я предложил показать, цитирую:

    код, который должен решать твою проблему, но не решает. Всё лишнее выкинуть, оставить минимум необходимого.


    По моему опыту, такой подход резко повысит шанс получить тут искомый совет.
  • Как можно создать условие if в Python?

    phaggi
    @phaggi Куратор тега Python
    Полагаю, вместо всего этого развесистого описания тебе хорошо бы кратко изложить прямо в вопросе следующее:
    Твой код, который должен решать твою проблему, но не решает. Всё лишнее выкинуть, оставить минимум необходимого. Код обернуть тегом code.

    Показать, что подаётся на вход, что на выходе получается и что ожидается. Если есть ошибки - приведи полный текст ошибки (можно спрятать под спойлер).

    Уверен, так будет больше шансов получить адекватный ответ.
  • Pipenv, как установить package в локальную директорию?

    phaggi
    @phaggi Куратор тега Python
    Признаться, я очень сомневаюсь, что это возможно - потому, что модуль miniupnpc может использовать что-то постороннее, чего может не быть на другом компе. Впрочем, может и сработать - но гарантий никто не даст.
    Ну, можно попробовать разнообразные упаковщики, которые должны собрать все зависимости в кучку - их много разных, я не пробовал, но тут постоянно вопросы по ним задают, там своих детских грабелек разложено... типа pyinstaller и т.п.
  • Как посчитать сумму цикла?

    phaggi
    @phaggi Куратор тега Python
    soremix, только надо добавлять всегда, что книга очень полезная, но очень нудная. Полезность перевешивает нудность, но нудность отпугивает многих.
  • Как посчитать сумму цикла?

    phaggi
    @phaggi Куратор тега Python
    dmshar, с одной стороны, Вы правы и это несколько раздражает.
    Но, с другой стороны, надо учесть, что многие относительно молодые люди живут в мире, в котором информация находится всюду, её не надо запоминать, нужно просто запросить. Это другой мир, это та самая пресловутая игла сингулярности. И мы с вами, динозавры из мира, где люди ходили в библиотеки и сидели там в читальных залах и делали выписки - мы безнадежно отстаём.
    Да, наши дубины гораздо прочнее тросточек молодых людей. Но они уже привыкли к тросточкам. Раздражающе тоненьким и бестолковым.
    Нам их не переучить.
    Но можно возглавить и попробовать повести за собой - хотя бы некоторых.

    Ну, по крайней мере, я так думаю.
  • Как посчитать сумму цикла?

    phaggi
    @phaggi Куратор тега Python
    Начните с форматирования кода - оберните его тегом code.
    А ещё добавьте до цикла переменную со значением ноль, и внутри цикла вместо печати добавляйте к той переменной значение найденного числа.
    В конце выводите значение этой переменной.
    Кстати, наверно можно подумать, может проверять на деление на 21?
  • VK_API, Как сделать проверку на участие человека в беседе?

    phaggi
    @phaggi Куратор тега Python
    А как вы пытались? Покажите свои попытки, даже если они были неудачными.
  • Как сделать эффект рисования прямоугольника?

    Что значит «начертить»? Фотография - это имеется ввиду файл? Но это просто набор байтов. Вы его как-то отображаете на дисплей? Как именно?
    Далее: положим, отобразили; положим, прямоугольник отобразился поверх фото в виде пунктира на дисплее. Но это ничего не меняет в файле фотографии.

    И последнее: вы как-то пробовали хоть что-то такое сделать? Если нет - то маловероятно, что тут кто-то начнёт за вас пробовать. Рекомендую попробовать, показать попытку, что не получается, и тогда коллективный разум ченьть может и придумает.
  • Не работает бот вконтакте, как исправить?

    phaggi
    @phaggi Куратор тега Python
    Yupiter7575, пожалуйста, не повышайте накал страстей, сколь бы возмутительным это безобразие вам ни казалось.
    spoiler

    • Дядюшка Мокус, а можно я брошу в них грязью?
    • Ну что ты, Бамбино! Да, это плохие люди, но у них могут быть хорошие дети!

    :)
    https://youtu.be/yvNQyOafxjk
  • Не работает бот вконтакте, как исправить?

    phaggi
    @phaggi Куратор тега Python
    Дмитрий Пилигузов, вы пришли сюда просить помощи. Постарайтесь сделать так, чтобы те, кого вы просите о помощи, получили максимум удобной информации.
    Вместо скриншотов лучше вставлять код и логи текстом. Не надо давать ссылки на файлообменники - просто вставьте код в вопрос и оберните тегом code. Не надо лепить скриншоты - с ними неудобно работать. Ни копипастить текст с него, ни индексировать, да и на мобилах неудобно.
    Позаботьтесь об удобстве тех, от кого зависит скорость и точность ответа. Это окупится.