Как найти нужный кортеж в списке python?
У меня есть кортежи в списке:

[
    (1, '[email protected]', 'mark'),
    (2, 'te[email protected]', 'alisa'),
    (3, '[email protected]', 'elon')
]

Как найти индекс кортежа, в котором имя будет '
alisa'?

a = [
    (1, '[email protected]', 'mark'),
    (2, '[email protected]', 'alisa'),
    (3, '[email protected]', 'elon')
]

idx = [*map(lambda x: x[2], a)].index('alisa') # либо list(map(...))...


Задача: разбить названия фильмов из файла csv на отдельные слова и посчитайте все слова и кол-во их упоминаний
Есть файл
.csv со следующей структурой:

movieId, title, genres

1,Toy Story (1995),Adventure|Animation|Children|Comedy|Fantasy,
2,Jumanji (1995),Adventure|Children|Fantasy,
3,Grumpier Old Men (1995),Comedy|Romance,
4,Waiting to Exhale (1995),Comedy|Drama|Romance

Необходимо написать скрипт в Python, в котором разбить названия фильмов на отдельные слова и все эти слова посчитать.
Сейчас написан следующий код:

with open ('C:\file.csv', 'r') as f:
    for row in f:
        line_list = row.strip().split(',')
        line = line_list[1]
        line_1 = line.title().split()
        print(line_1)

Результат такой, дальше продвинуться не могу

['Title']
['Toy', 'Story', '(1995)']
['Jumanji', '(1995)']
['Grumpier', 'Old', 'Men', '(1995)']
['Waiting', 'To', 'Exhale', '(1995)']

Это все довольно легко сделать с помощью pandas (я взял другой csv, потому что ваш - не показателен):

import pandas as pd

s = pd.read_csv("movies.csv", usecols=[1], squeeze=True)
res = s.str.replace(r"\(.+\)","", regex=True).str.extractall("(\S+)").reset_index()[0].value_counts().nlargest(10)

Заметьте, я удаляю указание года в названии фильма. Если этого делать не нужно, просто убираем
.replace(r"\(.+\)","", regex=True). Метод nlargest(10) показывает первые 10 наиболее часто встречающихся названий. Если нужно все показать, просто убираете этот метод.
res:

The       9
and       9
of        6
the       5
Love      4
You       4
in        4
a         3
Juliet    3
Day       3


Python как очистить строку от тегов Kivy
Использую фрэймворк Kivy. У него есть свои теги для текста. Например:

