Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3492 posts.

Python для новичков » Нужна помощь pyautogui » Ноя. 7, 2021 12:40:13

Всем привет, подскажите, вот у меня есть маленький код он должен наводить и делать двойной щелчок левой клавишей мышки по области, он наводить, но не кликает что я не так? Задания благодарю за ответ. https://ibb.co/YN0MPbH

Центр помощи » прошу помщи в написании торгового бота  » Ноя. 7, 2021 00:02:18

доброго времени суток !
пытаюсь написать простого торгового бота.
прошу помощи у знающих людей !
1 необходимо чтобы бот умел подключаться через API к бирже.
2 синхронизация времени UTC между ботом и биржей.
3 размещение лимитного ордера на покупку.
4 размещение лимитного ордера на продажу.
ПС торговые стратегии не интересуют.
Spot Test Network URL для теста
https://testnet.binance.vision/api

документация https://binance-docs.github.io/apidocs/spot/en/#change-log

на данный момент получается вот такой код на phiton
 from binance.spot import Spot 
client = Spot()
print(client.time())
client = Spot(key="<api_key>", secret="<api_secret>")
{ "timezone": "UTC",
  "serverTime": 1565246363776, }
# Get account information
print(client.account())
# Post a new order
params = {
    "symbol": "BTCBUSD",
    "side": "BUY",
    "type": "LIMIT",
    "timeInForce": "GTC",
    "quantity": "0.00001" ,
    "price": "60000"
}
# Post a new order
params = {
    "symbol": "BTCBUSD",
    "side": "SELL",
    "type": "LIMIT",
    "timeInForce": "GTC",
    "quantity": "0.00001",
    "price": "63000"
}

Django » Группировка данных для двух графиков Highcharts » Ноя. 5, 2021 07:51:40

Добрый день!
Подскажите пожалуйста, как правильно собрать данные для одновременного вывода двух графиков в Highcharts на общей временной шкале, если данные из БД отличаются по дате регистрации?
   
#Models.py
class Worker(models.Model):
    names = models.CharField('Продавец', max_length=30)
    sum = models.DecimalField('Доход за смену', max_digits=7, decimal_places=0)
    time_create = models.DateTimeField('Время записи данных', auto_now_add=True)
class Supervisor(models.Model):
    sum = models.DecimalField('Сумма расхода, руб.', max_digits=7, decimal_places=0)
    description = models.CharField('Статья расхода', max_length=50)
    time_create = models.DateTimeField('Время записи данных', auto_now_add=True)
#Views.py
queryset_1 = Worker.objects.all() \
        .filter(time_create__year=2021) \
        .filter(time_create__month=10) \
        .values('sum') \
        .annotate(date_item=TruncDate('time_create')) \
        .order_by('date_item')
    queryset_2 = Supervisor.objects.all() \
        .filter(time_create__year=2021) \
        .filter(time_create__month=10) \
        .values('sum') \
        .annotate(date_item=TruncDate('time_create')) \
        .order_by('date_item')
    categories = list()
    data_series_1 = list()
    data_series_2 = list()
    for entry in queryset_1:
        categories.append('%s' % entry['date_item'])
        data_series_1.append(entry['sum'])
return render(request, 'line1/boss.html',
                  {
                      'categories': json.dumps(categories),
                      'data_series_1': json.dumps(data_series_1, default=custom_serializer)
                      # 'data_series_2': json.dumps(data_series_2, default=custom_serializer)
                  })

Python для экспертов » Как получить текст входящего СМС сообщения на смартфоне? » Ноя. 4, 2021 18:10:36

Всем привет, интересует вопрос получения текста входящего смс, а можно и номера отправителя. Подскажите, пожалуйста

Центр помощи » Улитка.. » Ноя. 4, 2021 10:33:35

Недавно начал изучать питон, задали вот такую задачку:
Изобразите извилистый спуск улитки по стене по заданной траектории (см.
примеры).
Формат ввода:
Вводится одна строка.
Начальный символ этой строки — символ рисования пути улитки.
Далее следует последовательность символов “<”, “>” и “V”, которые
означают движение улитки, соответственно, влево, вправо и вниз.
Гарантируется, что по любой горизонтали движение происходит только в
одну сторону (иными словами, между идущими в любом порядке “<” и “>”
всегда есть хотя бы один “V”) и что путь не пройдёт левее начального
положения.
Формат вывода:
Выводятся несколько строк, состоящих из символов рисования пути и
пробелов. Верхний левый угол соответствует начальному положению
улитки. Каждый последующий символ входной строки означает, что нужно
дорисовать символ рисования пути левее, правее или ниже предыдущего.
Пробелы используются для отступов.

