Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3493 posts.

Python для новичков » новичок в пайтон » вчера 16:47:23

# This is a sample Python script.

# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, a


def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.


# Press the green button in the gutter to run the script.
if __name__ == ‘__main__’:
print_hi('PyCharm')

# See PyCharm help at https://www.jetbrains.com/help/pycharm/
Как только открываю питон вот что пишет. Не получается работать с переменными и с числами вообще. Слова подчеркиваются красным или желтым цветом. Помогите пожалуйста не могу разобраться.

Python проекты » Python Autoclicker » Март 21, 2025 12:31:29

Russoft autoclicker v1.0
Встречайте самый простой в мире кликер!
Он может умножать количество Ваших кликов в 200 раз! (т.е. 5 кликов специального сочетания клавиш = 1000 кликов).
На сайте cpstest.org удалось достичь результата в 1761 cps
Горячие клавиши:
  • Ctrl + Shift + K - вызов кликера
    Ctrl + Shift + ‘+’ - Увеличить CPS
    Ctrl + Shift + ‘-’ - Уменьшить CPS

Если генерируется исключение, запустите файл injector.cmd (только для windows), после запустите программу.
Обо всех других ошибках пишите в комментариях.

GUI » Buckle Up, Buttercup! Moto X3M is Here to Unleash Your Inner Daredevil! » Март 15, 2025 09:29:43

Are you craving some adrenaline-pumping, gravity-defying action? Do you dream of soaring through the air on a motorbike, narrowly avoiding explosions and treacherous obstacles? Then look no further, my friends, because Moto X3M has arrived to satisfy your need for speed and insane stunts! This isn't your grandma's Sunday drive; this is a whirlwind of flips, tricks, and near-misses that will keep you on the edge of your seat (or bike seat, in this case!).

What is Moto X3M Anyway? A Need-to-Know Overview

Moto X3M is a wildly popular online motorbike racing game that blends fast-paced action with tricky obstacle courses. The goal? Simple: navigate your motorbike through a series of increasingly challenging levels as quickly as possible without crashing and exploding in a fiery ball of glory (or shame!).

Think of it as a digital playground for thrill-seekers, a place where you can test your reflexes, hone your skills, and unleash your inner stuntman (or stuntwoman!). Developed by Madpuffers, Moto X3M has been captivating players since its initial release and continues to be a go-to game for those seeking a quick dose of adrenaline-fueled fun.

Release Date: The Adventure Begins!

The original Moto X3M hit the web in 2016, instantly captivating gamers with its addictive gameplay and challenging levels. Since then, the game has been updated with new levels and features, ensuring the thrill ride never ends!

The Masterminds Behind the Mayhem: Meet Madpuffers

Madpuffers is the name you need to know. This game development studio is responsible for bringing Moto X3M to life. While they might not be household names, they’ve certainly made a splash in the online gaming world with their knack for creating simple yet incredibly addictive games. They’ve focused on physics-based gameplay and challenging level design, making Moto X3M a winner.

Gameplay: It's All About Speed, Skill, and a Little Bit of Luck!

The core gameplay of Moto X3M is beautifully simple. You control a motorbike rider as they navigate a series of obstacle-filled levels. These levels aren't just simple tracks; they're elaborate gauntlets of spinning saws, exploding barrels, precarious platforms, and gravity-defying loops.

You’ll use the arrow keys (or on-screen controls for mobile) to accelerate, brake, and tilt your bike. Mastering the lean is crucial – it allows you to land jumps safely, navigate tricky terrain, and even perform stylish flips for extra time bonuses (and bragging rights!).

The key to success in Moto X3M lies in finding the perfect balance between speed and control. Going too fast can lead to spectacular crashes, while going too slow can cost you precious seconds and prevent you from achieving that coveted three-star rating.

How to Play: Your Guide to Becoming a Moto X3M Master

Ready to rev your engine and dive into the action? Here's a step-by-step guide to getting started with Moto X3M:

Find Your Platform: Moto X3M is readily available on web browsers and mobile devices (iOS and Android). Simply search for “Moto X3M” on your preferred app store or visit a website hosting the game (like the one you’re currently reading!).

Controls:

Arrow Keys (or on-screen controls):
Up Arrow: Accelerate
Down Arrow: Brake/Reverse
Left Arrow: Lean Backwards
Right Arrow: Lean Forwards
Spacebar (some versions): Restart the level quickly after a crash.
Understand the Goal: Your primary objective is to complete each level as quickly as possible. The faster you complete the level, the more stars you'll earn (up to three stars).

Master the Lean: Learning to control your bike's lean is essential. Use the left and right arrow keys to adjust your angle in the air, ensuring you land smoothly on your wheels.