[color=#ff0000]color text[/color],
[b]bold text[/b], и т.д.
Мне нужна функция, которая будет очищать строку от этих тегов. Например:

my_str = "[color=#00ff00]Some [/color][b]beautiful [/b][size=24][b]text[/b][/size]."

my_str = ClearTags(my_str)

print(my_str)
# Outputs: "Some beautiful text."

Можно использовать регулярные выражения:
<code>
import re

def ClearTags(value):
   return re.sub(r'\[.*?\]', '', value)
</code>


как сократить время программы
нужно сократить время программы до 5 секунд

t = int(input())
n = []
for i in range(t):
    p, a = list(map(int, input().split()))
    b = str(a ** (p - 2) % p)
    n.append(b)
print('\n'.join(n))

Обратное число
В этой задаче нужно ответить на
1 ≤ t ≤ 10^5 запросов. Каждый запрос состоит из двух целых чисел
2 ≤ p ≤ 10^9 и
0 < a < p, число
p является простым. На каждый запрос нужно вывести в отдельной строке целое число
0 < b < p такое, что
(ab − 1) ⋮ p.
Входные данные:

4
5 1
5 2
5 3
5 4

Выходные данные:

1
3
2
4

Задачу понял отлично, но как сократить время выполнения не имею представления.

Судя по строчке с
b, вы знаете, что вычисляете обратный элемент по простому модулю
р через возведение в степень.
Однако само возведение можно ускорить, используя функцию
pow  с тремя аргументами.
Она и все вычисления сделает по модулю, большие числа не будут участвовать, и бинарное возведение в степень за
log p применит


Запрос к telegram API не удался. Ошибка 404
Код:

import telebot
token = 'token'
bot = telebot.TeleBot(token)
@bot.message_handler(content_tipes=["text"])
def get_text_messages(message):
    if message.text == "Привет":
        bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?")
    elif message.text == "/help":
        bot.send_message(message.from_user.id, "Напиши привет")
    else:
        bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help")

bot.polling(none_stop=True, interval=0)

При запуске выдает ошибку:

2021-06-26 23:19:57,009 (__init__.py:544 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. Error code: 404. Description: Not Found"

На будущее - не светите свой токен! Если узнать хоть один
chat_id юзера, или к примеру даже ваш - можно послать
POST-запрос, не от вашего имени. Сгенерируйте у
BotFather новый токен.
А проблема в том, что вы неправильно указали токен. Уберите с двух сторон знак
%, он там не нужен.

import telebot
token = 'token'
bot = telebot.TeleBot(token)
@bot.message_handler(content_tipes=["text"])
def get_text_messages(message):
    if message.text == "Привет":
        bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?")
    elif message.text == "/help":
        bot.send_message(message.from_user.id, "Напиши привет")
    else:
        bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help")

bot.polling(none_stop=True, interval=0)


Как сделать проверку переменной по классу?
Код:

speed = 0

class Novice():
    def __init__(self, first_speed, last_speed):
        self.first_speed = first_speed
        self.last_speed = last_speed

novice = Novice(0, 99)

if speed == novice:
    print('You are Novice!')
else:
    pass

Значит, мне нужно, чтоб когда переменная
speed равнялась от 0 до 99 писалось в консоль:
You are Novice!. А если меньше то ничего, т.е.
pass. Как это сделать?

попробуйте так:
<code>
speed = 0

class Novice():
    def __init__(self, first_speed, last_speed):
        self.first_speed = first_speed
        self.last_speed = last_speed

novice = Novice(0, 99)

if speed >= novice.first_speed and speed < novice.last_speed:
    print('You are Novice!')
else:
    pass
</code>


Идентифицировать элементы в двоичных списках с помощью одной цифры

array = [["a", "b"], ["c", "d", "f"], ["g"], ["h", "j", "k", "l", "m"]]

Есть такой список, представим что у каждого элемента в подписке есть свой уникальный номер начинающийся с 1.

a = 1
b = 2
c = 3
d = 4
и тд..

Как можно спарсить нужный элемент лишь вводя его номер который я показывал выше, то есть на выходе нужно получить (пример):

IN: 1
OUT: a

IN: 5
OUT: f

и тд..

Если ух вам нужно получить координаты значения, то можно сделать так:

import pandas as pd

array = [["a", "b"], ["c", "d", "f"], ["g"], ["h", "j", "k", "l", "m"]]

def get_loc(idx:int):
    letters = []
    [letters.extend(x) for x in array]
    df = pd.DataFrame(array)
    res = df.where(df==letters[idx]).dropna(how='all').dropna(axis=1)
    return (letters[idx], res.index[0], res.columns[0])

get_loc(4)

('f', 1, 2)

То есть, под индексом 4 (начиная с нуля) в плоском списке находится f, которая в исходном списке является вторым элементом первого списка (тоже счет с нуля. если нужно, просто прибавьте в функции единицы).
UPDATE
Как выяснилось, элементы в подсписках могут повторятся (неуникальны). В таком случае решение принимает вид:

import pandas as pd

array = [["a", "b"], ["c", "a", "f"], ["g"], ["h", "j", "k", "b", "m"]]

def get_loc(idx:int):
    letters = []
    [letters.extend(x) for x in array]
    df = pd.DataFrame(array)
    res = df.where(df==letters[idx]).dropna(how='all').dropna(how="all", axis=1)
    return (letters[idx], tuple(zip(res.index, res.columns)))

get_loc(1)

('b', ((0, 1), (3, 3)))

Опять же, все считается с нуля.


Как сгенерировать случайную строку, которое не будет начинаться с определённой цифры?
Есть примерный код:

import random
import string

number = ''.join(random.choice(string.ascii_lowercase + string.digits) for i in range(5))

print(number)

Мне необходимо, чтобы генерировалось выражение, которое никогда не будет начинаться с определённой цифры (Например "0")
Причём генерироваться будет много раз. Поэтому нужно, чтобы сразу верное было

Пример:
"0hsf3" - Такое мне не нужно
"g0se2" - А вот такое в самый раз

Может есть какой-то модуль, который позволяет так сделать?

import random
import string

number = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(5))
number = number.replace("0", random.choice(string.ascii_lowercase), 1) if number.startswith("0") else number
print(number)


Как сохранить на сервер альбом фотографий от юзера Python Aiogram
Всем привет! Столкнулся с проблемой: Как сохранить все фотографии отправленные боту на сервере
Пробовал способ с этого решения
Но способ оказался не рабочим. Подскажите пожалуйста как решить проблему

Все отправленные ранее изображения никак нельзя вывести (если память мне не изменяет), но можно сохранять отправленные юзером изображения.
Чтоб сохранить изображение на сервере Telegram - его сначала нужно загрузить, и затем получить его идентификатор. Telegram высылает для одного изображения несколько идентификаторов, последний имеет наибольшее разрешение. Идентификатор нужно где-то хранить, его можно записать, например, в базу данных.
Как получить этот идентификатор, привожу ниже:

from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram import Bot

bot = Bot('token')
dp = Dispatcher(bot)

@dp.message_handler(content_types=["photo"])
async def get_photo(message):
    file_id = message.photo[-1].file_id
    print(file_id) # этот идентификатор нужно где-то сохранить
    await bot.send_photo(message.chat.id, file_id)

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

Это распечатает идентификатор, и сразу же отправит его вам уже из сервера Telegram
Если же нужно скачать именно на локальный компьютер, то вот код попроще:

from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram import Bot

bot = Bot('token')
dp = Dispatcher(bot)

@dp.message_handler(content_types=["photo"])
async def get_photo(message):
    file_info = await bot.get_file(message.photo[-1].file_id)
    await message.photo[-1].download(file_info.file_path.split('photos/')[1]) # ++

if __name__ == '__main__':
    executor.start_polling(dp)


Aiogram bot . Quiz
пишу бота для телеграм . Возникла проблема с обработкой опросника
<code>
@dp.message_handler(commands=['test'])       # обработка команды1
async def process_command_1(message: types.Message):
    quiz = get_quiz(1)
    for question in quiz:
        correct_option_id = get_question_correct_answer(question['options'])
        options = [option['text'] for option in question['options']]
        await bot.send_poll(chat_id=message.chat.id, question=question['task_text'], type='quiz', is_anonymous=False, cprrect_option_id=correct_option_id, options=options)
        await sleep(10)
</code>
Хочу, чтобы
когда пользователь ответил на тест, сразу же выкидывался следующий вопрос, на данный момент реализовано с помощью функции sleep(). Помогите , пожалуйста, заранее спасибо!

Вы можете сначала просто отправить викторину и записать её в переменную

my_quiz = await bot.send_poll(message.chat.id, 'Мессенджер, автор которого Павел Дуров', ['Telegram', 'Viber', 'WhatsApp', 'Messenger'], type='quiz', correct_option_id=0, is_anonymous=False)

(И обязательно, ещё раз - ОБЯЗАТЕЛЬНО не забудьте указать параметр
is_anonymous=False)
Потом  сделать хэндлер получения ответа

@dp.poll_answer_handler()
async def handle_poll_answer(quiz_answer: PollAnswer):
    # проверяем ответ
    if my_quiz.poll.correct_option_id == quiz_answer.option_ids[0]:
        await bot.send_message(quiz_answer.user.id, 'Правильно! Идём дальше')
    else:
        await bot.sned_message(quiz_answer.user.id, 'Жаль, но это неправильный ответ. Двигаемся дальше - может потом повезёт')

    # отправляем следующую викторину
    await bot.send_poll(message.chat.id, 'Мессенджер, автор которого Павел Дуров', ['Telegram', 'Viber', 'WhatsApp', 'Messenger'], type='quiz', correct_option_id=0, is_anonymous=False)

И тогда новая викторина будет отправляться сразу после получения ответа на предыдущую
И ещё, убедительная просьба: Не отправляйте код скриншотом. Всем будет легче, если вы его просто скопируете, а для вас это на пару кликов больше


Доработка программы по поиску ближайшего нуля
Прохожу курсы по Python. Пишу программу по поиску ближайшего нуля.
Если кратко, то есть набор чисел: 4, 5, 0, 3, 2, 0, а должно на выходе быть 2, 1, 0, 1, 1, 0
Преподаватель порекомендовал для улучшения кода использовать некую "векторизацию циклов". Как рассчитать через эту векторизацию до первого нуля и от последнего я сделал, а вот как мне правильно (и по питоновски), сделать расчёт между нулями сделать не могу. Сделал кое как расчёт между нулями в правую сторону, но как рассчитать влево + как это все объединить? Ну и наверное min надо применить, но как?

def distance_counter(land_numbers):
    zeros_numbers = [k for k, v in enumerate(land_numbers) if v == '0']
    distances = [None] * len(land_numbers)

    first = zeros_numbers[0]
    last = zeros_numbers[-1]

    # тут я застрял
    for left, right in zip(zeros_numbers[:-1], zeros_numbers[1:]):
        distances[left:] = [home - left for home in range(left, right)]

    # считаем до первого 0
    distances[:zeros_numbers[0]] = [first - home for home in range(zeros_numbers[0])]
    # считаем от последнего 0
    distances[zeros_numbers[-1]:] = [home - last for home in range(zeros_numbers[-1], len(land_numbers))]

    return distances

if __name__ == '__main__':
    #input()
    numbers = '1 0 1 4 0 4 4 5 0 5 4 5'
    land_numbers = numbers.split()
    print(*distance_counter(land_numbers))

Думал сделать как-то так:

for left, right in zip(zeros_numbers[:-1], zeros_numbers[1:]):
    distances[left:right:] = min([home - left for home in range(left, right)], [right - home for home in range(left, right)])

Но так минимальные значения не высчитываются. Да и выглядит как то криво все это (
Данная конструкция

for left, right in zip(zeros_numbers[:-1], zeros_numbers[1:]):
    distances[left:right] = zip([right - home for home in range(left, right)], [home - left for home in range(left, right)])

возвращает

1 (3, 0) (2, 1) (1, 2) (4, 0) (3, 1) (2, 2) (1, 3) 0 1 2 3

вроде бы остается только выбрать минимальные, но min что-то не пашет (
В общем, сделал вот так:

distances[left:] = map(min, zip([right - home for home in range(left, right)], [home - left for home in range(left, right)]))

так работает, но тесты валятся по времени (те решение занимает много времени и не подходит)

Не вижу ничего сложного. Генерируем возрастающий список на половину расстояния от 'left' до 'right' и вставляем его правее 'left'. Потом его переворачиваем и вставляем левее 'right'.
<code>
def distance_counter(land_numbers):
    zeros_numbers = [k for k, v in enumerate(land_numbers) if v == '0']
    distances = [0] * len(land_numbers)

    # тут кто-то застрял
    for left, right in zip(zeros_numbers, zeros_numbers[1:]):
        fill = range(1, (right - left) // 2 + 1)
        distances[left+1:left+1+len(fill)] = fill
        distances[right-len(fill):right] = fill[::-1]

    # считаем до первого 0
    distances[:zeros_numbers[0]] = range(zeros_numbers[0], 0, -1)
    # считаем от последнего 0
    distances[zeros_numbers[-1]:] = range(len(land_numbers) - zeros_numbers[-1])

    return distances
</code>


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

def outliers(row):
    q_1 = np.quantile(num_cols['col_1'], 0.25)
    q_3 = np.quantile(num_cols['col_1'], 0.75)
    IQR = q_3 - q_1
    if row < (q_1 - IQR * 1.5) or row > (q_3 + IQR * 1.5):
        return num_cols['col_1'].mean()
    else:
        return row

Как правильно написать, чтобы сработало для, например, такого кода:

for col in num_cols[['col_1', 'col_2', 'col_3']]:
    num_cols[col] = num_cols.apply(outliers)

У вас какая-то путаница между всем фреймом, столбцами, строками, названиями колонок. Надо просто тщательно разобраться. Функция должна получать на вход все аргументы, а не работать с объектами, которые ей вообще не передавались. Должно получиться как-то так:
<code>
def outliers(row):
    q_1 = np.quantile(row, 0.25)
    q_3 = np.quantile(row, 0.75)
    IQR = q_3 - q_1
    return np.where((row < (q_1 - IQR * 1.5)) | (row > (q_3 + IQR * 1.5)), row.mean(), row)

for col in ['col_1', 'col_2', 'col_3']:
    num_cols[col] =  outliers(num_cols[col])

</code>


AttributeError: 'Ui_MainWindow' object has no attribute 'setWindowFlags'
Есть у меня 2 файла, 1 файл это дизайн с функциями, созданный в QtDesigner
А 2 файл убирает рамки приложения и открывает его уже без рамок.
Возникают проблемы с запуском второго файла, да и это вызывает дискомфорт, и поэтому я решил объединить всё в одном файле, но как бы я ни пытался у меня это не выходит.
Буду крайне благодарен за вашу помощь!
Код первого приложения:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QLabel, QPushButton, QInputDialog, QLineEdit, QFileDialog, QAction, QWidget, QHBoxLayout, QDialog
from PyQt5.QtGui import QIcon
import os

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(311, 359)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(10, 10, 291, 341))
        self.frame.setStyleSheet("QFrame {\n"
"    border-radius: 10px;\n"
"    background-color: rgb(39, 39, 39);\n"
"}")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.close = QtWidgets.QPushButton(self.frame)
        self.close.setGeometry(QtCore.QRect(258, 10, 22, 22))
        self.close.setStyleSheet("border-radius: 10px;\n"
"background-color: rgb(255, 42, 0)")
        self.close.setText("")
        self.close.setObjectName("close")
        self.hide = QtWidgets.QPushButton(self.frame)
        self.hide.setGeometry(QtCore.QRect(230, 10, 22, 22))
        self.hide.setStyleSheet("border-radius: 10px;\n"
"background-color: rgb(1, 196, 255)")
        self.hide.setText("")
        self.hide.setObjectName("hide")
        self.potok = QtWidgets.QSpinBox(self.frame)
        self.potok.setGeometry(QtCore.QRect(150, 250, 42, 22))
        self.potok.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 5px;")
        self.potok.setMinimum(1)
        self.potok.setMaximum(100)
        self.potok.setObjectName("potok")
        self.label = QtWidgets.QLabel(self.frame)
        self.label.setGeometry(QtCore.QRect(80, 30, 65, 13))
        self.label.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(255, 255, 255);")
        self.label.setObjectName("label")
        self.base = QtWidgets.QPushButton(self.frame)
        self.base.setGeometry(QtCore.QRect(158, 90, 93, 21))
        self.base.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
        self.base.setObjectName("base")
        self.save_addr = QtWidgets.QLineEdit(self.frame)
        self.save_addr.setGeometry(QtCore.QRect(39, 133, 111, 21))
        self.save_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
        self.save_addr.setObjectName("save_addr")
        self.proxy_use = QtWidgets.QCheckBox(self.frame)
        self.proxy_use.setGeometry(QtCore.QRect(69, 166, 160, 17))
        self.proxy_use.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"color: rgb(255, 255, 255);")
        self.proxy_use.setObjectName("proxy_use")
        self.mainbutton = QtWidgets.QPushButton(self.frame)
        self.mainbutton.setGeometry(QtCore.QRect(93, 290, 103, 31))
        self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
        self.mainbutton.setObjectName("mainbutton")
        self.progress = QtWidgets.QProgressBar(self.frame)
        self.progress.setGeometry(QtCore.QRect(75, 56, 141, 16))
        self.progress.setStyleSheet("QProgressBar{\n"
"    border-radius: 10px;\n"
"    background-color: rgb(236, 236, 236);\n"
"    color: rgb(0, 170, 255);\n"
"}\n"
"\n"
"QProgressBar::chunk{\n"
"    border-radius: 10px;\n"
"    background-color: rgb(0, 170, 255);\n"
"}")
        self.progress.setProperty("value", 0)
        self.progress.setObjectName("progress")
        self.progress.setTextVisible(False)
        self.proxy = QtWidgets.QPushButton(self.frame)
        self.proxy.setGeometry(QtCore.QRect(158, 194, 93, 23))
        self.proxy.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
        self.proxy.setObjectName("proxy")
        self.proxy_addr = QtWidgets.QLineEdit(self.frame)
        self.proxy_addr.setGeometry(QtCore.QRect(39, 195, 111, 21))
        self.proxy_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
        self.proxy_addr.setObjectName("proxy_addr")
        self.label_2 = QtWidgets.QLabel(self.frame)
        self.label_2.setGeometry(QtCore.QRect(83, 250, 65, 21))
        self.label_2.setStyleSheet("color: rgb(255, 255, 255);\n"
"font: 87 10pt \"Arial Black\";")
        self.label_2.setObjectName("label_2")
        self.base_addr = QtWidgets.QLineEdit(self.frame)
        self.base_addr.setGeometry(QtCore.QRect(39, 90, 111, 21))
        self.base_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
        self.base_addr.setObjectName("base_addr")
        self.work = QtWidgets.QLabel(self.frame)
        self.work.setGeometry(QtCore.QRect(140, 30, 70, 13))
        self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(85, 255, 0);")
        self.work.setObjectName("work")
        self.save = QtWidgets.QPushButton(self.frame)
        self.save.setGeometry(QtCore.QRect(158, 133, 93, 21))
        self.save.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
        self.save.setObjectName("save")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.buttons()

        self.proxy.hide()
        self.proxy_addr.hide()

        self.mainbutton.setCheckable(True)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("CheckerCC", "CheckerCC"))
        self.label.setText(_translate("MainWindow", "Статус:"))
        self.work.setText(_translate("MainWindow", ""))
        self.mainbutton.setText(_translate("MainWindow", "Начать"))
        self.base.setText(_translate("MainWindow", "Выбрать"))
        self.save.setText(_translate("MainWindow", "Сохранить"))
        self.proxy_use.setText(_translate("MainWindow", "Использовать прокси"))
        self.proxy.setText(_translate("MainWindow", "Выбрать"))
        self.label_2.setText(_translate("MainWindow", "Потоков:"))

    def buttons(self):
        self.proxy_use.stateChanged.connect(self.checkbox)
        self.base.clicked.connect(self.browse_base)
        self.save.clicked.connect(self.save_cc)
        self.proxy.clicked.connect(self.browse_proxy)
        self.mainbutton.clicked.connect(self.btn_click)

    def btn_click(self):
        if self.mainbutton.isChecked():
            self.work.setText("Работает")
            self.work.adjustSize()
            self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(85, 255, 0);")
            self.work.update()
            self.progress.setProperty("value", 100)
            self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(255, 42, 0);\n"
"color: rgb(255, 255, 255);\n")
        else:
            self.work.setText("Остановлен")
            self.work.adjustSize()
            self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(255, 0, 0);")
            self.work.update()
            self.progress.setProperty("value", 0)
            self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")

    def checkbox(self, state):
        if state == QtCore.Qt.Checked:
            self.proxy_addr.show()
            self.proxy.show()
        else:
            self.proxy_addr.hide()
            self.proxy.hide()

    def browse_base(self):
        option=QFileDialog.Options()
        file=QFileDialog.getOpenFileName(widget,"Выбрать базу","CC","All Files(*)",options=option)
        self.base_addr.setText(file[0])

    def browse_proxy(self):
        option=QFileDialog.Options()
        file=QFileDialog.getOpenFileName(widget,"Выбрать прокси","proxy","All Files(*)",options=option)
        self.proxy_addr.setText(file[0])

    def save_cc(self):
        option=QFileDialog.Options()
        file=QFileDialog.getSaveFileName(widget,"Сохранить","valid.txt","All Files(*)",options=option)
        self.save_addr.setText(file[0])

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    widget=QWidget()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