Сколько ни сидел никак не могу понять, как решить. Помогите!

Центр помощи » Помогите пожалуйста найти ошибки в коде. Решение нашла на просторах интернета, но у меня не запускается. спасибо. » Ноя. 4, 2021 08:17:29

Есть два списка разной длины. В первом содержатся ключи, а во втором значения. Напишите функцию, которая создаёт из этих ключей и значений словарь. Если ключу не хватило значения, в словаре должно быть значение None. Значения, которым не хватило ключей, нужно игнорировать.
list_key=
list_val=
def create_dict(list_key,list_val):
if len(list_key)>len(list_val):
while len(list_key)>len(list_val):
list_val.append(None)
else:
list_val=list_val
return {key:value for key,value in zip(list_key, list_val)}

print create_dict(list_key,list_val)


Предположим, у нас есть access.log веб-сервера. Найти десять IP-адресов, от которых было больше всего запросов.

import re
from collections import Counter
# открываем файл в режиме для чтения
with open('access.log') as f:
# читаем весь файл в переменную
text = f.read()
# файл закроется сам
# регуляркой находим строки нужного формата
data = re.findall('{1,3}\.{1,3}\.{1,3}\.{1,3}', text)
# у нас есть список
# дальше считаем и берём десять наиболее популярных
for ip, count in Counter(data).most_common(10):
print(ip)

В системе авторизации есть ограничение: логин должен начинаться с латинской буквы, состоять из латинских букв, цифр, точки и минуса, но заканчиваться только латинской буквой или цифрой; минимальная длина логина — один символ, максимальная — 20. Напишите код, проверяющий соответствие входной строки этому правилу. Придумайте несколько способов решения задачи и сравните их.

import re
rex1 = re.compile(r'')
rex2 = re.compile(r'^{0,18}$')
logs =

for log in logs:
if len(log) == 1:
print('valid' if re.match(rex1, log) else ‘unvalid’)
else:
if log.count('.') > 1 or log.count('-') > 1:
print('unvalid')
else:
print('valid' if re.match(rex2, log) else ‘unvalid’)
valid
unvalid
unvalid
valid
unvalid
valid
unvalid
exit()





import re, time
def valid_one(login):
t = time.time()
if re.match('^{0,19}(?<!)$', login):
rez = ‘valid’
else:
rez = ‘unvalid’
return rez, ‘%f sec.’ % (time.time()-t)

def valid_two(login):
t = time.time()
if 1 <= len(login) <= 20 and login.isalpha() and (login.isalpha() or login.isdigit()):
rez = ‘valid’
for go in login:
if not go.isalpha() and not go.isdigit() and go != ‘-’ and go != ‘.’:
rez = ‘unvalid’
break
else:
rez = ‘unvalid’
return rez, ‘%f sec.’ % (time.time()-t)


while True:
login = raw_input (“login:”)

print ‘Valid_one:’, valid_one(login)
print ‘Valid_two:’, valid_two(login)

Базы данных » Как правильно установить метрики(accuracy)? » Ноя. 1, 2021 15:14:42

У меня проблема. Почему accuracy всегда показывает 100%. это ошибка. Пересмотрел много информации и вроде сделал все по шаблону. но все равно 100%. Взял стандартную нейросеть на Гитхабе для прогноза загрязнения в Пекине.(на ней обычно учатся) Функция потерь работает хорошо. А вот accuracy нет. Как исправить? Вот Код. (На многих сайтах он есть)
 from math import sqrt
from numpy import concatenate
from matplotlib import pyplot
from pandas import read_csv
from pandas import DataFrame
from pandas import concat
from sklearn import metrics
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import mean_squared_error
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
# convert series to supervised learning
def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
    n_vars = 1 if type(data) is list else data.shape[1]
    df = DataFrame(data)
    cols, names = list(), list()
    # input sequence (t-n, ... t-1)
    for i in range(n_in, 0, -1):
        cols.append(df.shift(i))
        names += [('var%d(t-%d)' % (j + 1, i)) for j in range(n_vars)]
    # forecast sequence (t, t+1, ... t+n)
    for i in range(0, n_out):
        cols.append(df.shift(-i))
        if i == 0:
            names += [('var%d(t)' % (j + 1)) for j in range(n_vars)]
        else:
            names += [('var%d(t+%d)' % (j + 1, i)) for j in range(n_vars)]
    # put it all together
    agg = concat(cols, axis=1)
    agg.columns = names
    # drop rows with NaN values
    if dropnan:
        agg.dropna(inplace=True)
    return agg