Practice Makes Perfect: Don't get discouraged if you crash a lot at first. Moto X3M is all about trial and error. Keep practicing, and you'll gradually improve your skills and learn the nuances of each level.

Use Checkpoints Wisely: The game generously provides checkpoints throughout each level. If you crash, you'll restart from the last checkpoint you passed. This prevents you from having to repeat the entire level from scratch.

Exploit the Physics: Moto X3M's physics engine can be your friend or your enemy. Experiment with different angles and speeds to see how your bike reacts. You might discover shortcuts or unexpected ways to overcome obstacles.

Pro Tips for Conquering Moto X3M:

Momentum is Key: Carry as much speed as possible through jumps and loops to maintain your momentum.
Lean Forward on Downhill Slopes: This will help you maintain control and prevent your bike from flipping over.
Lean Backwards on Uphill Slopes: This will help you maintain traction and prevent your bike from losing speed.
Anticipate Obstacles: Pay attention to the layout of the level and anticipate upcoming obstacles. This will give you time to react and adjust your strategy.
Don't Be Afraid to Bail: Sometimes, the best course of action is to bail out of a jump rather than risk a disastrous crash. Tap the down arrow to brake and regain control.
Unlock New Bikes: As you progress through the game, you'll unlock new bikes with different stats. Experiment with different bikes to find the one that suits your play style.
Watch Replays: If you're struggling with a particular level, watch replays of other players completing it. This can give you valuable insights into their strategies and techniques.
Objective Review: Is Moto X3M Worth Your Time?

So, is Moto X3M a must-play game, or just another flash in the pan? Here's an objective look at the pros and cons:

Pros:

Addictive Gameplay: The fast-paced action and challenging levels are incredibly addictive.
Simple Controls: The controls are easy to learn but difficult to master, providing a satisfying learning curve.
Variety of Levels: The game features a wide variety of levels, each with its own unique challenges and obstacles.
Free to Play: Moto X3M is free to play on most platforms, making it accessible to everyone.
Quick Play Sessions: The short levels make it perfect for quick gaming sessions on the go.
Cons:

Repetitive Gameplay: The core gameplay loop can become repetitive after extended play sessions.
Physics Can Be Unforgiving: The physics engine can sometimes be unforgiving, leading to frustrating crashes.
Ads (Depending on Platform): Some versions of the game may contain ads, which can be disruptive.
Limited Depth: While addictive, the game lacks the depth and complexity of more sophisticated racing games.
Overall:

Moto X3M is a fantastic game for anyone looking for a quick and exciting dose of adrenaline-fueled fun. While it may not be the most complex or innovative game out there, its simple controls, addictive gameplay, and challenging levels make it a highly enjoyable experience. The fact that it's free to play is just icing on the cake.

Who Should Play Moto X3M?

Fans of motorbike racing games.
Players who enjoy challenging obstacle courses.
Anyone looking for a quick and addictive gaming experience.
Those who appreciate simple controls and fast-paced action.
Gamers who want a free-to-play title.
Beyond the Original: Exploring the Moto X3M Universe

The success of the original Moto X3M has spawned several sequels and spin-offs, each offering its own unique twist on the core gameplay. Keep an eye out for these titles:

Moto X3M 2: More of the same high-octane action, with new levels and challenges.
Moto X3M 3: Even more crazy stunts and obstacles to overcome.
Moto X3M 4: Winter: A festive winter-themed version of the game, complete with snow-covered tracks and holiday decorations.
Moto X3M Pool Party: Trade snow for sun in this water-themed installment, featuring slides, floats, and plenty of splashy crashes!
Ready to Ride? Your Call to Action!

So, what are you waiting for? It's time to hop on your virtual motorbike and experience the thrill of Moto X3M for yourself!

Don't forget to share your high scores and craziest crashes in the comments below. We want to hear about your Moto X3M adventures! Are you ready to become the ultimate Moto X3M champion? Let's find out!

Summary: Moto X3M – A Thrill Ride Worth Taking

Moto X3M is a free-to-play online motorbike racing game developed by Madpuffers, renowned for its addictive gameplay, challenging levels, and simple controls. Since its release in 2016, it has garnered a large following among fans of racing and stunt games. Players navigate increasingly difficult obstacle courses, mastering the art of leaning and controlling their bike to achieve the fastest times and earn coveted three-star ratings. While the gameplay may become repetitive for some, the game’s accessibility, quick play sessions, and sheer thrill make it a must-try for any adrenaline junkie looking for a fun and engaging experience. So, buckle up, hit the gas, and prepare for a wild ride with Moto X3M! You won't regret it!
тправ

Флейм » Почему в Jira задачи не отображаются в представлении Доска? » Фев. 22, 2025 08:37:13