Код второго:

from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import Qt

from MainWindow_ui import Ui_MainWindow

class Widget(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()

        self.setupUi(self)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self._old_pos = None

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self._old_pos = event.pos()

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self._old_pos = None

    def mouseMoveEvent(self, event):
        if not self._old_pos:
            return

        delta = event.pos() - self._old_pos
        self.move(self.pos() + delta)

if __name__ == '__main__':
    app = QApplication([])

    w = Widget()
    w.resize(400, 400)
    w.show()
    app.exec()

Класс с UI формой не нужно менять, логику лучше перенести в класс, наследуемый от
Ui_MainWindow
Пример:

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5.QtCore import Qt

from MainWindow_ui import Ui_MainWindow

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()

        self.setupUi(self)

        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)

        self._old_pos = None

        self.buttons()

        self.proxy.hide()
        self.proxy_addr.hide()

        self.mainbutton.setCheckable(True)

    def buttons(self):
        self.proxy_use.stateChanged.connect(self.checkbox)
        self.base.clicked.connect(self.browse_base)
        self.save.clicked.connect(self.save_cc)
        self.proxy.clicked.connect(self.browse_proxy)
        self.mainbutton.clicked.connect(self.btn_click)

    def btn_click(self):
        if self.mainbutton.isChecked():
            self.work.setText("Работает")
            self.work.adjustSize()
            self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
                                    "color: rgb(85, 255, 0);")
            self.work.update()
            self.progress.setProperty("value", 100)
            self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                          "border-radius: 10px;\n"
                                          "background-color: rgb(255, 42, 0);\n"
                                          "color: rgb(255, 255, 255);\n")
        else:
            self.work.setText("Остановлен")
            self.work.adjustSize()
            self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
                                    "color: rgb(255, 0, 0);")
            self.work.update()
            self.progress.setProperty("value", 0)
            self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                          "border-radius: 10px;\n"
                                          "background-color: rgb(0, 170, 255);\n"
                                          "color: rgb(255, 255, 255);")

    def checkbox(self, state):
        if state == Qt.Checked:
            self.proxy_addr.show()
            self.proxy.show()
        else:
            self.proxy_addr.hide()
            self.proxy.hide()

    def browse_base(self):
        option = QFileDialog.Options()
        file = QFileDialog.getOpenFileName(self, "Выбрать базу", "CC", "All Files(*)", options=option)
        self.base_addr.setText(file[0])

    def browse_proxy(self):
        option = QFileDialog.Options()
        file = QFileDialog.getOpenFileName(self, "Выбрать прокси", "proxy", "All Files(*)", options=option)
        self.proxy_addr.setText(file[0])

    def save_cc(self):
        option = QFileDialog.Options()
        file = QFileDialog.getSaveFileName(self, "Сохранить", "valid.txt", "All Files(*)", options=option)
        self.save_addr.setText(file[0])

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self._old_pos = event.pos()

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self._old_pos = None

    def mouseMoveEvent(self, event):
        if not self._old_pos:
            return

        delta = event.pos() - self._old_pos
        self.move(self.pos() + delta)

if __name__ == '__main__':
    app = QApplication([])

    mw = MainWindow()
    mw.resize(400, 400)
    mw.show()

    app.exec()

MainWindow_ui.py:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QLabel, QPushButton, QInputDialog, QLineEdit, \
    QFileDialog, QAction, QWidget, QHBoxLayout, QDialog
from PyQt5.QtGui import QIcon
import os

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(311, 359)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(10, 10, 291, 341))
        self.frame.setStyleSheet("QFrame {\n"
                                 "    border-radius: 10px;\n"
                                 "    background-color: rgb(39, 39, 39);\n"
                                 "}")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.close = QtWidgets.QPushButton(self.frame)
        self.close.setGeometry(QtCore.QRect(258, 10, 22, 22))
        self.close.setStyleSheet("border-radius: 10px;\n"
                                 "background-color: rgb(255, 42, 0)")
        self.close.setText("")
        self.close.setObjectName("close")
        self.hide = QtWidgets.QPushButton(self.frame)
        self.hide.setGeometry(QtCore.QRect(230, 10, 22, 22))
        self.hide.setStyleSheet("border-radius: 10px;\n"
                                "background-color: rgb(1, 196, 255)")
        self.hide.setText("")
        self.hide.setObjectName("hide")
        self.potok = QtWidgets.QSpinBox(self.frame)
        self.potok.setGeometry(QtCore.QRect(150, 250, 42, 22))
        self.potok.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                 "border-radius: 5px;")
        self.potok.setMinimum(1)
        self.potok.setMaximum(100)
        self.potok.setObjectName("potok")
        self.label = QtWidgets.QLabel(self.frame)
        self.label.setGeometry(QtCore.QRect(80, 30, 65, 13))
        self.label.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
                                 "color: rgb(255, 255, 255);")
        self.label.setObjectName("label")
        self.base = QtWidgets.QPushButton(self.frame)
        self.base.setGeometry(QtCore.QRect(158, 90, 93, 21))
        self.base.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                "border-radius: 10px;\n"
                                "background-color: rgb(0, 170, 255);\n"
                                "color: rgb(255, 255, 255);")
        self.base.setObjectName("base")
        self.save_addr = QtWidgets.QLineEdit(self.frame)
        self.save_addr.setGeometry(QtCore.QRect(39, 133, 111, 21))
        self.save_addr.setStyleSheet("border-style: outset;\n"
                                     "background-color: rgb(236, 236, 236);\n"
                                     "border-width: 1px;\n"
                                     "border-radius: 10px;")
        self.save_addr.setObjectName("save_addr")
        self.proxy_use = QtWidgets.QCheckBox(self.frame)
        self.proxy_use.setGeometry(QtCore.QRect(69, 166, 160, 17))
        self.proxy_use.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                     "color: rgb(255, 255, 255);")
        self.proxy_use.setObjectName("proxy_use")
        self.mainbutton = QtWidgets.QPushButton(self.frame)
        self.mainbutton.setGeometry(QtCore.QRect(93, 290, 103, 31))
        self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                      "border-radius: 10px;\n"
                                      "background-color: rgb(0, 170, 255);\n"
                                      "color: rgb(255, 255, 255);")
        self.mainbutton.setObjectName("mainbutton")
        self.progress = QtWidgets.QProgressBar(self.frame)
        self.progress.setGeometry(QtCore.QRect(75, 56, 141, 16))
        self.progress.setStyleSheet("QProgressBar{\n"
                                    "    border-radius: 10px;\n"
                                    "    background-color: rgb(236, 236, 236);\n"
                                    "    color: rgb(0, 170, 255);\n"
                                    "}\n"
                                    "\n"
                                    "QProgressBar::chunk{\n"
                                    "    border-radius: 10px;\n"
                                    "    background-color: rgb(0, 170, 255);\n"
                                    "}")
        self.progress.setProperty("value", 0)
        self.progress.setObjectName("progress")
        self.progress.setTextVisible(False)
        self.proxy = QtWidgets.QPushButton(self.frame)
        self.proxy.setGeometry(QtCore.QRect(158, 194, 93, 23))
        self.proxy.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                 "border-radius: 10px;\n"
                                 "background-color: rgb(0, 170, 255);\n"
                                 "color: rgb(255, 255, 255);")
        self.proxy.setObjectName("proxy")
        self.proxy_addr = QtWidgets.QLineEdit(self.frame)
        self.proxy_addr.setGeometry(QtCore.QRect(39, 195, 111, 21))
        self.proxy_addr.setStyleSheet("border-style: outset;\n"
                                      "background-color: rgb(236, 236, 236);\n"
                                      "border-width: 1px;\n"
                                      "border-radius: 10px;")
        self.proxy_addr.setObjectName("proxy_addr")
        self.label_2 = QtWidgets.QLabel(self.frame)
        self.label_2.setGeometry(QtCore.QRect(83, 250, 65, 21))
        self.label_2.setStyleSheet("color: rgb(255, 255, 255);\n"
                                   "font: 87 10pt \"Arial Black\";")
        self.label_2.setObjectName("label_2")
        self.base_addr = QtWidgets.QLineEdit(self.frame)
        self.base_addr.setGeometry(QtCore.QRect(39, 90, 111, 21))
        self.base_addr.setStyleSheet("border-style: outset;\n"
                                     "background-color: rgb(236, 236, 236);\n"
                                     "border-width: 1px;\n"
                                     "border-radius: 10px;")
        self.base_addr.setObjectName("base_addr")
        self.work = QtWidgets.QLabel(self.frame)
        self.work.setGeometry(QtCore.QRect(140, 30, 70, 13))
        self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
                                "color: rgb(85, 255, 0);")
        self.work.setObjectName("work")
        self.save = QtWidgets.QPushButton(self.frame)
        self.save.setGeometry(QtCore.QRect(158, 133, 93, 21))
        self.save.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
                                "border-radius: 10px;\n"
                                "background-color: rgb(0, 170, 255);\n"
                                "color: rgb(255, 255, 255);")
        self.save.setObjectName("save")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("CheckerCC", "CheckerCC"))
        self.label.setText(_translate("MainWindow", "Статус:"))
        self.work.setText(_translate("MainWindow", ""))
        self.mainbutton.setText(_translate("MainWindow", "Начать"))
        self.base.setText(_translate("MainWindow", "Выбрать"))
        self.save.setText(_translate("MainWindow", "Сохранить"))
        self.proxy_use.setText(_translate("MainWindow", "Использовать прокси"))
        self.proxy.setText(_translate("MainWindow", "Выбрать"))
        self.label_2.setText(_translate("MainWindow", "Потоков:"))

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    widget = QWidget()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())


Нужна помощь! Есть словарь и нужно его отфильтровать! [закрыт]

Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 2 года назад.

                        Улучшить вопрос

Дан словарь:
<code>
ids = {'user1': [213, 213, 213, 15, 213],
       'user2': [54, 54, 119, 119, 119],
       'user3': [213, 98, 98, 35]}
</code>
Как можно его отфильтровать, что бы получился список с совподающими элементами данного словаря?

Например можно попробовать так если правильно понял Вашу мысль.
<code>
ids = {'user1': [213, 213, 213, 15, 213],
       'user2': [54, 54, 119, 119, 119],
       'user3': [213, 98, 98, 35]}
new_ids = {}
for k, v in ids.items():
       new_ids[k] = set(v)

print(new_ids)
# {'user1': {213, 15}, 'user2': {54, 119}, 'user3': {98, 35, 213}}

# Или если нужен только список уникальных чисел ВСЕГО словаря
new_list = []
for _, v in ids.items():
       for i in v:
              new_list.append(i)
print(set(new_list))
# {98, 35, 15, 213, 54, 119}
</code>


Как узнать message_id, отправленного самим ботом?
Представим, что бот отправил сообщение

   bot.send_message(message.chat.id, "123")

   BOT: 123

Как узнать message_id этого сообщения?

bot.send_message возвращает сообщение которое было отправлено. Если дописать после метода as msg и после чего прописать print(msg.message_id), то бот выведет id отправленного сообщения.