# load dataset
dataset = read_csv('pollution.csv', header=0, index_col=0)
values = dataset.values
# integer encode direction
encoder = LabelEncoder()
values[:, 4] = encoder.fit_transform(values[:, 4])
# ensure all data is float
values = values.astype('float32')
# normalize features
scaler = MinMaxScaler(feature_range=(0, 1))
scaled = scaler.fit_transform(values)
# frame as supervised learning
reframed = series_to_supervised(scaled, 1, 1)
# drop columns we don't want to predict
reframed.drop(reframed.columns[[9, 10, 11, 12, 13, 14, 15]], axis=1, inplace=True)
print(reframed.head())
# split into train and test sets
values = reframed.values
n_train_hours = 365 * 24
train = values[:n_train_hours, :]
test = values[n_train_hours:, :]
# split into input and outputs
train_X, train_y = train[:, :-1], train[:, -1]
test_X, test_y = test[:, :-1], test[:, -1]
# reshape input to be 3D [samples, timesteps, features]
train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))
test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))
print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)
# design network
model = Sequential()
model.add(LSTM(100, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(1))
model.compile(loss='mae', optimizer='adam', metrics=['accuracy'])
# fit network
history = model.fit(train_X, train_y, epochs=5, batch_size=54, validation_data=(test_X, test_y), verbose=2)                    
train_acc = model.evaluate(train_X, train_y, verbose=2)
test_acc = model.evaluate(test_X, test_y, verbose=2)
# plot history
pyplot.subplot(211)
pyplot.title('Loss')
pyplot.plot(history.history['loss'], label='train')
pyplot.plot(history.history['val_loss'], label='test')
pyplot.legend()
pyplot.subplot(212)
pyplot.title('Accuracy')
pyplot.plot(history.history['accuracy'], label='train')
pyplot.plot(history.history['val_accuracy'], label='test')
pyplot.legend()
pyplot.show()
# make a prediction
yhat = model.predict(test_X)
test_X = test_X.reshape((test_X.shape[0], test_X.shape[2]))
# invert scaling for forecast
inv_yhat = concatenate((yhat, test_X[:, 1:]), axis=1)
inv_yhat = scaler.inverse_transform(inv_yhat)
inv_yhat = inv_yhat[:, 0]
# invert scaling for actual
test_y = test_y.reshape((len(test_y), 1))
inv_y = concatenate((test_y, test_X[:, 1:]), axis=1)
inv_y = scaler.inverse_transform(inv_y)
inv_y = inv_y[:, 0]
# calculate RMSE
rmse = sqrt(mean_squared_error(inv_y, inv_yhat))
print('Test RMSE: %.3f' % rmse)
Все работает, кроме accuracy. Чего не доделал не пойму.
Epoch 1/5 - 3s - loss: 0.0407 - accuracy: 1.0000 - val_loss: 0.0163 - val_accuracy: 1.0000 Epoch 2/5 - 3s - loss: 0.0151 - accuracy: 1.0000 - val_loss: 0.0148 - val_accuracy: 1.0000 Epoch 3/5 - 3s - loss: 0.0145 - accuracy: 1.0000 - val_loss: 0.0146 - val_accuracy: 1.0000 Epoch 4/5 - 3s - loss: 0.0146 - accuracy: 1.0000 - val_loss: 0.0132 - val_accuracy: 1.0000 Epoch 5/5 - 3s - loss: 0.0144 - accuracy: 1.0000 - val_loss: 0.0132 - val_accuracy: 1.0000
результат работы

Центр помощи » (HELP) Программа на Python для вычисления значения функции (HELP) » Окт. 31, 2021 19:16:23

Помогите написать программу на Python для вычисления значения функции
Картинку функции прилагаю.

https://imgur.com/a/CZSwikE
Картинка

Python для новичков » Метод хеширования с приминением гаммирования  » Окт. 31, 2021 14:06:14

Добрый день! Мне надо составить программу шифрования методом контрольных сумм и методом хеширования с применением гаммирования. Программа шифрования методом контрольных сумм уже написана, остался только метод гаммирования. При этом есть входные данные:
Пусть а = 19, b = 3, с = МахVal + 1 = 256, t0 = 101. Вычислить контрольные суммы для нескольких сообщений методом контрольных сумм (KSumm) и методом хеширования с применением гаммирования (SummKodBukvOtkr):
а) Р = ‘02468’, KSumm = ?, SummKodBukvOtkr – ?;
б) Р =' 86420', KSumm = ?, SummKodBukvOtkr – ?;
в) Р = ‘1000009’, KSumm = ?, SummKodBukvOtkr – ?;
г) Р = ‘1900000’, KSumm = ?, SummKodBukvOtkr – ?