Зарегистрировал бесплатную онлайн Jira на сайте https://www.atlassian.com/
Создал тестовый проект и тестовые задачу и баг.
Они отображаются в представлении Бэклог, но не отображаются в представлении Доска. Подскажите почему?





Django » Помогите найти решения для того чтобы подружить консольную программу с сайтом. » Фев. 19, 2025 17:33:42

Здравствуйте, знаю питон довольно хорошо но в технологии django новичок. Я отдельно сделал консольную программу с использованием sqlite3, а потом на пару с chatGPT сделал простейший сайт. Он состоит из 2 страничек первая это авторизация а вторая главная, на главной странице есть контейнер в котором вертикально расположены контейнеры с текстом. Есть модель Message в котором хранится этот текст разделённый на две части (потом объясню почему) каждый раз когда пользователь нажимает на клавишу сайт с помощью JS ловит это вызывает питоновскую функцию в которой к последнему созданному сообщению этим пользователем прибавляется эта буква, затем все сообщения с помощью JsonResponse отправляются на html и там строятся как раз эти контейнеры с текстом, каждый раз когда пользователь нажимает Enter то начинается новое сообщение, я бы хотел чтобы с помощью этого функционала пользователь мог работать с написанной мною консольной программой а сообщения я разделил что-бы ограничить на редактируемый и не редактируемый текст (например если в input() написать строку она будет выводится и редактироваться не будет). Главная загвоздка заключается в том что консольная программа не линейная и требует вводы на разных этапах что не оставляет выбора как запускать эту программу для каждого пользователя отдельно, я пробовал с помощью асинхронного вызова функции но тогда это ломает работу sqlite3. Если нужно ниже приложу все файлы.

Python для новичков » Skyrim and Python » Янв. 31, 2025 03:55:33

Всем привет, недавно меня подцепил снова Skyrim и решил для него написать скриптики на Python. Для начала решил написать скрипт, который будет бегать за меня из точки А в точку Б. Пол дня проебал, дабы выяснить как работать с памятью, искал сами адреса памяти для скайрима через Cheat Engine, потом выяснил, что после перезахода всё адреса памяти меняются. Крч не суть.

Написав, что то адекватное ( как мне казалось ) я решил протестить, но кнч столкнулся с багами. Выставив координаты по которым нужно бежать персонажу, запустив скрипт, понял, что он просто не добегает до нужной точки. Думал-думал как пофиксить и крч никак не получилось. Кто в целом сможет мне помочь буду сильно Вам благодарен.

https://codefile.io/f/mNponpoBxi

https://youtu.be/P0ShVvMUBnY

Python для новичков » Не могу восстановить необходимые пакеты » Янв. 29, 2025 08:04:37

После ряда неудачных попыток задать необходимые версии пакетов по файлу requirements.txt, завершавшихся сообщениям об ошибках (достаточно большой текст темно-красного шрифта), не удается установить пакеты даже без указания версии. Попытки задать версии по requirements проводились в директории piton 3.9 тогда как основная используемая версия 3.12.

Python для новичков » Метод edit_message_text » Янв. 26, 2025 14:28:48

Кто может помочь?
Суть проблемы: У меня есть бот, там есть меню, профиль, статистика и т.д, я когда нажимаю профиль, то я хочу сделать профиль в этом сообщение, чтоб кнопки пропадали и появился профиль с кнопкой назад. А у меня появляется ошибка “Ошибка при редактировании сообщения: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: there is no text in the message to edit”

Python для новичков » После оптимизации ИИ ошибка » Янв. 18, 2025 14:51:37

Работающая программа
 # From https://www.kaggle.com/code/freacle/part-1
# В исходной статье https://habr.com/ru/articles/869118/
# Очень много кусков программ с объяснениями
import numpy as np
Parameter = None
def ParameterObj():
    class Parameter:
        layers = []
        calling = dict()
        def __init__(self, info):
            Parameter.layers.append(info[0])
            Parameter.calling[info[0]] = info[1:]
    return Parameter
    
class Module:
    def __init__(self):
        self._constructor_Parameter = ParameterObj()
        global Parameter
        Parameter = self._constructor_Parameter
    def forward(self):
        pass
    def __call__(self, x):
        return self.forward(x)
    def parameters(self):
        return self