Нужна помощь в решении задачи(осталось чуть-чуть) [дубликат]

На этот вопрос уже даны ответы здесь:

вывести часть последовательности 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 на python 3

                                (7 ответов)

Закрыт 2 года назад.

Вот задача:
Напишите программу, которая выводит часть последовательности 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ... (число повторяется столько раз, чему равно). На вход программе передаётся неотрицательное целое число n — столько элементов последовательности должна отобразить программа. На выходе ожидается последовательность чисел, записанных через пробел в одну строку.
Например, если n = 7, то программа должна вывести 1 2 2 3 3 3 4.
Sample Input:
7
Sample Output:
1 2 2 3 3 3 4
Вот мой код:
<code>
x = input()
p = int(x)+1
d = 0
for i in range(1, p):
    s = str(i)
    d = i
    if i != p:
        print(s * d, end=' ')
    elif i == p:
        break
</code>
My input:
7
My output:
1 22 333 4444 55555 666666 7777777
ЧТО НУЖНО СДЕЛАТЬ:
Я хотел бы понять как вывести 1 2 2 3 3 3 4

Ленивый вариант:
Нужно считать количество элементов и завершать цикл при достижении предела:

n = 7
number = 0

for i in range(1, n + 1):
    for j in range(i):
        print(i, end=' ')
        number += 1
        if number >= n:
            break

    if number >= n:
        break

Тоже самое через функцию:

def foo(n):
    number = 0

    for i in range(1, n + 1):
        for j in range(i):
            print(i, end=' ')
            number += 1
            if number >= n:
                return

n = 7
foo(n)

Короткий вариант:
В этом случае сгенерируем последовательность чисел и заполним список, после возьмем срез от списка на количество элементов:

n = 7

items = []
for i in range(1, n + 1):
    items += [i] * i

print(items[:n])
# [1, 2, 2, 3, 3, 3, 4]


Создать DataFrame по алгориту
Мне необходимо создать DataFrame по алгоритму.
Задаваться будет только количество столбцов
Необходимо сделать, чтоб в каждом столбце были данные от 1 до 99
Пример
Массив из 3-х:
<code>
1 1 1
1 1 2
....
1 1 99
1 2 1
1 2 2
...
1 99 99
2 1 1
...
99 99 99
</code>
в идеале начальное и конечное число (1 и 99) тоже задать как переменные
Подскажите быстрый способ это сделать.
(у меня задача примерно из 10 столбиков. Если делать без dataframe то 3 столбика создаются около 7 секунд, 4 столбика уже 7 минут, а 10 столбиков - наверное не дождусь)

Можно создать быстро кортеж через генератор с помощью itertools, и его уже в DataFrame втянуть.

import itertools
from pandas import DataFrame

ids = 1
ide = 100
col = 3
gen = (x for x in itertools.product(*[range(ids, ide + 1) for f in range(col)]))
dfr = DataFrame(tuple(next(gen) for _ in range(ide ** col)))

С точки зрения экономии памяти можно, к примеру, записать на диск данные, которые потом прочитать через read_csv()

import itertools
from pandas import DataFrame, read_csv

ids = 1
ide = 100
col = 4
gen = (x for x in itertools.product(*[range(ids, ide + 1) for f in range(col)]))

with open('t.csv', 'w') as file:
    for _ in range((ide) ** col):
        file.write('{}\n'.format(','.join(str(r) for r in next(gen))))

dfr = read_csv('t.txt', header=None)

На диске 1.2 Гб, в памяти 3.6 Гб у процесса
Добавлено по комментарию:
На примере варианта 1 меняем параметр
ids (id start) на 2, плюс в
range(ids, ide + 1, step) в генераторе добавлен параметр шага

import itertools
from pandas import DataFrame