Надо срочно! Заранее спасибо за помощь!!

Также текст Р — последовательность знаков некоторого алфавита — и некоторый алгоритм А, преобразующий Р в некоторый текст М меньшей длины:
М = А(Р)

Центр помощи » Выполните задание с применением собственных функций на основе набора данных films.csv » Окт. 28, 2021 22:54:21

Помогите пожалуйста решить задачу.
Какой месяц чаще всего самый прибыльный в году?

Python для новичков » Как выводить вводимую пользователем информацию на сервер? | Python » Окт. 22, 2021 20:39:10

Всех приветствую добрым словом, позвольте для начала описать свою проблему: я создаю чат, где сервер будет принимать все сообщения пользователей, к примеру есть два подключенных пользователя - Виталина и Платон. Виталина отправляет сообщение Платону следующего характера: “Платон привет, сегодня меня не будет на работе, буду рада если сможешь сообщить об этом нашему менеджеру”. И когда Виталина отправила сообщение, сервер в сей час получает также это сообщение в этом же виде: Виталина отправила следующее сообщение: “Платон привет, сегодня меня не будет на работе, буду рада если сможешь сообщить об этом нашему менеджеру”. Как это возможно реализовать с моим кодом? Я более менее понимаю где кроется ошибка, но к сожалению я не могу её исправить. Готов принять Вашу благочестивую помощь. Код сервера и клиента ниже:

Server:

 import socket
import time
import threading
import os
HOST = '127.0.0.1'
PORT = 8888
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
def send_message():
    print('Enter name: ')
    name = input()
    while True:
        data = client.recv(1024)
        print(data.decode('utf-8'))
        msg = (f'{name} send message {data}')
        client.send(msg.encode('utf-8')) # this
        
        
def send_server():
    
    listen_thread = threading.Thread(target=send_message)
    listen_thread.start()
    while True:
        client.send(input('you: ').encode('utf-8'))
        
if __name__ == '__main__':
    os.system('clear')
    print('***** Welcome in Security Chat. *****')
    send_server()


Client:

 import socket
import time
import threading
import os
HOST = '127.0.0.1'
PORT = 8888
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
def send_message():
    print('Введите имя: ')
    name = input()
    while True:
        data = client.recv(1024)
        print(data.decode('utf-8'))
        msg = (f'{name} send message {data}') # здесь ошибка
        client.send(msg.encode('utf-8')) # и может здесь
        
        
def send_server():
    
    listen_thread = threading.Thread(target=send_message)
    listen_thread.start()
    while True:
        client.send(input('you: ').encode('utf-8'))
        
if __name__ == '__main__':
    os.system('clear')
    print('***** Welcome in Security Chat. *****')
    send_server()

Центр помощи » Просьба помочть разобраться .(запустить команду для установки зависимостей и модулей) » Окт. 22, 2021 12:21:16

Доброго времени суток, просьба не ругатся а если есть возможность подсказать!
Есть на github скрипт парсера + инвайта телеграмм
https://github.com/elizhabs/TGPars

По мануалу
“” нужно запустить команду для установки зависимостей и модулей:
python setup.py -i

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

В нашей дириктории вводим команду:
python setup.py -c “”"


!!! Итересует такой вопрос возможно ли запустить команду для установки зависимостей и модулей без ввода
setup.py -i setup.py -c (прописать заранее в скрипте выполнение этой функции.)
Испольую на другом пк без Python хотел скомпилировать скрипт в exe.

Условно при запуске срипта что модули устанавливали и подружались автоматически .


Спасибо за подсказки! Скрипт прикрепил.


Python для новичков » Трансформация из json в dataframe » Окт. 21, 2021 21:29:50

привет. не получается превратить многоуровневый json в обычную таблицу для последующего анализа. требуется помощь.

вот кусок json файла(для 2х строк):