class Linear:
    def __init__(self, input_channels: int, output_channels: int, bias = True):
        self.input_channels = input_channels
        self.output_channels = output_channels
        self.bias = bias
        self.backward_list = []
        if bias:
            Parameter([self, np.random.uniform(- 0.5, 0.5, size=(self.input_channels, self.output_channels)), np.random.uniform(- 0.5, 0.5, size=self.output_channels)])
        else:
            Parameter([self, np.random.uniform(- 0.5, 0.5, size=(self.input_channels, self.output_channels)), np.zeros(self.output_channels)])
    def __call__(self, x):
        self.x = np.array(x, copy=True)
        result = x @ Parameter.calling[self][0] + Parameter.calling[self][1]
        return result
    def backward(self, input_matrix):
        x_gradient = input_matrix @ self.weight.T
        self.weight_gradient = self.x.T @ input_matrix
        self.bias_gradient = input_matrix.mean(axis=0)
        return x_gradient
class Flatten:
    def __init__(self): 
        pass
    def __call__(self, x):
        return x.reshape(1, -1)
class ReLU:
    def __init__(self): 
        pass
    def __call__(self, x):
        self.x = x
        return np.maximum(0, x)
    def backward(self, input_matrix):
        return (self.x > 0) * input_matrix
        
class Softmax():
    def __init__(self): 
        pass
    def __call__(self, z):
        return np.exp(z) / np.sum(np.exp(z), axis=1).reshape(-1, 1)
class CrossEntropyLoss:
    def __init__(self):
        self.predicted = None
        self.true = None
    def __call__(self, logits, true):
        predicted = np.exp(logits) / np.sum(np.exp(logits), axis=1).reshape(-1, 1) # softmax
        self.predicted = np.array(predicted, copy=True) # сделаем копию входных матрицы для дальнейших вычислений
        self.true = np.array(true, copy=True) # сделаем копию входных матрицы для дальнейших вычислений
        number_of_classes = predicted.shape[1] # получим количество классов, в нашем случае 2
        self.true = np.array(true, copy=True)
        # вычисляем значение лосс-функции прямо по формуле
        self.loss = -1 * np.sum(true * np.log(predicted + 1e-5), axis=1)
        
        return self
        
    def backward(self):
        loss = self.predicted - self.true
		# Итерируем по каждому слою в обратном порәдке, благодаря тому, что мы всё сохранили в Parameter.layers
        for index, layer in enumerate(Parameter.layers[::-1]):
            if type(layer).__name__ == 'Linear':
                changes_w = (layer.x.T @ loss) / loss.shape[0]
                # нормировка на loss.shape[0] нужна, так как величина изменений зависит от размера батча
                if layer.bias:
                    changes_b = (np.sum(loss) / loss.shape[0])
                else:
                    changes_b = 0
                layer.backward_list = [changes_w, changes_b]
			    # Cчитаем градиент для следующих слоев
                loss = loss @ Parameter.calling[layer][0].T
                
            elif type(layer).__name__ == 'ReLU':
                loss = layer.backward(loss)
class SGD:
    def __init__(self, model, learning_rate):
        self.model = model
        self.lr = learning_rate
    def step(self):
        for index, layer in enumerate(self.model._constructor_Parameter.layers[::-1]):
            if type(layer).__name__  == 'Linear':
                weight, bias = self.model._constructor_Parameter.calling[layer]
                weight_gradient, bias_gradient = layer.backward_list[0], layer.backward_list[1]
                self.model._constructor_Parameter.calling[layer] = [weight - lr * weight_gradient, bias - lr * bias_gradient] 
            
class SimpleNet(Module):
    def __init__(self):
        super().__init__()
        self.linear1 = Linear(input_channels=25, output_channels=10, bias=True)
        self.linear2 = Linear(input_channels=10, output_channels=2, bias=True)
        self.flatten = Flatten()
        self.relu = ReLU()
        self.softmax = Softmax()
    def forward(self, x):
        x_1 = self.flatten(x)
        x_2 = self.linear1(x_1)
        x_3 = self.relu(x_2)
        x_4 = self.linear2(x_3)
        return x_4
input_x = np.array([[ 0.99197708, -0.77980023, -0.8391331 , -0.41970686,  0.72636492],
       [ 0.85901409, -0.22374584, -1.95850625, -0.81685145,  0.96359871],
       [-0.42707937, -0.50053309,  0.34049477,  0.62106931, -0.76039365],
       [ 0.34206742,  2.15131285,  0.80851759,  0.28673013,  0.84706839],
       [-1.70231094,  0.36473216,  0.33631525, -0.92515589, -2.57602677]])
target_x = np.array([[1, 0]])
loss_fn = CrossEntropyLoss()
model = SimpleNet()
optim = SGD(model.parameters(), learning_rate = 0.01)
for i in range(100):
    output = model(input_x)
    loss = loss_fn(output, target_x)
    loss.backward()
    lr = 0.01
    optim.step()
    if (i % 20) == 0:
        print(loss.loss, i)