ids = 10
ide = 90
step = 2
col = 3
gen = (x for x in itertools.product(*[range(ids, ide + 1, step) for f in range(col)]))
dfr = DataFrame(tuple(next(gen) for _ in range(((ide - ids) // step + 1) ** col)))


Парсинг строки вида (1,"qqq","www")
Читаю из файла последовательно строки вида:

1,"AAAAAAAAA","BBBBBBBBB"
2,"CCCCCCCCC","DDDDDDDDD"
3,"EEEEEEEEE","FFFFFFFFF"
...
1000,"GGGGGGGGG","HHHHHHHHHH"

Как их распарсить и получить отдельные строки:

# First String: 1
# Second String: AAAAAAAAA
# Third String: BBBBBBBBB

Питон, код по вашим уточняющим комментариям:

line = '1,"AAAAAAAAA","BBBBBBBBB"'
print(line.split(',')[1][1:-1])

Вывод:

AAAAAAAAA


Как к дате прибавить дни в Pandas
Имеется DataFrame дат. Нужно к столбцу времени прибавить 7 дней.

import numpy as np
import pandas as pd
dates_1 = pd.DataFrame(np.array(['2021-01-01', '2021-01-02']).reshape(2,1))
dates_2 = dates_1 + pd.Timedelta("7 day")

Появляется ошибка

TypeError: can only concatenate str (not "Timedelta") to str

Конвертируйте строки в специальный тип для хранения дат:
<code>
dates_1 = pd.DataFrame(np.array(['2021-01-01', '2021-01-02'], dtype='datetime64').reshape(2,1))
</code>


Как сделать Бота для instagram [закрыт]

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 2 года назад.

                        Улучшить вопрос

в реальности возможно ли сделать бота для instagram, например отвечать на сообщения юзеров и т д? Если да, то какими способами?

У них API приватное, поэтому тут два варианта: на гитхабе/pypi поискать готовые обёртки (например эта) или сниффить траффик с мобильного инстаграма/реверсить приложение и самому написать обёртку. Естественно такие решения использовать на свой страх и риск, аккаунт может отлететь в бан.


В Python перебрать значения словаря и вычесть попеременно
Продолжаю разбираться с программированием поиска корней методом дихотомии. Вначале отделяю корни, затем уточняю. Получил сетку значений в формате словаря: {значение х: значение f(x)}. Сейчас требуется сравнить разницу смежных ключей x2-x1 и так далее.
Как это можно сделать?
Пока что различные варианты, которые перебробовал, не дали правильного результата. Например, ниже приведенный код дает ошибку
<code>
voc = []
for i in setka:
    dif = setka[i+1]-setka[i]
    voc.append(dif)
print(voc)
</code>

Не совсем понял, хотите вы сравнить ключи или значения, но сделать и то и другое можно примерно так:

d = dict(zip(range(10),range(100,110))) # искусственный словарь для примера
for k2,k1 in zip(list(d)[1:],d):
    diff_keys = k2-k1 # разность ключей
    diff_vals = d[k2]-d[k1] # разность значений

Пояснения:

При итерировании по словарю перебираются ключи словаря
Для того, чтобы можно было сделать срез по ключам словаря, их нужно превратить в список
Соседние элементы коллекции удобно перебирать, соединяя коллекцию саму с собой через
zip со сдвигом

А ваш вариант не работает, потому что:

Для того, чтобы получить индексы, итерироваться нужно по
len(range()) от коллекции, а не по самой коллекции
К словарю нельзя обращаться по индексам, так что такой подход всё-равно не сработает


Как обвернуть в класс обработчик и функцию декоратор
Как обвернуть в класс ниже приведенный код:

import telebot

bot = telebot.TeleBot('...')

if __name__ == '__main__':
    #Tele = Telegram()
    #Tele.run()

    @bot.message_handler(commands=['start'])
    def start_command(message):
        bot.send_message(message.chat.id, "Hello!")
    bot.polling()

В итоге должно получиться нечто подобное:

import telebot

class Telegram():
    def __init__(self):
        self.token = '...'
        self.bot = telebot.TeleBot('...')

        @self.bot.message_handler(commands=['start'])
        def start_command(self, message):
            self.bot.send_message(message.chat.id, "Hello!")

    def run(self):
        self.bot.polling()

if __name__ == '__main__':
    Tele = Telegram()
    Tele.run()

Попробуйте:
<code>
import telebot

class Telegram:
    def __init__(self):
        self.token = '...'
        self.bot = telebot.TeleBot(self.token)

        @self.bot.message_handler(commands=['start'])
        def start_command(message):
            self.bot.send_message(message.chat.id, "Hello!")

    def run(self):
        self.bot.polling()

if __name__ == '__main__':
    Tele = Telegram()
    Tele.run()
</code>


Как сохранить картинку, созданную через Image.new?
Представим, есть такая строка в коде:

   img = Image.new(mode="RGB", size=(360, 360))

Как мне переменную
img сохранить в файл?

Вы таки будете смеяться, но с помощью метода
save:

img.save('image.png')

А вообще как бы ну полезно читать документацию


Как найти None в списке и заменить его?
Допустим, у меня есть список:

example = ['1', '2', None]

Как мне найти в нем
None и заменить на
'None'

Взять элемент.
Посмотртеть, не None ли он.
Если да, то заменить на "None".
Перейти к следующему элементу.
Повторять, пока список не закончится.


Как реализовать данную функцию??Django
models.py:

class Student(models.Model):
    name = models.CharField(max_length=249)

class Course(models.Model):
    name = models.CharField(max_length=249)
    students = models.ManyToManyField(Student, through='Connect')

class Connect(models.Model):
    student = models.ForeignKey(Student, on_delete=models.SET_NULL, null=True)
    course = models.ForeignKey(Course, on_delete=models.SET_NULL, null=True)

функция view.py:

class CreateStudent(LoginRequiredMixin, CreateView):
    # …

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.save()
        for student in form.cleaned_data['name']:
            connect = Connect()
            connect.student = self.object
            connect.course = Course.objects.get(pk=1)
            connect.save()
        return super(ModelFormMixin, self).form_valid(form)

при создании нового
Student создаться связь
Connect c первым элементом
Course

connect.course = Course.objects.get(pk=1)

как написать функцию(отдельную view.py) которая поможет выбрать какие значения
Courseпри создании нового
Student установить по умолчанию ?

UPDATE
Должна быть функция которая определяет к какие именно курсы мы выбираем по умолчанию в браузере . допустим у нас в базе есть 3 курса (Математика, Физика , Химия) сейчас добавляеться Математика так как она первая . А нужно сделать view которая отображает все курсы(названия) и пользователь выбирает какие именно курсы будут добавляться по умолчанию к следущим студентам . Допустим пользователь выбрал Физика , Химия . Тогда при создании нового студента добавляются связи с Физика , Химия а не с Математика

Примерно так.
Создаете форму, добавляете поле курсы. После сохранения объекта студента. ставим ему выбранные курсы. Если курс не выбран - будет курс с наименьшим
id.
PS: Привязываться к
id равному 1 плохая идея, так как объект может быть удален. Тогда будет ошибка

class FormAddStudent(forms.ModelForm):
    class Meta:
        model = Student
        fields = '__all__' # Или че хотите

    courses = forms.ModelMultipleChoiceField(queryset=Course.objects.all(), initial=Cource.objects.order_by('id').first())

    def save(self, *args, **kwargs):
        obj = super().save(*args, **kwargs)
        obj.course_set.set(self.cleaned_data['courses'])


Как получить значение из GET запроса в django view?
У меня есть вот такой запрос

path('file/<int:event>', CreateFileView.as_view(), name='add_file') # new

Нужно получить
event_id отсюда во view
View имеет вид:

class CreateFileView(CreateView):
    model = FileFeedbackEventToSubscriber
    form_class = FileFieldForm
    template_name = 'file.html'

    success_url = reverse_lazy('filefeedback_events_home')

    def get_context_data(self, **kwargs):
        context = super(CreateFileView, self).get_context_data(**kwargs)

        context['current_user'] = self.request.user
        return context

Что мне куда или как нужно дописать, чтоб это работало?
Либо есть еще какой-то способ получить значение текущего объекта без запроса сразу из view?

<code>
self.kwargs['event']
</code>
все просто


Отправить 1 стикер из пака в телеграмме
Я создавал телеграмм-бота. Мне нужно отправить один случайный стикер из пака, я пробовал использовать переменную и модуль random но это не работает, есть ли какой-то простой способ сделать это?

from random import choice

stickers = ['CAACAgEAAxkBAAITX...SWoV2pOEgBA', '...']  # message.sticker.file_id
bot.send_sticker(message.chat.id, choice(stickers))


Как сделать чтобы участник дискорд сервера мог вводить команду несколько раз в день на python
Я написал бота и добавил ему команду. Мне нужно чтобы участник(с определённой ролью(проверку если ли у участника "эта" роль я уже сделал)) дискорд сервера мог вводить эту команду только несколько раз в день(допустим 3). Как это сделать? Python discord.py

Используем
@commands.cooldown()
Код:

@bot.command()
@commands.cooldown(3, 10, commands.BucketType.role)
async def somethink(ctx):
    ...

3 - количесто раз использувания команды
10 - секунд до перезарядки команды

commands.BucketType.role - на что будет реагировать
cooldown


Как исправить ошибку TypeError: 'str' object is not callable?
<code>
def check():
    global input, height1, weight, height1, weight1

    print("1.Мальчик")
    print("2.Девочка")

    input = str(input("Введите Ваш пол по цифре сверху: "))

    if input == "1":
      height = str(input("Введите Ваш рост(в сантиметрах): "))
      weight = str(input("Введите Ваш вес: "))
    elif input == "2":
      height1 = str(input("Введите Ваш рост(в сантиметрах): "))
      weight1 = str(input("Введите Ваш вес: "))
    else:
      print("Введите одну из цифр выше!")

check()
</code>
Перед тем как задать этот вопрос, естественно, я прочитал другие вопросы связанные с этим исключением. У многих ошибка заключалась в лишних, не нужных скобках, а вот у меня - я не знаю.
Я много раз перечитывал свой код в поисках этих лишних скобок, но я их так и не нашёл.
Может ошибка заключается в другом?

def check():
    global height, weight, height1, weight1

    print("1.Мальчик")
    print("2.Девочка")

    sex = input("Введите Ваш пол по цифре сверху: ")

    if sex == "1":
        height = int(input("Введите Ваш рост(в сантиметрах): "))
        weight = int(input("Введите Ваш вес: "))
    elif sex == "2":
        height1 = int(input("Введите Ваш рост(в сантиметрах): "))
        weight1 = int(input("Введите Ваш вес: "))
    else:
        print("Введите одну из цифр выше!")

check()

input уже возвращает строку, преобразуйте ее в
int, а не в
str:

1.Мальчик
2.Девочка
Введите Ваш пол по цифре сверху: >? 1
Введите Ваш рост(в сантиметрах): >? 23
Введите Ваш вес: >? 21


Помогите улучшить код [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

 Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.

Закрыт 2 года назад.

                        Улучшить вопрос

На егэ по инфе в 26 задании надо будет написать программу, мой вариант вроде работает, но выглядит ужасно. Можете подсказать как код можно улучшить и сделать красивее.
Задача под которую писал код :решу егэ
<code>
f = open("26_demo.txt","r");
s = 0
users = 0
arr = []
usersdata=0
maxusers=0
bsize=0
elem = ''
num_elem=0
for line in f:
    x = line.split()
    if len(x) == 2:
        s = x[0]
        users = x[1]
    else:
        elem = x[0]
        arr.append(int(elem))
arr.sort()

for i in range(len(arr)):
    if (usersdata+int(arr[i]))<=int(s):
        usersdata+=int(arr[i])
        maxusers+=1
    else:
        num_elem = i-1
        break
data = 0
bp=True
for k in range(num_elem):
    if bp == False:
        break
    for n in range(num_elem+1,len(arr)):
        data = usersdata-int(arr[num_elem-k])
        data+=arr[n]
        if data == int(s):
            bsize = arr[n]
            bp=False
            break
print(maxusers,bsize)
</code>

Ну на :) Почистил, что смог:
<code>
arr = []
usersdata = 0
maxusers = 0

# Нет нужды заранее определять эти переменные:
# users = 0
# s = 0
# bsize = 0
# elem = ''
# num_elem = 0

# Контекстный менеджер автоматически закрывает файл, чего ты, кстати, не сделал:
with open("demo.txt", "r") as f:
    for line in f:
        x = line.split()
        if len(x) == 2:
            s = x[0]
            users = x[1]
        else:
            elem = x[0]
            arr.append(int(elem))

arr.sort()

for i, item in enumerate(arr):  # enumerate – классная функция!
    if (usersdata + int(item)) <= int(s):
        usersdata += int(item)
        maxusers += 1
    else:
        num_elem = i-1
        break

# Дальше ничего не придумал:
data = 0
bp = True
for k in range(num_elem):
    if bp == False:
        break
    for n in range(num_elem+1, len(arr)):
        data = usersdata-int(arr[num_elem-k])
        data += arr[n]
        if data == int(s):
            bsize = arr[n]
            bp = False
            break
</code>


Как реализовать подкладку данных при цикле for?
У меня есть нерабочий код с очевидными ошибками:

import time

names = ['Bob', 'Larry', 'Sean']
surnames = ['Baker', 'Holloway', 'Whitehorse']

for i in names and surnames:
    print(i(names)
    print(i(surnames))
    time.sleep(3)

Что же я попытался сделать? Думаю все вполне очевидно, однако поясню: Я хотел чтобы программа вывела в
print() Bob, а затем вывела Baker. На следующей итерации ожидаемым результатом был Larry и Holloway, и в последний раз по плану должно было выйти Sean и Whitehorse, однако сама проблема и так ясна.. Вопрос! Как же сделать код рабочим? Честно скажу, пытался додуматься сам, но добился лишь сильнейших головных болей.

Используйте функцию
zip:

import time

names = ['Bob', 'Larry', 'Sean']
surnames = ['Baker', 'Holloway', 'Whitehorse']

for name, surname in zip(names, surnames):
    print(name)
    print(surname)
    time.sleep(3)


Вывести слaгаемые используемые при расчёте числа.Python
Ну могу понять как вывести все участвующие в расчёте числа... Само решение у меня правильное, не могу вывести согласно образцу весь путь сложения....
Решение должно быть через "while"....
Пример:
Число: 10
Cложение чисел 1 + 2 + 3 + 4 = 10
Мой код:
<code>
num = 1
summa = 1
x = int(input("Число: "))

while summa < x:
    num += 1
    summa += num

print("Сложение чисел", x//num, "+", num, "=", summa )
</code>

Можно воспользовать аргументом
end функции
print, который отвечает за то, что будет в конце выводимой строки и переписать ваш код так:

num = 1
summa = 1
x = int(input("Число: "))

print(f"Сложение чисел: { num } ", end='')

while summa < x:
    num += 1
    summa += num
    print(f"+ {num} ", end='')

print(f"= {summa}")


Как вывести ошибку Forbidden discord.py
Здраствуйте!
Не знаю как вывести ошибку
discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions. Различные методы пробовал, через
cog_command_error() и
isinstance(error, Forbidden) и
isinstanse(error, BotMissingPermissions), но ничего не вышло.
Я делаю это для того, что бы бот отсылал сообщение если у него нет доступа до той или иной команды.
Вот мой код:

async def cog_command_error(self, ctx: Context, error):
    if isinstance(error, commands.BotMissingPermissions):
        user = ctx.guild.get_member(ctx.author.id)
        await user.send('У бота нет доступа до этой команды. Дайте эму доступ `Банить учасников`')

    if isinstance(error, commands.MissingPermissions):
        kick_emb = discord.Embed(title = 'Ошибка!', color =0xff060e)
        kick_emb.add_field(
            name = 'Причина ошибки:',
            value = 'У вас нету нужных прав для управления этой командой!',
            inline = False
        )
        await ctx.send(embed = kick_emb)

    if isinstance(error, commands.errors.MemberNotFound):
        kick_emb = discord.Embed(title = 'Ошибка!', color = 0xff060e)
        kick_emb.add_field(
            name = 'Причина ошибки:',
            value = 'Не указано имя пользователя',
            inline = False
        )
        kick_emb.add_field(
            name = 'Пример использования команды:',
            value = '{}ban @user reason', inline = False
        )
        await ctx.send(embed = kick_emb)

    if isinstance(error, commands.errors.MissingRequiredArgument):
        kick_emb = discord.Embed(title = 'Ошибка!', color =0xff060e)
        kick_emb.add_field(
            name = 'Причина ошибки:',
            value = 'Не указана причина',
            inline = False
        )
        kick_emb.add_field(
            name = 'Пример использования команды:',
            value = '{}ban @user reason',
            inline = False
        )
        await ctx.send(embed = kick_emb)

Traceback:

File "f:\discord bot\cogs\utils\clear.py", line 23, in _clear
    await ctx.channel.purge(limit = self.quantity + 1)
  File "C:\Users\123\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\channel.py", line 383, in purge
    await strategy(to_delete)
  File "C:\Users\123\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\channel.py", line 301, in delete_messages
    await self._state.http.delete_messages(self.id, message_ids)
  File "C:\Users\123\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 248, in request
    raise Forbidden(r, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

Как можно решить мою проблему?

@commands.bot_has_permissions(ban_members = True, manage_messages = True)

Добавляете этот рядок где указываете права бота с которыми он сможет использовать ету команду, после этого в ошибках прописываете следующе:

if isinstance(error, BotMissingPermissions):
    ...

И все.


Преобразование вывода fetchall pymysql в int..?
Возникла проблема, связанная с получением данных из mysql. Мне необходимо, чтобы моя программа(бот) получала списки тех, кто владеет ботом. Но моя программа не может получить данные из бд. Я подразумеваю, что проблема в словаре, который выводит непонятное для моей программы. Надеюсь, что вы мне поможете исправить данное недоразумение
Код:
<code>
import pymysql.cursors
import discord
from discord.ext import commands

db = pymysql.connect(host='**************',
                     port=25*****,
                     user='***',
                     password='**************',
                     database='*******')

with db.cursor() as cursor:
    # Read a single record
    sql = ("select `id` from `owners`")
    cursor.execute(sql)
    result = cursor.fetchall() #<----- Получение данных из курсора в переменную

class owner(commands.Cog, name="owner"):
    def __init__(self, bot):
        self.bot = bot

    @commands.command(name="shutdown")
    async def shutdown(self, context, message):
        if context.message.author.id == result: #<--------- Тут идет получение данных из переменной
            embed = discord.Embed(
                description="Выключаюсь! :wave:",
                color=0x42F56C
            )
            await context.send(embed=embed)
            await self.bot.close()
            await message.channel.send('ок')
        else:
            embed = discord.Embed(
                title="Ошибка!",
                description="У вас недостаточно прав для выполнения данной команды",
                color=0xE02B2B
            )
            await context.send(embed=embed)
</code>
Заранее спасибо!
P.S - Я новичок, и немного не понимаю как это преобразовать. Я пробовал, но к сожалению я смог получить только один id владельца, вместо двух

Если вы берете все значения которые лежат у вас в БД, то вы получаете на выходе кортеж (вот так он будет выглядеть, если вы с БД возьмете больше чем одно значение рядка:
[[15448481818, 1881811818, 1518118181], [19191911, 619198198189, 189191981],] если только одне, то
[[19191191, 14811816],]) что бы достать с него определенное значения ва надо взять ячейку:

for i in range(len(result)):
    if context.message.author.id == result[i]['id']:
        ...


Отдельные модели под пользователей и администраторов
Ребята, помогите.
Стоит задачка собрать джанго проект -
Админка

Нужна стандартная админка Django (пользователи админки могут не
пересекаться с пользователями в таблице Users)**

Не могу понять пункт с Админкой, как создать вторую модель с юзерами и что бы там отображались только юзеры без прав администратора. А в другой модели отображались только администраторы.

Похоже, что задание подразумевает, что вы можете создать свою модель
User, и не использовать стандартную из
django.contrib.auth.
И вообще не использовать стандартную аутентификацию, а реализовать свою для своих view. В этом случае можно использовать стандартный механизм аутентификации в django admin (именно это означает приписка, что пользователи "могут не пересекаться", т.е. ваша таблица пользователей для тех view, что вы реализовали, а django пользователи только для админки).
Вам будет достаточно подключить django admin приложение стандартным способом и создать пользователя django командой createsuperuser. То есть вам не нужно реализовывать вторую модель пользователя, а использовать готовую из джанго (собственно она и так используется по умолчанию, даже если вы об этом не подозреваете).
И еще, задание не заставляет вас создавать вторую модель. Оно разрешает вам использовать две независимые модели. Одну для самого сайта (это вы напишете сами), вторую - для админки (тут не нужно писать, нужно только сконфигурировать приложение django admin).


Почему не выполняется часть функции после asyncio.sleep()?
Перелопатил уже кучу "литературы" и никак не могу понять:
Почему если убрать строку
await task из функции
main(), то функция
foo() выполняется только до
asyncio.sleep(1), а если оставить
await task, то функция выполняется целиком:
Разве не должна фнукция
foo() выполниться так же целиком, но просто после выполнения
main() ?

import asyncio as ao

async def foo(number):
    print(f'foo  {number}')
    await ao.sleep(1)
    print('SOMETHING')

async def main():
    print('start')
    task = ao.create_task(foo(999))
    await task
    print('finish')

ao.run(main())

Заранее спасибо!

Функция
main завершается и цикл ожидания, созданный
ao.run(), то же прекращается. А без рабочего цикла ожидания уже ничего работать не может (некому понять, что
sleep закончился и запустить продолжение корутины)


Python вопрос по спискам, используя только lambda
Такая задача
Пользователь вводит через запятую ключевые слова, после этого вводит текст из нескольких предложений.
Вывести предложение целиком, если в нём присутствует хотя бы два ключевых слова. Вывести первое слово из предложения, если в нем встречается только одно ключевое слово.
С одним ключевым словом всё понятно, а вот с хотя бы двумя как решить не пойму
<code>
keywords = input('Введите ключевые слова через запятую: ').split(',')
words = input('Введите текст из нескольких предложений: ').split(' ')

print(list(map(lambda x: x in words, keywords)))
</code>

Исходные значения:

text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
keywords = ['sit', 'in', 'is']

Версия с функциональным программированием, лямбдами и мапами:

print(list(map(  # 4. Возвращаем тьюплы в строки, превращаем в список и выводим.
    lambda pair: pair[1],
    filter(  # 3. Фильтруем по количеству совпадений
        lambda pair: pair[0] > 1,
        map(  # 2. Превращаем строки-предложения в тьюплы с парой значений:
            lambda sen: (
                sum(map(lambda word: word in sen, keywords)),  # 2.1. количество совпадений
                sen  # 2.2. и исходное предложение
            ),
            text.split('.')  # 1. Разбиваем на предложения
        )
    )
)))

Версия с императивным программированием и lists comprehension:

# 1. Разбиваем на предложения
sentences = text.split('.')
# 2. Превращаем строки-предложения в тьюплы с парой значений
pairs = [
    (sum(word in sen for word in keywords), sen)
    for sen in sentences
]
# 3. Фильтруем по количеству совпадений
pairs = [
    pair for pair in pairs
    if pair[0] > 1
]
# 4. Возвращаем тьюплы в строки, превращаем в список и выводим.
sentences = [pair[1] for pair in pairs]
print(sentences)


По файлу в python 3.9 [закрыт]

Закрыт. Данный вопрос необходимо конкретизировать. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 2 года назад.

                        Улучшить вопрос

У меня есть определенный текст и он записан в файл txt формата и представим что его название будет word. Мне нужно чтобы при активации программы, можно было по нажатию на любую клавишу клавиатуры, выводилось следующее слово.
И еще вопрос, удобно же будет взаимодействие клавиатуры и кода совершать с помощью библиотеки Pygame?

Например можно сделать так:
<code>
import keyboard

l = []
# Читаем файл и сохраняем список слов.
with open("word.txt", "r", encoding='utf-8') as f:
    l = f.read().split()

max_index = len(l) # сколько слов в списке
index = 0

# Выводим слово равное текущему индексу и увеличиваем индекс на 1
def on_triggered(e):
    global index
    global max_index
    for _ in keyboard._pressed_events:
        if index < max_index:
            print(l[index])
            index += 1

# выводит новое слово по нажатию на клавишу
keyboard.hook(on_triggered)
print("Нажмите ESC для остановки")
keyboard.wait("esc")
</code>


Команды не загружаются - discord.py
Есть проблема - не работают команды. Причем в консоли, данный код, бот успешно загружает. Но при вводе команд, прописанных в коде - ответа нет. Прошу помочь мне с данным недоразумением.
Заранее спасибо!
Команд loader:

if __name__ == "__main__":
    for file in os.listdir("cogs"):
        if file.endswith(".py"):
            extension = file[:-3]
            try:
                bot.load_extension(f"cogs.{extension}")
                print(f"Loaded extension '{extension}'")
            except Exception as e:
                exception = f"{type(e).__name__}: {e}"
                print(f"Failed to load extension {extension}\n{exception}")

Сам код с командой

import json
import os
import sys
import pymysql.cursors
import discord
from discord.ext import commands

db = pymysql.connect(host='',
                     port=25060,
                     user='bot',
                     password='',
                     database='bot',
                     cursorclass=pymysql.cursors.DictCursor)

with db.cursor() as cursor:
    # Read a single record
    sql = ("select `id` from `owners`")
    cursor.execute(sql)
    result = cursor.fetchall()

with db.cursor() as cursor:
    # Read a single record
    sql = "SELECT `id` FROM `blacklisted`"
    cursor.execute(sql)
    bl = cursor.fetchall()

class owner(commands.Cog, name="owner"):
    def __init__(self, bot):
        self.bot = bot

    @commands.command(name="shutdown")
    async def shutdown(self, context, message):
        if context.message.author.id:
            embed = discord.Embed(
                description="сдох. покеда :wave:",
                color=0x42F56C
            )
            await context.send(embed=embed)
            await self.bot.close()
            await message.channel.send('ок')
        else:
            embed = discord.Embed(
                title="Ошибка!",
                description="У вас недостаточно прав для выполнения данной команды",
                color=0xE02B2B
            )
            await context.send(embed=embed)
            await message.channel.send('ok')
def setup(bot):
    bot.add_cog(owner(bot))

Используйте
bot.load_extension()
В скобках пишите путь к файлу:

bot.load_extension('cogs.help')#cogs - папка, help - название файла с командой

И теперь вам не надо вот этого:

if __name__ == "__main__":
    for file in os.listdir("cogs"):
        if file.endswith(".py"):
            extension = file[:-3]
            try:
                bot.load_extension(f"cogs.{extension}")
                print(f"Loaded extension '{extension}'")
            except Exception as e:
                exception = f"{type(e).__name__}: {e}"
                print(f"Failed to load extension {extension}\n{exception}")


Как проверить тип значения при конвертации timestamp в дату
Конвертирую
timestamp в
date, как оказалось во frame могут попасться уже даты
Пример

df = pd.DataFrame({'LAST_DATE': [274696742000, -1301790829000, None, -9544861678232, 8960604955000, pd.Timestamp(1990, 1, 1, 12)]})

Конвертирую так

df["LAST_DATE"] = (df["LAST_DATE"].div(1000).apply(lambda x: (datetime.datetime.utcfromtimestamp(x) if pd.notna(x) else np.nan)))

Должно получится

out: [1978-09-15 08:39:02, 1928-09-30 23:26:11, nan, 1667-07-15 01:32:01.768000, 2253-12-13 16:55:55, 2017-01-01 12:00:00]

Знаю что есть проверка на тип
if isinstance(x, int) но куда правильно воткнуть не понимаю

Ну, видимо, так, если подумать и правильно расставить условия и вычисления:

df["LAST_DATE"] = df["LAST_DATE"].apply(lambda x: datetime.datetime.utcfromtimestamp(x/1000) if isinstance(x, int) else x or pd.NA)

Делим на 1000 только в случае, если попался
timestamp, а не всё подряд
Собственно
timestamp определяем через
isinstance(x, int)

None обрабатываем с помощью трюка с
x or pd.NA - правая часть выражения подставится, только если левая часть ложна, в вашем случае это будет если встретится
None

Я тут подставил
pd.NA, поскольку это родной
NaN для
Pandas, но вы можете использовать и
np.nan, разницы особой нет на самом деле.
Вместо трюка с
or можно было использовать ещё один тернарный оператор
x if x else pd.NA, но через
or тоже самое получается в два раза короче.


Информатика ЕГЭ 24 задание [закрыт]

Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 2 года назад.

                        Улучшить вопрос

Возникли проблемы с написанием кода для данной задачи:

Текстовый файл состоит не более чем из 106 символов. Найдите максимальную длину строки, состоящей из нечетных десятичных цифр. Для выполнения этого задания следует написать программу.

<code>
f = open('55.txt')
s = f.readline()
c = 0
m = 0
for i in range(1, len(s)-1):
    if s[i]==s[i-1] and s[i]%2!=0:
        c+=1
        m = max(m ,c)
    else:
        c=0
print(m)
</code>
Можно просто создать файл TXT. и прописать в нем рандомные символы и буквы. Мне главное код понять. Заранее спасибо.
Для проверки кода можно использовать вот эту строку:

056a43184vb25412135dgf79451dfg3579sd156413579gdfg597dfgxcv12379

Ваш код как-то сильно не о том – зачем сравнивать с предыдущим символом?? И остаток от деления у символа берёте, без преобразования к числу. Плюс можно цикл сделать сразу по символам, а не индексам строки, да переменные назвать более читабельно.
<code>
# fl = open('55.txt')
# line = fl.readline()
line = '056a43184vb25412135dgf79451dfg3579sd156413579gdfg597dfgxcv12379'
cnt = 0
res = 0
for char in line:
    if char.isdigit() and int(char) % 2 == 1:
        cnt += 1
        res = max(res, cnt)
    else:
        cnt = 0
print(res)
</code>


Мессенджер на python
Появилась мысль создать простой чат\мессенджер на Python(+- 100 участников), в следствии чего возник вопрос. Мне придется искать сервер и платить за него, или можно это сделать как-то без него? А если можно без него, то как это реализовать?
Попытки найти ответ на мой вопрос в интернете были, но либо я не понял, либо ответа на него не было. Если вы имеете представление как это сделать, прошу помочь, хотя бы книгой, роликом или статьей где будет про это говориться.
(я не в коем случае не прошу готовое решение, я просто решил спросить у людей, которые понимают в программировании лучше меня)

Я пару раз выкладывал концепт p2p месенжера на стековерфлоу. работать можно без сервера вообще, но нужен ещё один месенжер чтоб обменяться контактами для соединения.
Реализуется это через udp и stun. stun пробивает udp порт во внешнюю сеть, а udp позволяет посылать сообщения без установки соединения = без сервера.
Нужно только опубликовать контакт (ip, port) одного из участников и через него получить остальные. Что-то в стиле DHT. Или использовать другой месенжер (например пуши гугла, публичный сип сервер или даже смски) для обмена контактами.
Если вы новичок в сетевом программировании - то начните с месенжера с сервером. Сервер можно найти бесплатно по акции или на начальных тарифах pythonanywhere, oracle и тп. На домашнем интернете есть шанс что у вас белый адрес - можно пробросить порт.


Сохранить данные парса в CSV файл
Товарищи, доброго времени суток.
Помогите, пожалуйста, сохранить результат парса в файл csv.
Имеется функция:

def parse_page(self, text):
    soup = bs4.BeautifulSoup(text, "lxml")
    container_port = soup.find("table", class_="port")
    tr_list = container_port.find_all("tr")
    for tr in tr_list:
        td_list = tr.find_all("td")
        for td in td_list:
            line = (str(td.text)).strip()
            print(line, end=";")
        print("\n")

Результат принта:

0;tcp;trojan;REx;Trojans;
0;tcp,udp;;Reserved;IANA;
1;udp;tcpmux;TCP Port Service Multiplexer (IANA registered)

Нужно всё это сохранить в CSV с разделителем
;
Я в этом деле новичок, прошу помощи, большое спасибо.

Входного xml/html, к сожалению, не представили. Делал на глаз.
Особо ничего не меняем. В цикле по tr_list все ячейки td из строки tr объединяем в одну строку с разделителем ';' через join(). После, если нужно, печатаем, а после выводим в файл.
<code>
def parse_page(self, text, filename='out.csv', delimiter=';'):
    soup = bs4.BeautifulSoup(text, "lxml")
    container_port = soup.find("table", class_="port")
    with open(filename, 'w') as file:
        tr_list = container_port.find_all("tr")
        for tr in tr_list:
            line = delimiter.join([(str(td.text)).strip() for td in tr.find_all("td")])
            if line:  # Проверка пустой строки
                print(line)
                file.write('{}\n'.format(line))
</code>


Парсинг данных из nvidia-smi
Задача состоит в том, чтобы парсить текущее энергопотребление для каждой карточки из nvidia-smi,
Сделал следующий скрипт

import subprocess
def get_gpu_info():
    sp = subprocess.Popen(['nvidia-smi', '-q'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    inf_p1 = []
    inf_p2 = []
    two_gpu_flag = False
    out_str = sp.communicate()
    out_list = out_str[0].decode("utf-8").split("\n")
    new_line = []
    for i in range(len(out_list)):
        if out_list[i] == "":
            new_line.append(i)
    split_arr = []
    for i in range(len(new_line)-1):
        if new_line[i] - new_line[i+1] < -5:
            split_arr.append(new_line[i])
            split_arr.append(new_line[i+1])
    out_list_1 = []
    out_list_2 = []
    if len(split_arr) > 2:
            two_gpu_flag = True
    for i in range(1000):
        sp = subprocess.Popen(['nvidia-smi', '-q'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        out_str = sp.communicate()
        out_list = out_str[0].decode("utf-8").split("\n")

        if two_gpu_flag:
            two_gpu_flag = True
            out_list_1 = out_list[split_arr[0]:split_arr[1]]
            out_list_2 = out_list[split_arr[2]:split_arr[3]]

            out_dict_gpu1 = {}
            out_dict_gpu2 = {}

            for item in out_list_1:
                try:
                    key, val = item.split(':')
                    key, val = key.strip(), val.strip()
                    out_dict_gpu1[key] = val
                except:
                    pass
            for item in out_list_2:
                try:
                    key, val = item.split(':')
                    key, val = key.strip(), val.strip()
                    out_dict_gpu2[key] = val
                except:
                    pass

            device_id_gpu1 = out_dict_gpu1['Minor Number']
            power_gpu1 = float(out_dict_gpu1[ 'Power Draw'].split(" ")[0])
            inf_p1.append(power_gpu1)
            device_id_gpu2 = out_dict_gpu2['Minor Number']
            power_gpu2 = float(out_dict_gpu2[ 'Power Draw'].split(" ")[0])

            inf_p2.append(power_gpu2)

        else:
            out_dict_gpu1 = {}
            for item in out_list:
                try:
                    key, val = item.split(':')
                    key, val = key.strip(), val.strip()
                    out_dict_gpu1[key] = val
                except:
                    pass

            device_id_gpu1 = out_dict_gpu1['Minor Number']
            power_gpu1 = float(out_dict_gpu1[ 'Power Draw'].split(" ")[0])
            inf_p1.append(power_gpu1)
    if two_gpu_flag:
        power_gpu1 = sum(inf_p1) / len(inf_p1)
        power_gpu2 = sum(inf_p2) / len(inf_p2)
        return {device_id_gpu1 : power_gpu1 , device_id_gpu2 : power_gpu2}
    else:
        power_gpu1 = sum(inf_p1) / len(inf_p1)
        return {device_id_gpu1 : power_gpu1 }

print(get_gpu_info())

Он хоть и работает, но строка
out_str = sp.communicate() отрабатывает очень долго
Подскажите, пожалуйста, какой-нибудь удобный и более быстрый способ парсинга данных через python из nvidia-smi

from subprocess import Popen, PIPE
from xml.etree.ElementTree import fromstring

import time

def get_gpu_info(*args, **kwargs):
    p = Popen(["nvidia-smi", "-q", "-x"], stdout=PIPE)
    outs, errors = p.communicate()
    xml = fromstring(outs)
    datas = []
    driver_version = xml.findall("driver_version")[0].text
    cuda_version = xml.findall("cuda_version")[0].text

    for gpu_id, gpu in enumerate(xml.getiterator("gpu")):
        gpu_data = {}

        minor_number = gpu.findall("minor_number")[0].text
        power_R = gpu.findall("power_readings")[0]
        power_draw = power_R.findall("power_draw")[0].text

        gpu_data["minor_number"] = minor_number
        gpu_data["power"] = power_draw
        datas.append(gpu_data)
    return datas

if __name__ == '__main__':
    c = time.time()
    get_gpu_info()
    print(time.time() - c )


математические операции дроби с целым числом [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

 Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.

Закрыт 2 года назад.

                        Улучшить вопрос

Как сделать так чтобы можно было проводить операции не только с дробями но и целого числа с дробью. Сейчас выдает ошибку, недостаток атрибутов.
Код:
<code>
class Fraction:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def __str__(self):
        return str(self.a) + "/" + str(self.b)

    def show(self):
        print(self.a, '/', self.b, sep='')

    def __add__(self, otherfraction):

        newnum = self.a * otherfraction.b + self.b * otherfraction.a
        newden = self.b * otherfraction.b
        print(str(newnum) + '/' + str(newden))
        return Fraction(newnum, newden)

    def __sub__(self, otherfraction):
        newnum = self.a * otherfraction.b - self.b * otherfraction.a
        newden = self.b * otherfraction.b
        print(str(newnum) + '/' + str(newden))
        return Fraction(newnum, newden)

    def __mul__(self, otherfraction):
        newnum = self.a * otherfraction.a
        newden = self.b * otherfraction.b
        print(str(newnum) + '/' + str(newden))
        return Fraction(newnum, newden)

    def __truediv__(self, otherfraction):
        newnum = self.a * otherfraction.b
        newden = self.b * otherfraction.a
        print(str(newnum) + '/' + str(newden))
        return Fraction(newnum, newden)

class OperationsOnFraction(Fraction):

    def getint(self):
        integer = self.a // self.b
        print(integer)
        return integer

    def getfloat(self):
        float_number = self.a / self.b
        print(float_number)
        return float_number

first_fraction = Fraction(1, 2)
second_fraction = Fraction(3, 4)
Fraction.__add__(first_fraction, second_fraction)
Fraction.__sub__(first_fraction, second_fraction)
Fraction.__mul__(first_fraction, second_fraction)
Fraction.__truediv__(first_fraction, second_fraction)

x = OperationsOnFraction(2, 3)
x.getint()
x.getfloat()
</code>

Может быть переводить целое числов дробь, если второй аргумент не передан, то принимается за 1.
<code>
class Fraction:
    def __init__(self, a, b=1):
        self.a = a
        self.b = b
    ...

a = Fraction(3)
</code>
И дальше работать как с обычной дробью


Как изменить цвет текста по умолчанию?
Подскажите, как изменить цвет текста по умолчанию в программе написанной в kivy через .py?

self.label = Label(text=“hello”)
self.label.color = (1,1,1,1)


Программа должна выдавать значение, по ключу введеному пользователя
Есть программа
<code>
qa = {"Как дела" : "Хорошо", "Что делаешь?": "Программирую"}

while True:
    user_say = input("Введи что-нибудь: ")
    if user_say == [""]:
        print("")
        break
</code>
Её нужно доработать, чтобы программа вытягивала значение по ключу, введённому пользователем
Прошу хотя бы навести на правильное решение, заранее спасибо!

Словарь вопрос-ответ у Вас уже есть просто добавьте if с print с ответом и проверкой на его наличие.
<code>
qa = {"Как дела" : "Хорошо", "Что делаешь?": "Программирую"}

while True:
    user_say = input("Введи что-нибудь: ")
    if not user_say:
        print("Пока")
        break
    if qa.get(user_say):
            print(qa[user_say])
</code>


Оптимизация программы по поиску пути до ближайшего нуля Python
Прохожу курсы по Python, стоит задача по поиску расстояния до ближайшего нуля.
Вводные данные (пример):

5 # кол-во элементов
0 1 4 9 0

А должно быть:

0 1 2 1 0

Задачу я решил, но при прохождении тестов, где программу нагружают по-максимум, она валится из-за ограничении памяти. Т.е. надо как-то оптимизировать мой код, но как - ума не приложу.

street = int(input())
land_number = input().split()

f = []

zero_number = [k for k, v in enumerate(land_number) if v == '0']

for i in range(len(zero_number)):
    left = list(reversed(range(0, len(land_number[:zero_number[i]:]) + 1)))
    right = list((range(1, len(land_number[zero_number[i] + 1:]) + 1)))
    f.append(left + right)
print(*map(min, zip(*f)))

Вот за 2 прохода по списку туда-обратно:
<code>
data = [0, 1, 4, 9, 0]
res = [0] * len(data)

i_zero_first = i_zero_last = data.index(0)
for i in range(i_zero_first, len(data)):
    if data[i] != 0:
        res[i] = res[i-1] + 1
    else:
        i_zero_last = i

for i in range(i_zero_last, i_zero_first, -1):
    res[i] = 0 if data[i] == 0 else min(res[i], res[i+1] + 1)

for i in range(i_zero_first-1, -1, -1):
    res[i] = res[i+1] + 1

print(res)
</code>
В принципе, тут даже второй список не нужен. Если входные данные больше не представляют ценности, то можно проводить все манипуляции прямо в над исходным списком.


Как добавить сразу нескольо строк в БД sqlite Python
Как сделать что бы из списка в колонку 'title' можно было добавить сразу несколько строк с записями из списка (в каждой строке по одному элементу списка) ? Первый раз работаю с БД на Python.
<code>
import sqlite3

conn = sqlite3.connect('mydb.db')
c = conn.cursor()

title = ['Вова', 'Дима', 'Илья']

c.executemany("INSERT INTO Article(title) VALUES (?)",  (title))

conn.commit()

conn.close()
</code>
таблица Article столбец title

Не знаю получилось ли у вас исполнить свой код после моего комментария, но решил дополнить свой ответ и оформить в виде решения.
Ваш отрывок кода открывает уже готовую базу данных. После этого вы пытаетесь вы полнить запрос к БД с помощью метода
executemany(). Но проблема в следующем. executemany проходит по вашему списку, берет первый элемент и пытается распаковать его (
values (?)), а для этого этот элемент должен быть списком, кортежем или словарем. Здесь же у вас обычные строки. отсюда первое исправление
title = ['Вова', 'Дима', 'Илья'] =>
title = [['Вова'], ['Дима'], ['Илья']]
После этого код работает, при наличии созданной базы данных, с таблицей. Для полной картины выкладываю код с созданием таблицы.

import sqlite3

conn = sqlite3.connect('mydb.db')
c = conn.cursor()

# Создание таблицы Article с полями articleid (целое число заполняется автоматически, уникально) и title (текст)
c.execute("""CREATE TABLE IF NOT EXISTS Article(
   articleid INTEGER PRIMARY KEY AUTOINCREMENT,
   title TEXT);
""")
conn.commit()

title = [['Вова'], ['Дима'], ['Илья']]

c.executemany("INSERT INTO Article(title) VALUES (?)",  (title))

conn.commit()

# Попробуем вывести содержимое БД
res = c.execute("SELECT * FROM Article")
print(res.fetchall())
# [(1, 'Вова'), (2, 'Дима'), (3, 'Илья')]
conn.close()

Более подробно о работе с sqlite можно почитать здесь


Как получить обычные текст в боте если он присылается в особом шрифте
Бот должен реагировать на текст, но юзер может прислать текст в другом шрифте, например, если юзер пишет боту "𝒘𝒉𝒆𝒏" как мне это обработать и получить простое "when" ?

Используйте библиотеку Unidecode

import unidecode
input_string = u'𝒘𝒉𝒆𝒏'
output_string = unidecode.unidecode(input_string)
print(input_string)
print(output_string)

Результат:

C:\>py test.py
𝒘𝒉𝒆𝒏
when

Источник


зацикленная музыка в игре
при проигрыше музыка повторяется миллион раз помогите
<code>
введите сюда код
import pygame
pygame.init()
screen = pygame.display.set_mode([900,750])
flag = True
print(pygame.font.get_fonts())
pic = pygame.image.load("CrazySmile.bmp")
picx =0
picy = 0
BLACK = (0,0,0)
timer = pygame.time.Clock()
speedx =5
speedy =5
WHITE = (255,255,255)
paddulew=200
padduleh=30
padduley=700
paddulex=300
picw=100
pich=100
point= 0
lives=3
font = pygame.font.SysFont("microsoftyaheitruetypemicrosoftyaheiuibold",24)
pop = pygame.mixer.Sound("pop.wav")
gameover=pygame.mixer.Sound("gameover.wav")

while flag:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            flag = False
        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_F1:
                point=0
                lives=5
                picx=0
                picy=0
                speedx=5
                speedy=5
    picx+=speedx
    picy+=speedy
    if picx<=0 or picx+pic.get_width()>= 900:
        speedx=-int(speedx*1.1)
    if picy <=0:
        speedy=-speedy
    if picy>=650:
        lives-=1
        speedy=-speedy
    screen.fill(BLACK)
    paddulex=pygame.mouse.get_pos()[0]
    paddulex-=paddulew//2
    pygame.draw.rect(screen,WHITE,(paddulex,padduley,paddulew,padduleh))
    if picy+pich>=padduley and picy+pich<=padduley+padduleh and speedy>0:
        if picx+picw/2>=paddulex and picx +picw/2<=paddulex+paddulew:
            point+=1
            pop.play()
            speedy=-speedy
    string ="  Жизни:"+str(lives)+" очки:"+str(point)
    if lives<1:
        speedx=speedy=0
        string="Игра окончена.Вы набрали очков: "+str(point)
        string+=" f1=продолжение(нажмите)"
        gameover.play()

    text=font.render(string,True,WHITE)
    rec=text.get_rect()
    rec.y=10
    screen.blit(text,rec)
    rec.centerx=screen.get_rect().centerx
    screen.blit(pic,(picx,picy))
    pygame.display.update()
    timer.tick(90)
pygame.quit()
</code>

Ну можно как-нибудь так. Заведите переменную
gameoverstate = False и потом проверяйте её. Только не забудьте по
F1 её тоже сбрасывать, как и остальное состояние. Таким образом этот блок кода, где играет финальная музыка, будет выполняться только один раз, когда кончатся жизни:

    if lives<1 and not gameoverstate:
        speedx=speedy=0
        string="Игра окончена.Вы набрали очков: "+str(point)
        string+=" f1=продолжение(нажмите)"
        gameover.play()
        gameoverstate = True


Код выдаёт "TypeError: 'NoneType' object is not iterable" как исправить?
Написал код для сравнения на вхождение элементов списка в словарь и наоборот.

def Function():
    print('Для остановки ввода словаря в ключе напечатайте пробел')
    dic={}
    while True:
        x1=input('Введите ключ: ')
        if x1 != ' ':
          x2 = input('Введите значение: ')
          dic[x1]=x2
        else:
            break
    print(dic)
    tex=[]
    tex = input('Введите список: ')
    text1 = []
    text2 = []
    for i in tex:
        for key in dic.keys():
            if (i in key) and str(i) not in text1:
                text1.append(i)
    for i in tex:
        for value in dic.values():
            if (i in value) and str(i) not in text1:
                text1.append(i)
    for i in tex:
        for value in dic.values():
            if (str(value) not in text1) and (str(value) not in text2)and (str(i) != ',') and (str(i) != ' '):
                text2.append(str(value))
    for i in tex:
        for key in dic.keys():
            if (str(key) not in text1) and (str(key) not in text2) and (str(i) != ',') and (str(i) != '  '):
                text2.append(str(key))
    for i in tex:
        if (str(i) not in text1) and (str(i) not in text2) and (str(i) != ','):
            text2.append(str(i))
    print('Имеющиеся элементы списка в словаре и наоборот: ', text1, '\nНе имеющиеся элементы словаря в списке и наоборот: ', text2)

Function()

Позже решил переделать.

def x(x1=0,x2=0):
    print('Для остановки ввода словаря в ключе напечатайте пробел')
    dic={}
    while True:
        x1=input('Введите ключ: ')
        if x1 != ' ':
          x2 = input('Введите значение: ')
          dic[x1]=x2
        else:
            break
    print(dic)

def tex(tex=[]):
    tex = input('Введите список: ')

def Function(dic, tex):
    text1 = []
    text2 = []
    for i in tex:
        for key in dic.keys():
            if (i in key) and str(i) not in text1:
                text1.append(i)
    for i in tex:
        for value in dic.values():
            if (i in value) and str(i) not in text1:
                text1.append(i)
    for i in tex:
        for value in dic.values():
            if (str(value) not in text1) and (str(value) not in text2)and (str(i) != ',') and (str(i) != ' '):
                text2.append(str(value))
    for i in tex:
        for key in dic.keys():
            if (str(key) not in text1) and (str(key) not in text2) and (str(i) != ',') and (str(i) != '  '):
                text2.append(str(key))
    for i in tex:
        if (str(i) not in text1) and (str(i) not in text2) and (str(i) != ','):
            text2.append(str(i))
    print('Имеющиеся элементы списка в словаре и наоборот: ', text1, '\nНе имеющиеся элементы словаря в списке и наоборот: ', text2)

dic=x()
tex=tex()

Function(dic=dic, tex=tex)

После этого код начал выводить ошибку:

Traceback (most recent call last):
  File "G:\Python\Test.py", line 45, in <module>
    Function(dic=dic, tex=tex)
  File "G:\Python\Test.py", line 21, in Function
    for i in tex:
TypeError: 'NoneType' object is not iterable

Что не так?

У вас в функции
tex пропущен
return. Такая функция всегда возвращает
None. Поэтому дальше, когда используется результат работы
tex, получаете исключение.
Исправить просто:

def tex(tex=[]):
    tex = input('Введите список: ')
    return tex


Python 'numpy.float64' object cannot be interpreted as an integer
Есть вот такой вот скрипт, для разделения массива на кластеры.

from scipy import ndimage
import numpy as np
list_coord = [[-2, -6, 281], [1, 1, 1], [2, 1, 1], [12, 11, 11],
              [1, 2, 2], [7, 6, 6], [13, 12, 12],
              [11, 13, 13], [6, 6, 6], [6, 7, 7], [8, 8, 8]]
list_coord_a=np.array(list_coord)
map_a=list_coord_a[:,:2]
min_value=np.min(map_a, axis=0) #коррекция для отрицательных координат
map_a=map_a-min_value
image=np.zeros(np.max(map_a, axis=0)+1, dtype=np.int32)
image[map_a[:,0], map_a[:,1]]=1
label, n=ndimage.label(image, structure=np.ones((3,3)))
for i in range(1,n+1):
    print(f'Компонент {i}: \n {np.argwhere(label==i)+min_value}')

Изменил тип элементов массива с int на float и получаю вот такую ошибку

image = np.zeros(np.max(map_a, axis=0) + 1 , dtype=np.float64)
TypeError: 'numpy.float64' object cannot be interpreted as an integer

Не могу понять как её исправить, может кто подсказать?

Ваш код у меня успешно работает без всяких ошибок. Но я всё-таки смог добиться такой же ошибки как у вас и в той же строке. Ошибка там возникает только если сделать
map_a массивом с числами c плавающей точкой:

list_coord_a=np.array(list_coord, dtype=np.float64)
map_a=list_coord_a[:,:2]
...
---> 10 image = np.zeros(np.max(map_a, axis=0)+1, dtype=np.int32)
TypeError: 'numpy.float64' object cannot be interpreted as an integer

Дело в том, что первый параметр у
np.zeros - это
shape, т.е. размеры создаваемой матрицы с нулями. Как вы себе представляете матрицу с дробным размером? Вот и
numpy её не представляет. Ну, он бы мог, наверное, округлить, но не знает куда - вверх или вниз. А у самого
np.zeros вы, конечно, можете ставить любой
dtype, это не приводит ни к какой ошибке - нули могут быть любого типа, хоть комплексного, это не проблема вообще.


Не получается записать данные в список Python
получаю определённый тип данных, и я хочу записать эти данные в список. Данные получаются в виде словаря. Ниже пример получаемых данны

[{'89756720.000.000014': ['5765675', '45654654']}]
[{'89756720.000.000014': ['5765675', '45654654', '876876687', '465465456', '234653454']}]
[{'36546524.101.889045': ['5765675', '45654654', '23423454', '543425786']}]

мой код записывает только один из данных из всего в таком формате:

{'36546524.101.889045': ['5765675', '45654654', '23423454', '543425786']}

Как видно в примере выше, записывает только последнее что выводит код. Мой ожидаемый результат:

[{'89756720.000.000014': ['5765675', '45654654']}, {'89756720.000.000014': ['5765675', '45654654', '876876687', '465465456', '234653454']}, {'36546524.101.889045': ['5765675', '45654654', '23423454', '543425786']}]

Сам код:

for profile_info in links_array:
    profile_response = session2.get(profile_info, headers=header).text

    soup = BeautifulSoup(profile_response, 'html.parser')
    items = soup.find_all('div', class_='list-view')

    new_datas = []
    for item in items:
        new_datas.append({
            profile_info: [item['data-key'] for item in soup.find_all('div', attrs={'data-key': True})],
        })

    for item in new_datas:
        with open('datas.txt', 'w') as out:
            out.writelines("%s\n" % line for line in item)
    codes_len += 1

    print(new_datas)

for item in new_datas:
    with open('datas.txt', 'w') as out:
        out.writelines("%s\n" % line for line in item)

Так вы перезаписываете файл на каждой итерации цикла. Поэтому сохраняется только последнее значение. Нужно делать наоборот - сначала открывать файл на запись, а потом уже делать цикл по коллекции:

with open('datas.txt', 'w') as out:
    for item in new_datas:
        out.writelines("%s\n" % line for line in item)