{“type”: “FeatureCollection”, “features”: [
{“type”: “Feature”, “geometry”: {“type”: “Point”, “coordinates”: }, “properties”: {“id”: 1563301, “gibdd_id”: “195406532”, “point”: {“lat”: 55.961122, “long”: 37.412325}, “participant_categories”: , “severity”: “Тяжёлый”, “region”: “Молжаниновский”, “parent_region”: “Москва”, “datetime”: “2016-07-11 21:20:00”, “address”: “г Москва, ш Международное”, “participants_count”: 2, “injured_count”: 1, “dead_count”: 0, “category”: “Наезд на пешехода”, “light”: “Светлое время суток”, “nearby”: , “weather”: , “road_conditions”: , “vehicles”: [{“brand”: “ВАЗ”, “model”: “Kalina”, “color”: “Серый”, “year”: 2011, “category”: “А-класс (особо малый) до 3,5 м”, “participants”: [{“health_status”: “Не пострадал”, “role”: “Водитель”, “gender”: “Мужской”, “years_of_driving_experience”: 6, “violations”: }]}], “participants”: [{“health_status”: “Раненый, находящийся (находившийся) на стационарном лечении”, “role”: “Пешеход”, “gender”: “Мужской”, “violations”: }], “tags”: , “scheme”: “820”}},

{“type”: “Feature”, “geometry”: {“type”: “Point”, “coordinates”: }, “properties”: {“id”: 1529678, “gibdd_id”: “192559706”, “point”: {“lat”: 55.883, “long”: 37.606}, “participant_categories”: , “severity”: “Легкий”, “region”: “Бибирево”, “parent_region”: “Москва”, “datetime”: “2016-04-14 19:10:00”, “address”: “г Москва, ул Плещеева, 4”, “participants_count”: 3, “injured_count”: 2, “dead_count”: 0, “category”: “Наезд на пешехода”, “light”: “Светлое время суток”, “nearby”: , “weather”: , “road_conditions”: , “vehicles”: [{“brand”: “SKODA”, “model”: “Octavia”, “color”: “Серый”, “year”: 2012, “category”: “В-класс (малый) до 3,9 м”, “participants”: [{“health_status”: “Не пострадал”, “role”: “Водитель”, “gender”: “Женский”, “years_of_driving_experience”: 16, “violations”: }]}], “participants”: [{“health_status”: “Раненый, находящийся (находившийся) на амбулаторном лечении, либо которому по характеру полученных травм обозначена необходимость амбулаторного лечения (вне зависимости от его фактического прохождения)”, “role”: “Пешеход”, “gender”: “Женский”, “violations”: }, {“health_status”: “Раненый, находящийся (находившийся) на амбулаторном лечении, либо которому по характеру полученных травм обозначена необходимость амбулаторного лечения (вне зависимости от его фактического прохождения)”, “role”: “Пешеход”, “gender”: “Мужской”, “violations”: }], “tags”: , “scheme”: “820”}},


пробовал 2 способа:
1)
  import json
import pandas as pd
with open(r'moskva.geojson', encoding="utf-8") as f:
    data = json.loads(f.read())
    
data_nested = pd.json_normalize(data, record_path =['features'], max_level=3)
print(data_nested.head())

распаковывается только один уровень и все столбцы в иерархии ниже остаются массивами dict. max_level не влияет на результат

2)
 import json
from flatten_json import flatten
import pandas as pd
with open(r'moskva.geojson', encoding="utf-8") as f:
    data = json.loads(f.read())
    
flat = flatten(data)
    
data_nested = pd.json_normalize(flat)
print(data_nested.head())

Результат получается в тысячи колонок и все в одну строку.

Это то что накопал на stackoverflow и других источниках. я новичок в питоне. разжуйте пожалуйста что не так
ПС. Кусок с бд не получилось заспойлерить. Сорян

Python для новичков » Помогите в создании функции для игры 2048 » Окт. 15, 2021 16:03:33

Написал значит игру 2048 на питоне и тут застопорился, нужно сделать откат последнего хода на кнопку “В”, кто знает как это реализовать, помогите пожалуйста!
 import random
from tkinter import *
SIZE = 400
GRID_LEN = 4
GRID_PADDING = 10
BACKGROUND_COLOR_GAME = "#92877d"
BACKGROUND_COLOR_CELL_EMPTY = "#9e948a"
BACKGROUND_COLOR_DICT = {2: "#eee4da", 4: "#ede0c8", 8: "#f2b179",
                         16: "#f59563", 32: "#f67c5f", 64: "#f65e3b",
                         128: "#edcf72", 256: "#edcc61", 512: "#edc850",
                         1024: "#edc53f", 2048: "#edc22e"}