С целью сокращения была доверена ИИ для оптимизации. После выкидывания ИИ всех комментарием и нескольких изменений, текст был получен без окончания, содержащего использование.
 import numpy as np
class Parameter:
    layers = []
    calling = {}
    def __init__(self, info):
        self.layers.append(info[0])
        self.calling[info[0]] = info[1:]
class Module:
    def __init__(self):
        self.Parameter = Parameter
    
    def forward(self):
        pass
    def __call__(self, x):
        return self.forward(x)
    def parameters(self):
        return self
class Linear(Module):
    def __init__(self, input_channels: int, output_channels: int, bias=True):
        self.input_channels = input_channels
        self.output_channels = output_channels
        self.bias = bias
        self.backward_list = []
        if bias:
            self.Parameter([self, np.random.uniform(-0.5, 0.5, size=(input_channels, output_channels)), np.random.uniform(-0.5, 0.5, size=output_channels)])
        else:
            self.Parameter([self, np.random.uniform(-0.5, 0.5, size=(input_channels, output_channels)), np.zeros(output_channels)])
    def __call__(self, x):
        self.x = np.array(x, copy=True)
        result = x @ self.Parameter.calling[self][0] + self.Parameter.calling[self][1]
        return result
    def backward(self, input_matrix):
        x_gradient = input_matrix @ self.Parameter.calling[self][0].T
        self.backward_list = [input_matrix.T @ self.x, input_matrix.mean(axis=0)]
        return x_gradient
class Flatten(Module):
    def __call__(self, x):
        return x.reshape(x.shape[0], -1)
class ReLU(Module):
    def __call__(self, x):
        self.x = x
        return np.maximum(0, x)
    def backward(self, input_matrix):
        return (self.x > 0) * input_matrix
class Softmax(Module):
    def __call__(self, z):
        exp_z = np.exp(z)
        return exp_z / exp_z.sum(axis=1, keepdims=True)
class CrossEntropyLoss(Module):
    def __call__(self, logits, true):
        self.predicted = self.Softmax()(logits)
        self.true = np.array(true, copy=True)
        self.loss = -np.sum(true * np.log(self.predicted + 1e-5), axis=1)
        return self
    def backward(self):
        loss = self.predicted - self.true
        for layer in self.Parameter.layers[::-1]:
            if isinstance(layer, Linear):
                layer.backward_list[0] = (layer.x.T @ loss) / loss.shape[0]
                if layer.bias:
                    layer.backward_list[1] = np.sum(loss, axis=0) / loss.shape[0]
                loss = loss @ layer.Parameter.calling[layer][0].T
            elif isinstance(layer, ReLU):
                loss = layer.backward(loss)
class SGD:
    def __init__(self, model, learning_rate):
        self.model = model
        self.lr = learning_rate
    def step(self):
        for layer in self.model.Parameter.layers[::-1]:
            if isinstance(layer, Linear):
                weight, bias = layer.Parameter.calling[layer]
                weight_gradient, bias_gradient = layer.backward_list
                layer.Parameter.calling[layer] = [weight - self.lr * weight_gradient, bias - self.lr * bias_gradient]
class SimpleNet(Module):
    def __init__(self):
        super().__init__()
        self.linear1 = Linear(input_channels=25, output_channels=10, bias=True)
        self.linear2 = Linear(input_channels=10, output_channels=2, bias=True)
        self.flatten = Flatten()
        self.relu = ReLU()
        self.softmax = Softmax()
    def forward(self, x):
        x_1 = self.flatten(x)
        x_2 = self.linear1(x_1)
        x_3 = self.relu(x_2)
        x_4 = self.linear2(x_3)
        return x_4
input_x = np.array([[ 0.99197708, -0.77980023, -0.8391331 , -0.41970686,  0.72636492],
       [ 0.85901409, -0.22374584, -1.95850625, -0.81685145,  0.96359871],
       [-0.42707937, -0.50053309,  0.34049477,  0.62106931, -0.76039365],
       [ 0.34206742,  2.15131285,  0.80851759,  0.28673013,  0.84706839],
       [-1.70231094,  0.36473216,  0.33631525, -0.92515589, -2.57602677]])
target_x = np.array([[1, 0]])
loss_fn = CrossEntropyLoss()
model = SimpleNet()
optim = SGD(model.parameters(), learning_rate = 0.01)
for i in range(100):
    output = model(input_x)
    loss = loss_fn(output, target_x)
    loss.backward()
    lr = 0.01
    optim.step()
    if (i % 20) == 0:
        print(loss.loss, i)	
	
Текст без окончания проходил без ошибок, но и без выдачи результатов. Добавление прежнего окончания привело к ошибкам.

Python для новичков » Определить используется ли в данный момент диалоговое окно » Янв. 2, 2025 16:51:06