CELL_COLOR_DICT = {2: "#776e65", 4: "#776e65", 8: "#f9f6f2", 16: "#f9f6f2",
                   32: "#f9f6f2", 64: "#f9f6f2", 128: "#f9f6f2",
                   256: "#f9f6f2", 512: "#f9f6f2", 1024: "#f9f6f2",
                   2048: "#f9f6f2"}
FONT = ("Verdana", 40, "bold")
KEY_UP = "'w'"
KEY_DOWN = "'s'"
KEY_LEFT = "'a'"
KEY_RIGHT = "'d'"
mainframe = Frame()
grid_cells = []
matrix = []
def init_matrix():
    for i in range(GRID_LEN):
        matrix.append([0] * GRID_LEN)
    add_two()
    add_two()
#    add_two()
def add_two():
    a = random.randint(0, len(matrix)-1)
    b = random.randint(0, len(matrix)-1)
    while(matrix[a][b] != 0):
        a = random.randint(0, len(matrix)-1)
        b = random.randint(0, len(matrix)-1)
    matrix[a][b] = 2
def game_state():
    for i in range(len(matrix)):
        for j in range(len(matrix[0])):
            if matrix[i][j] == 2048:
                return 'win'
    for i in range(len(matrix)-1):
        for j in range(len(matrix[0])-1):
            if matrix[i][j] == matrix[i+1][j] or matrix[i][j+1] == matrix[i][j]:
                return 'not over'
    for i in range(len(matrix)):
        for j in range(len(matrix[0])):
            if matrix[i][j] == 0:
                return 'not over'
    for k in range(len(matrix)-1):
        if matrix[len(matrix)-1][k] == matrix[len(matrix)-1][k+1]:
            return 'not over'
    for j in range(len(matrix)-1):
        if matrix[j][len(matrix)-1] == matrix[j+1][len(matrix)-1]:
            return 'not over'
    return 'lose'
def reverse(mat):
    new = []
    for i in range(len(mat)):
        new.append([])
        for j in range(len(mat[0])):
            new[i].append(mat[i][len(mat[0])-j-1])
    return new
def transpose(mat):
    new = []
    for i in range(len(mat[0])):
        new.append([])
        for j in range(len(mat)):
            new[i].append(mat[j][i])
    return new
def cover_up(mat):
    new = []
    for i in range(len(mat)):
        new.append([0] * len(mat))
    done = False
    for i in range(len(mat)):
        count = 0
        for j in range(len(mat)):
            if mat[i][j] != 0:
                new[i][count] = mat[i][j]
                if j != count:
                    done = True
                count += 1
    return (new, done)
def merge(mat):
    done = False
    for i in range(len(mat)):
        for j in range(len(mat)-1):
            if mat[i][j] == mat[i][j+1] and mat[i][j] != 0:
                mat[i][j] *= 2
                mat[i][j+1] = 0
                done = True
    return (mat, done)
def up():
    global matrix
    matrix = transpose(matrix)
    game, done = cover_up(matrix)
    temp = merge(matrix)
    matrix = temp[0]
    done = done or temp[1]
    matrix = cover_up(matrix)[0]
    matrix = transpose(matrix)
    return done
def down():
    global matrix
    matrix = reverse(transpose(matrix))
    matrix, done = cover_up(matrix)
    temp = merge(matrix)
    matrix = temp[0]
    done = done or temp[1]
    matrix = cover_up(matrix)[0]
    matrix = transpose(reverse(matrix))
    return done
def left():
    global matrix
    matrix, done = cover_up(matrix)
    temp = merge(matrix)
    matrix = temp[0]
    done = done or temp[1]
    matrix = cover_up(matrix)[0]
    return done
def right():
    global matrix
    matrix = reverse(matrix)
    matrix, done = cover_up(matrix)
    temp = merge(matrix)
    matrix = temp[0]
    done = done or temp[1]
    matrix = cover_up(matrix)[0]
    matrix = reverse(matrix)
    return done
def init_grid():
    background = Frame(bg=BACKGROUND_COLOR_GAME, width=SIZE, height=SIZE)
    background.grid()
    for i in range(GRID_LEN):
        grid_row = []
        for j in range(GRID_LEN):
            cell = Frame(background, bg=BACKGROUND_COLOR_CELL_EMPTY, width=SIZE / GRID_LEN, height=SIZE / GRID_LEN)
            cell.grid(row=i, column=j, padx=GRID_PADDING, pady=GRID_PADDING)
            t = Label(master=cell, text="", bg=BACKGROUND_COLOR_CELL_EMPTY, justify=CENTER, font=FONT, width=5, height=2)
            t.grid()
            grid_row.append(t)
        grid_cells.append(grid_row)
def update_grid_cells():
    for i in range(GRID_LEN):
        for j in range(GRID_LEN):
            if matrix[i][j] == 0:
                grid_cells[i][j].configure(text="", bg=BACKGROUND_COLOR_CELL_EMPTY)
            else:
                grid_cells[i][j].configure(text=str(matrix[i][j]), bg=BACKGROUND_COLOR_DICT[matrix[i][j]], fg=CELL_COLOR_DICT[matrix[i][j]])
def key_down(event):
    key = repr(event.char)
    if key in mainframe.commands:
        done = mainframe.commands[repr(event.char)]()
        if done:
            add_two()
            update_grid_cells()
            if game_state() == 'win':
                grid_cells[1][1].configure(text="You", bg=BACKGROUND_COLOR_CELL_EMPTY)
                grid_cells[1][2].configure(text="Win!", bg=BACKGROUND_COLOR_CELL_EMPTY)
            if game_state() == 'lose':
                grid_cells[1][1].configure(text="You", bg=BACKGROUND_COLOR_CELL_EMPTY)
                grid_cells[1][2].configure(text="Lose!", bg=BACKGROUND_COLOR_CELL_EMPTY)
                grid_cells[2][1].configure(text="Score:", bg=BACKGROUND_COLOR_CELL_EMPTY)
                grid_cells[2][2].configure(text=get_score, bg=BACKGROUND_COLOR_CELL_EMPTY)
score = 0
def get_score():
    score = 0
    for r in _map_data:
        for c in range(len(matrix)):
            score += 0 if c < 4 else c * int((math.log(c, 2) - 1.0))
    return score  #  Импортировать математический модуль
def main():
    mainframe.master.title('2048')
    mainframe.master.bind("<Key>", key_down)
    mainframe.commands = {KEY_UP: up, KEY_DOWN: down, KEY_LEFT: left, KEY_RIGHT: right}
    init_grid()
    init_matrix()
    update_grid_cells()
    mainloop()
if __name__ == '__main__':
    main()

Python для новичков » Bot Telegram на Python для сервисов накрутки » Окт. 14, 2021 17:09:27

Всем доброго времени суток.

Такой вопрос, где почитать/посмотреть информацию по написанию бота заработка\накрутки под telegram.
Т.е., есть сервис, у сервиса есть API для создания стороннего бота. Интересен пример использования как API так и как реализовывать все действия в telegram.

Заранее всем спасибо.

Центр помощи » Работа с telebot.Помощь с кодом » Окт. 5, 2021 21:41:06

Здравствуйте,возникла проблемка.Решил попробовать написать бота,захотел добавить команду /Game,при которой бот присылает список цветов и предлагает пользователю выбрать один из них.Пользователь выбирает и если совпадает с тем ,что нарандомил random_color,то бот присылает сообщение,что пользоваетль угадал или же не угадал.Но бот после написания пользователем команды /Game принимает ее же, как за выбранный цвет и присылает сообщение,что пользователь не угадал.Кто знает в чем проблемка,подскажите как ее решить,буду благодарен.
 import pyowm
import random2
import telebot
from time import sleep
from random import choice
@bot.message_handler(commands =['Game'] )
def game(message):
    bot.send_message(message.chat.id, "Введите ваш цвет(список:Зеленый Желтый Красный Синий)")
    colors = ['Желтый', 'Зеленый', 'Красный', 'Синий']
    random_color = (choice(colors)).lower()
    color_user = message.text.lower()
    if color_user == random_color:
        bot.send_message(message.chat.id, 'Ты угадал!Цвет был ' + random_color)
    else:
        bot.send_message(message.chat.id,'Ты не угадал!Цвет был ' + random_color)

Web » Генератор API клиента, OpenApi (swagger) v3.0 » Окт. 4, 2021 12:28:48

Здравствуйте, есть пара вопросов касательно openapi generator (https://openapi-generator.tech/docs/installation):
1) пользовался ли кто-то и удалось ли успешно сгенерировать клиент на питоне?
2) есть ли какие-то инструкции, как допилить генератор (или свои шаблоны, или еще что-то) так, чтобы реально клиент заработал?