Код определяет запущен ли в данный момент указанный процесс:
 import psutil
def check_python_program(program_name):
    for proc in psutil.process_iter():
        try:
            if proc.name() == program_name:
                return True
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass
    return False
if check_python_program("msedge.exe"):
    print("Программа запущена.")
else:
    print("Программа не запущена.")
Процесс ‘микрософт едж’ всегда запущен в фоне, получится определить используется в данный момент окно браузера или нет?

Python для новичков » Не могу пометить узлы, добавляемые в цикле » Янв. 2, 2025 12:40:29

Пытаюсь создать сеть с возможностью гибкого изменения ее параметров: количества слоев, узлов в слоях и положения узлов на рисунке.
Основная часть программы
 n_nd = 1
for i_l in range(n_lines):
    for i_n in range(n_nods[i_l]):
        G.add_node(1,label=str(n_nd))
        n_nd += 1
        G.add_edge(i_l,i_n)
        pos = {n_nd:(i_l,i_n) }
nx.draw(G,with_label=True)
В таком виде nx.draw считается ошибкой:
“ Traceback (most recent call last):
File ”c:\Users\frost\Net\Net.py“, line 22, in <module>
nx.draw(G,with_label=True)
File ”C:\Users\frost\AppData\Local\Programs\Python\Python312\Lib\site-packages
\networkx\drawing\nx_pylab.py“, line 126, in draw
draw_networkx(G, pos=pos, ax=ax, **kwds)
File ”C:\Users\frost\AppData\Local\Programs\Python\Python312\Lib\site-packages
\networkx\drawing\nx_pylab.py“, line 305, in draw_networkx
raise ValueError(f”Received invalid argument(s): {invalid_args}“)
ValueError: Received invalid argument(s): with_label ”
Линия 22 это draw
При использовании nx.draw(G) все рисуется.

Python для новичков » Inline кнопки в TG. Что делаю не так? » Дек. 27, 2024 10:30:50

Приветствую! Пытаюсь создать меня чтобы при нажатии кнопки провалиться в следующее меню. При нажатии на кнопку “Веб сайты” я не перехожу в следующее меню. В чём ошибка?


import telebot
from telebot import types

bot = telebot.TeleBot(“***”)

@bot.message_handler(commands= ) *тут всё норм, почему то не отображается *
def start(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton(“Веб сайты”, callback_data=“sites”)
btn2 = types.InlineKeyboardButton(“Игры”, callback_data=“games”)
btn3 = types.InlineKeyboardButton(“Приложения ”, callback_data=“apps”)
markup.row(btn1, btn2, btn3)
bot.send_message(message.chat.id, “Привет! Это бот для языка программирования.\n\nВыберите какое направление вас интересует”, reply_markup=markup)
#await message.answer(“Привет! Это бот для подбора языка программирования.\n\nВыберите какое направление вас интересует”)

@bot.callback_query_handler(func=lambda callback:True)
def callback(call):
markup = types.InlineKeyboardMarkup()
if call.data == “start”:
btn1 = types.InlineKeyboardButton(“Веб сайты”, callback_data=“sites”)
btn2 = types.InlineKeyboardButton(“Игры”, callback_data=“games”)
btn3 = types.InlineKeyboardButton(“Приложения ”, callback_data=“apps”)
markup.row(btn1, btn2, btn3)
bot_send_message_edit_text(“Привет! Это бот для языка программирования.\n\nВыберите какое направление вас интересует”, reply_markup=markup)
#bot.send_message(message.chat.id, “Привет! Это бот для подбора языка программирования”, reply_markup=markup)
elif call.data == ‘sites’:
btn1 = types.InlineKeyboardButton('Большие сайты', callback_data='sites-big')
btn2 = types.InlineKeyboardButton('Маленькие', callback_data='sites-small')
btn3 = types.InlineKeyboardButton('Назад', callback_data='start')
markup.add(btn1, btn2, btn3)
bot.send_message_edit_text(“Привет! Это бот для языка программирования.\n\nВыберите какое направление вас интересует”, callback_data=start)

#bot.send_message(message.chat.id, “Привет”, reply_markup=markup)
#reply_markup=markup1


bot.polling(none_stop=True)

Флейм » Мощные и доступные виртуальные (VPS/VDS) во всех точках мира » Ноя. 22, 2024 08:41:19




Мы выходим из тени

Нам доверяют уже многие клиенты, и ты можешь стать одним из наших доверенных партнеров. Рады представить вам наши быстрые, мощные и доступные виртуальные (VPS/VDS) и выделенные серверы. Наши решения охватывают широкий спектр задач и потребностей, обеспечивая высокую производительность и надежность. Мы премиальный хостинг со всеми удобствами.

Почему стоит выбрать нас

- Аренда серверов по всему миру!
- Самые мощные процессоры: AMD Ryzen 9 7950X3D.
- Лучшая защита от DDoS атак: По всему миру. AntiDDoS-защита на всех серверах.
- Быстрейшие серверы: Высокая производительность и надежность.
- Стабильный коннект: К любой точке мира.
- Быстрая активация: В течение 60 секунд после оплаты.
- Круглосуточная поддержка: 24/7/365. Поможем с установкой и настройкой ПО, решим почти любую проблему.
- Индивидуальный подход: К каждому клиенту индивидуальные условия, все можно обсудить через систему тикетов.
- Удобный личный кабинет: Большое количество платёжных методов, современный интерфейс и лёгкое управление услугами.
- Бонусы и проработанная реферальная программа!

Мы за стабильную работу и долгосрочное сотрудничество.
Будем улучшать инфраструктуру и производительность постоянно, а наши цены не будут меняться в большую сторону.

- Интернет-порт: До 10 Гбит/с в Москве и в Европе.
- Локации VPS: Австрия, Арабские Эмираты, Армения, Бельгия, Бразилия, Великобритания, Германия, Гонконг, Греция, Дания, Ирландия, Испания, Италия, Канада, Латвия, Литва, Македония, Нидерланды, Норвегия, Польша, Португалия, Россия, США, Турция, Украина, Финляндия, Франция, Хорватия, Швейцария, Швеция, Эстония, Япония и другие
- Операционные системы: Windows10, Windows Server 2012/2016/2019/2022, Debian, CentOS, Ubuntu и любую другую из своего ISO-образа.

- Цены:
- Стандартные VPS/VDS от 600р/мес.
- Hi-CPU серверы от 900р/мес.

- Способы оплаты:
- Банковские карты и СБП (Visa/Mastercard/Мир и другие).
- Криптовалюта (Bitcoin, Litecoin, Dogecoin, BTC Cash, USDT и другие).
- Электронные кошельки (ЮMoney, QIWI, PerfectMoney и другие).

Список всех тарифов и автоматический заказ на сайте: plexus.host

Присоединяйтесь к нам и наслаждайтесь качественными услугами!

Базы данных » Помощь с прасингом сайта » Ноя. 17, 2024 21:59:14

Всем доброго времени дня и ночи, очень нужно спарсить данные одного из телграмм каталогов (tg каналы, а еще желательно даты регистрации/добавления их на сайт) https://tg-cat.com Буду безумно благодаерен любой помощи

Python для новичков » Юрий » Ноя. 17, 2024 13:17:18

подскажите материалы, курсы или что то еще для изучение Python с нуля

Python для новичков » Сеть на питон » Окт. 16, 2024 14:37:30

Коллеги добрый день!!!
есть некая простая нейронная сеть(4 входа,1 выход), задача спрогнозировать определенные величины по входным параметрам. Имеется csv файл с данными входными и выходными для обучения.
 import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from tensorflow import keras
from tensorflow.keras import layers
# Создание искусственных данных
data_size = 10000
np.random.seed(42)
# Генерация данных
data = {
    'ti': np.random.randint(0, 24, data_size),  # Вход 1
    'te': np.random.uniform(-30, 50, data_size),  # Вход 2
    'en': np.random.randint(0, 41, data_size),  # Вход 3
    'tem': np.random.uniform(40, 45, data_size),  # Вход 4
    'energy_consumption': None  # Выход
}
# Создание DataFrame
df = pd.DataFrame(data)
# Формирование зависимости: создание искусственных данных для потребления энергии
# На основании простого линейного уравнения с добавлением некоторого шума
df['energy_consumption'] = (
    50 + 20 * df['ti'] + 15 * df['en']
    - 0.5 * df['te '] + 5 * (df['tem'] - 40)
    + np.random.normal(0, 10, data_size)  # добавление случайного шума
)
# Разделение данных на признаки и целевую переменную
X1 = df[['ti', 'te', 'en', 'tem']]
y = df['energy_consumption']
# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X1, y, test_size=0.2, random_state=42)
# Масштабирование признаков
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Создание модели нейросети
model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=(X_train_scaled.shape[1],)),
    layers.Dense(32, activation='relu'),
    layers.Dense(1)  # Выходной слой, так как мы прогнозируем одно значение
])
# Компиляция модели
model.compile(optimizer='adam', loss='mean_squared_error')
# Обучение модели
model.fit(X_train_scaled, y_train, epochs=100, batch_size=32, validation_split=0.2)
# Оценка модели
loss = model.evaluate(X_test_scaled, y_test)
print(f"Тестовая потеря: {loss:.2f}")
# Прогнозирование значений на тестовых данных
y_pred = model.predict(X_test_scaled)
# Вывод первых 5 прогнозируемых значений
print("Первые 5 прогнозируемых значений:")
print(y_pred[:5].flatten())
# Пример использования модели для прогноза
h=[1, 2, 3, 4, 5, 6, 7, 8, 9,1]
t=[10, 20, 30, 40, 30, 30, 20, 20, 20,10]
e=[40, 40, 40, 40, 20, 20, 20, 20, 20,40]
tg=[45, 45, 45, 45, 45, 45, 45, 45, 45,45]
for i in range(10):
    sample_data = np.array([[h[i], t[i], e[i], tg[i]]])
    sample_data_scaled = scaler.transform(sample_data)
    predicted_consumption = model.predict(sample_data_scaled)
    print(f"Прогноз =',{h[i]},'te=',{t[i]},' en=',{e[i]},'tem: {predicted_consumption[0][0]:.2f}")