Что у меня получилось: у нас есть большая openapi спецификация, написанная с поддержкой разных фич 3-ей версии, к примеру (oneOf/AllOf/anyOf), где данный генератор лажает, не знает что делать с такими типами и ставит UnknownType для аттрибута. А те, вещи, которые нормально сгенерировались, имеют другие проблемы: к примеру, удалось получить ответ от апишки, но не смогло создать модель на основе ответа:
 openapi_client.exceptions.ApiTypeError: Invalid type for variable 'activated'. Required value type is datetime and passed type was NoneType at ['received_data'][0]['activated']
Ну и так далее…
В общем, очень много проблем, а решать надо. Поделитесь своим опытом, если таковой имеется в генерации клиента опенсурсными инструментами.

Автоматизация бизнеса » Расшифруйте кодировку и получите 500$ » Окт. 3, 2021 04:11:47

Всем привет,
Расшифруйте этот зашифрованный текст и следуйте инструкциям, приведенным в этом зашифрованном тексте.
Это означает, что вы его расшифровали и выиграли приз в 500 долларов.

ba3xDmsH/xHtIPa7KO3uDQHnuZzXAxS0fEfXmLgt7ISasdETm9Oj9s/VGpXH//egpN6Rs0vJmZnONQtf73p1k8sYYuNO

7sC5/LNvSfwucMw1EYiujj2Nrya34lORM7pp/vsR2PYGeaLqbeSFk6RtQq0X5Kj2n97bagRxlLAJNzh2VTkEESWn/W5YIhz

ucdNdLlWmz/5F2zltM0NkzOeBwprugxU0GQ0tHcKh4fiQKCD8DZyitZcRIgbuYYwoGEmJddedm+GhUhN8RB6ljCxKu

wpXz2QdmAyiW97bAbOgUK/oVHsEZ5gLIr7NmdgDQ9t8XhrgmaZcO/bsYkkcBUJzLTUbqh4l+Sq4zWwFaCMyJTsuQv

rDAEbBqY8MCvPmNeD1aS/ey79SAnKrQp2T170lIAGQwZq7iP7YQs8VWsYsP2QlY0vTM86T852bEHL/Oon9grmUptD

4WTIGUakSNxJ70jySuOKQgZOME3S+9BcbpPx/c8lO32wH6FPe9RlMZaYf9RHKUsaPOMFPV+xFGJ2OhNeItJkEd7qv

p9aCj/h7zvdrQTCi5IFdsEWxEhRz2f1dxGciI5qc3k3Onvor55zCyA==

Расшифруйте кодировку и получите 500$

GUI » Расшифруйте кодировку и получите 500$ » Окт. 3, 2021 04:09:18

Всем привет,
Расшифруйте этот зашифрованный текст и следуйте инструкциям, приведенным в этом зашифрованном тексте.
Это означает, что вы его расшифровали и выиграли приз в 500 долларов.

ba3xDmsH/xHtIPa7KO3uDQHnuZzXAxS0fEfXmLgt7ISasdETm9Oj9s/VGpXH//egpN6Rs0vJmZnONQtf73p1k8sYYuNO

7sC5/LNvSfwucMw1EYiujj2Nrya34lORM7pp/vsR2PYGeaLqbeSFk6RtQq0X5Kj2n97bagRxlLAJNzh2VTkEESWn/W5YIhz

ucdNdLlWmz/5F2zltM0NkzOeBwprugxU0GQ0tHcKh4fiQKCD8DZyitZcRIgbuYYwoGEmJddedm+GhUhN8RB6ljCxKu

wpXz2QdmAyiW97bAbOgUK/oVHsEZ5gLIr7NmdgDQ9t8XhrgmaZcO/bsYkkcBUJzLTUbqh4l+Sq4zWwFaCMyJTsuQv

rDAEbBqY8MCvPmNeD1aS/ey79SAnKrQp2T170lIAGQwZq7iP7YQs8VWsYsP2QlY0vTM86T852bEHL/Oon9grmUptD

4WTIGUakSNxJ70jySuOKQgZOME3S+9BcbpPx/c8lO32wH6FPe9RlMZaYf9RHKUsaPOMFPV+xFGJ2OhNeItJkEd7qv

p9aCj/h7zvdrQTCi5IFdsEWxEhRz2f1dxGciI5qc3k3Onvor55zCyA==

Расшифруйте кодировку и получите 500$