Обучение на реальных данных подгружаем данные в массивы из файлов, energy_consumption также подгружаем из файла.
1. Как определить размер динамического массива исходя из количества строк в фале( csv или хls в котором все данные будут в столбцах)
2. Процедура обучения остается такой-же ?
3. прикомпиляции выходит ошибка эC:\Users\Vechna\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\base.py:451: UserWarning: X does not have valid feature names, but StandardScaler was fitted with feature names “X does not have valid feature names, but” ?
Что еще можно улучшить в данной программе. Спасибо!
Может посоветуете что либо.

Центр помощи » ЦИКЛЫ. ТАБУЛИРОВАНИЕ ФУНКЦИЙ » Окт. 2, 2024 09:20:27

Помогите, пожалуйста, составить программу табулирования функции с шагом h, используя цикл с предусловием While .

Центр помощи » Помогите срешением проблемы » Сен. 29, 2024 17:08:09

Пытался активировать скрипт бота на питоне и выдает ошибку

Скрипт:
 import sqlite3
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import FSMContext
from aiogram.contrib.fsm_storage.memory import MemoryStorage
API_TOKEN = 'xxxxx' # Замените на свой токен бота
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())
# Создание базы данных (если еще не создана)
db_name = 'mydatabase.db'
conn = sqlite3.connect(db_name)
cursor = conn.cursor()
cursor.execute('''
    CREATE TABLE IF NOT EXISTS data (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        description TEXT
    )
''')
conn.commit()
conn.close()
# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def start_handler(message: types.Message):
    await message.answer("Привет! Я бот для поиска информации в базе данных.\n\n"
                        "Введите поисковый запрос:")
# Обработчик ввода поискового запроса
@dp.message_handler()
async def search_handler(message: types.Message):
    search_term = message.text
    results = search_data(db_name, search_term)
    if results:
        await message.answer("Результаты поиска:")
        for row in results:
            await message.answer(f"ID: {row[0]}, Название: {row[1]}, Описание: {row[2]}")
    else:
        await message.answer("Ничего не найдено.")
# Функция поиска данных в базе данных
def search_data(db_name, search_term):
    conn = sqlite3.connect(db_name)
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM data WHERE name LIKE ? OR description LIKE ?", ('%' + search_term + '%', '%' + search_term + '%'))
    results = cursor.fetchall()
    conn.close()
    return results
if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)

Ошибку которую выдает:
 from aiogram.utils import executor
ImportError: cannot import name 'executor' from 'aiogram.utils'

Инструментальные средства разработки » Codeum и блокировка  » Сен. 22, 2024 08:06:34

Добрый день товарищи. В pycharm решил установить плагин codium и столкнулся с ситуацией: Plugin “Codiumate - Code, test and review with confidence - by CodiumAI” was not installed: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations.
Судя по всему, для России опять какие-то блокировки. VPN не помогает. Кто-то сталкивался? Может есть какие-то варианты решения этой проблемки.

Python для новичков » Подобие кейлоггера » Сен. 16, 2024 15:59:43

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

Кое-как написал код. Он считает нажатия, но полноценным его назвать нельзя.
Дело в том, что он не работает в фоновом режиме. А надо, чтобы подсчет вёлся и когда окно не активно. Дополнительная проблема - каждый раз счетчик считает заново. А надо, чтобы считал нарастающим итогом. Как дописать правильно код?

 from turtle import*
from tkinter import*
def com(event): event.keysym
click =1
def turtlemouv(event):
global click
click+=1
t.config(text = click)
w = Tk()
w.geometry('200x130')
w.bind("<Key>", turtlemouv)
t=Label (w,text="0", font="Arial 35")
t.pack()
w.mainloop()