Kodduu Python
1.07K subscribers
317 photos
28 videos
191 links
Научись программировать на Python на интересных примерах

Самый быстрый курс https://stepik.org/a/187914
Самый нескучный курс https://stepik.org/a/185238

Во вопросам сотрудничества: @AlexErf
Download Telegram
Давайте напишем простой генератор паролей на Python:

python
import random
import string

def generate_password(length=8):
characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(random.choice(characters) for i in range(length))
return password

print("Генератор паролей")
password_length = int(input("Введите желаемую длину пароля: "))
print(f"Ваш новый пароль: {generate_password(password_length)}")


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

Подпишись 👉🏻 @KodduuPython 🤖
Представляю простой консольный квиз на Python:

python
def ask_question(question, correct_answer, options):
print(question)
for i, option in enumerate(options, 1):
print(f"{i}. {option}")

answer = int(input("Ваш ответ (введите номер): "))

if options[answer-1] == correct_answer:
return True
else:
return False

questions = [
{
"question": "Какая планета ближе всего к Солнцу?",
"correct_answer": "Меркурий",
"options": ["Марс", "Меркурий", "Венера", "Земля"]
},
{
"question": "Какой элемент имеет химический символ 'Au'?",
"correct_answer": "Золото",
"options": ["Золото", "Аргон", "Аллюминий", "Серебро"]
}
]

score = 0

for q in questions:
if ask_question(q['question'], q['correct_answer'], q['options']):
print("Правильно!")
score += 1
else:
print(f"Неправильно! Правильный ответ: {q['correct_answer']}")

print(f"Ваш результат: {score}/{len(questions)}")


Это простой консольный квиз с двумя вопросами. Вы можете добавлять новые вопросы, следуя структуре в списке questions.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим мини-программу, которая конвертирует температуру из градусов Цельсия в градусы Фаренгейта и наоборот:

python
def celsius_to_fahrenheit(celsius):
return 9.0/5.0 * celsius + 32

def fahrenheit_to_celsius(fahrenheit):
return (fahrenheit - 32) * 5.0/9.0

print("Программа конвертации температуры")
choice = input("Конвертировать из Цельсия в Фаренгейта (введите 'C') или из Фаренгейта в Цельсия (введите 'F')? ")

if choice == 'C':
celsius = float(input("Введите температуру в градусах Цельсия: "))
print(f"{celsius}°C = {celsius_to_fahrenheit(celsius):.2f}°F")
elif choice == 'F':
fahrenheit = float(input("Введите температуру в градусах Фаренгейта: "))
print(f"{fahrenheit}°F = {fahrenheit_to_celsius(fahrenheit):.2f}°C")
else:
print("Неверный выбор!")


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

Подпишись 👉🏻 @KodduuPython 🤖
Представлю еще одну интересную библиотеку - emoji.

Библиотека emoji позволяет добавлять эмодзи в ваш код на Python.

1. Установите библиотеку:
pip install emoji


2. Пример кода:

python
import emoji

def main():
print(emoji.emojize('Python is :thumbs_up:'))
print(emoji.emojize('Библиотеки на Python делают код веселым :wink:', language='ru'))

# Перевод текстового описания эмодзи в сам эмодзи
user_input = input("Введите описание эмодзи (например, :heart:): ")
print(emoji.emojize(user_input))

if __name__ == "__main__":
main()


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

Эта библиотека может пригодиться для добавления небольшого количества "соли" в ваши проекты или просто для развлечения. Надеюсь, вам понравится!

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим еще одну интересную библиотеку — howdoi.

Эта библиотека позволяет быстро находить ответы на программистские вопросы прямо из командной строки (или из вашего кода), используя Stack Overflow.

1. Установите библиотеку:
pip install howdoi


2. Пример использования в коде:

python
import howdoi

def get_answer(query):
return howdoi.howdoi({'query': query})

def main():
question = input("Что вы хотели бы узнать? ")
print(get_answer(question))

if __name__ == "__main__":
main()


Запустив этот код, вы можете задать программистский вопрос (на английском языке), и программа попробует найти ответ на Stack Overflow.

Это может быть полезно, если вы работаете в оффлайн-редакторе кода или просто хотите быстро найти решение для какой-либо проблемы без открытия браузера.

Надеюсь, что это добавит удобства в ваш рабочий процесс!

Подпишись 👉🏻 @KodduuPython 🤖
1🆒1
Рассмотрим библиотеку pywhatkit.

pywhatkit — это интересная библиотека, которая позволяет выполнять множество различных задач, таких как отправка сообщений WhatsApp, преобразование текста в рукопись, автоматический поиск в Google и многое другое.

1. Установите библиотеку:
pip install pywhatkit


2. Примеры использования:

a) Отправить сообщение WhatsApp:
python
import pywhatkit as kt

def send_whatsapp():
# Не забудьте войти в WhatsApp Web на вашем компьютере перед запуском
phone_num = input("Введите номер телефона в формате +xxxxxxxxxxx: ")
message = input("Введите сообщение: ")
time_hour = int(input("Введите час отправки (24-часовой формат): "))
time_min = int(input("Введите минуту отправки: "))

kt.sendwhatmsg(phone_num, message, time_hour, time_min)

send_whatsapp()


b) Преобразовать текст в рукопись:
python
import pywhatkit as kt

def text_to_handwriting():
text = input("Введите текст для преобразования в рукопись: ")
output_path = "output.png"

kt.text_to_handwriting(text, save_to=output_path)
print(f"Рукописный текст сохранен в {output_path}")

text_to_handwriting()


Обратите внимание, что для отправки сообщений через WhatsApp, вам нужно будет предварительно отсканировать QR-код на сайте WhatsApp Web.

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

Подпишись 👉🏻 @KodduuPython 🤖
1🆒1
Рассмотрим библиотеку rich.

rich позволяет создавать красочный и интерактивный вывод в консоль с минимальными усилиями. Это может быть полезно для логирования, вывода таблиц, прогресс-баров и даже для рендеринга Markdown.

1. Установите библиотеку:
pip install rich


2. Примеры использования:

a) Вывод стилизованного текста:
python
from rich import print

print("[bold red]Это красный жирный текст![/bold red]")
print("[underline blue]Это синий текст с подчеркиванием![/underline blue]")


b) Вывод таблицы:
python
from rich.table import Table
from rich.console import Console

console = Console()

table = Table(show_header=True, header_style="bold magenta")
table.add_column("ID")
table.add_column("Name")
table.add_column("Age")

table.add_row("1", "Alice", "28")
table.add_row("2", "Bob", "23")
table.add_row("3", "Charlie", "34")

console.print(table)


c) Вывод Markdown:
python
from rich.console import Console

console = Console()

markdown_text = """
# Заголовок
- Список 1
- Список 2
"""

console.print(markdown_text, markup=False)


d) Прогресс-бар:
python
import time
from rich.progress import track

for step in track(range(10), description="Обработка..."):
time.sleep(0.1)


rich действительно преобразует то, как вы видите вывод в консоли, делая его намного более привлекательным и читаемым. Вы можете использовать его для улучшения CLI-интерфейсов, скриптов и многого другого.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим библиотеку dearpygui.

dearpygui — это быстрая, простая в использовании и портируемая библиотека для создания графических пользовательских интерфейсов (GUI) на Python.

1. Установите библиотеку:
pip install dearpygui


2. Пример создания простого окна с кнопкой:

python
import dearpygui.dearpygui as dpg

def on_button_click(sender, app_data):
dpg.create_simple_plot("Sample Plot", [0, 1, 2, 3, 4], [0, 1, 4, 9, 16])

with dpg.handler_registry():
with dpg.window(label="Main Window"):
dpg.add_text("Hello, dearpygui!")
dpg.add_button(label="Show Plot", callback=on_button_click)

dpg.create_context()
dpg.create_viewport(title='Custom GUI', width=600, height=400)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.destroy_context()


Этот код создаст окно с текстом и кнопкой. При нажатии на кнопку будет отображаться график.

dearpygui предоставляет множество виджетов и инструментов для создания сложных графических интерфейсов, включая различные виды графиков, инструменты управления и даже визуализации в реальном времени.

Если вы искали быстрый и простой способ создать GUI на Python без необходимости изучения сложных библиотек вроде PyQt или Tkinter, dearpygui может быть отличным выбором!

Подпишись 👉🏻 @KodduuPython 🤖
🆒3
Давайте поговорим о библиотеке imageio.

imageio — это библиотека для чтения и записи изображений и видеофайлов в различных форматах. Она довольно проста в использовании и поддерживает множество форматов.

1. Установите библиотеку:
pip install imageio


2. Примеры использования:

a) Чтение и сохранение изображения:
python
import imageio

image = imageio.imread("input.jpg")
imageio.imwrite("output.png", image)


b) Создание анимированного GIF из нескольких изображений:
python
import imageio

filenames = ["frame1.png", "frame2.png", "frame3.png"]
images = [imageio.imread(filename) for filename in filenames]
imageio.mimsave("animation.gif", images, duration=0.5) # duration — это продолжительность каждого кадра в секундах


c) Чтение и запись видео:
python
reader = imageio.get_reader("video.mp4")
fps = reader.get_meta_data()['fps']

writer = imageio.get_writer("output_video.mp4", fps=fps)

for frame in reader:
modified_frame = frame[:, :, :3] # Например, удалить альфа-канал
writer.append_data(modified_frame)

writer.close()


imageio также поддерживает чтение и запись вольфрамов, объемных изображений и многого другого. Это универсальное решение для работы с мультимедийными данными в Python. Если вы часто работаете с изображениями или видео, эта библиотека может быть очень полезной для вас!

Подпишись 👉🏻 @KodduuPython 🤖
Рассмотрим библиотеку pyfiglet.

pyfiglet — это реализация на Python популярной утилиты figlet, которая позволяет создавать ASCII-искусство из текста. С её помощью вы можете генерировать красочные и стилизованные заголовки или логотипы прямо в вашем терминале.

1. Установите библиотеку:
pip install pyfiglet


2. Пример использования:

python
import pyfiglet

def main():
font = pyfiglet.Figlet(font='slant') # Вы можете изменить шрифт на любой другой из доступных
text = input("Введите текст для преобразования: ")
ascii_art = font.renderText(text)
print(ascii_art)

if __name__ == "__main__":
main()


Запустите код и введите любой текст, чтобы увидеть его стилизованное ASCII-представление.

pyfiglet включает в себя множество различных шрифтов, с которыми можно экспериментировать, чтобы получить именно тот вид, который вам нравится. Это забавный способ добавить немного креативности в ваши консольные приложения или скрипты.

Подпишись 👉🏻 @KodduuPython 🤖
Поговорим о библиотеке pygame.

pygame — это библиотека для создания игр и мультимедийных приложений на Python. Она предоставляет инструменты для работы с графикой, звуком, вводом устройств и многим другим.

1. Установите библиотеку:
pip install pygame


2. Простой пример создания окна с движущимся прямоугольником:

python
import pygame
from pygame.locals import QUIT

pygame.init()

WIDTH, HEIGHT = 640, 480
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Простой пример с pygame")

WHITE = (255, 255, 255)
RED = (255, 0, 0)

x, y = WIDTH // 2, HEIGHT // 2
velocity = 5

running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False

keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x -= velocity
if keys[pygame.K_RIGHT]:
x += velocity
if keys[pygame.K_UP]:
y -= velocity
if keys[pygame.K_DOWN]:
y += velocity

screen.fill(WHITE)
pygame.draw.rect(screen, RED, (x, y, 50, 50))

pygame.display.flip()
pygame.time.Clock().tick(60)

pygame.quit()


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

pygame — это мощный инструмент для создания 2D-игр и мультимедийных приложений, и он предоставляет множество возможностей для реализации различных идей. Если вы заинтересованы в разработке игр или графических приложений на Python, pygame может стать отличным выбором!

Подпишись 👉🏻 @KodduuPython 🤖
🆒2
Давайте рассмотрим библиотеку Scrapy.

Scrapy — это мощная и гибкая библиотека для извлечения данных с веб-сайтов. Она может использоваться для различных задач, таких как сбор данных, мониторинг контента и автоматизированное тестирование.

1. Установите библиотеку:
pip install Scrapy


2. Пример создания простого паука для сбора заголовков с веб-страницы:

python
import scrapy

class SimpleSpider(scrapy.Spider):
name = "simple_spider"
start_urls = [
'https://example.com',
]

def parse(self, response):
for title in response.css('h1::text, h2::text, h3::text'):
yield {'title': title.get()}


Чтобы запустить этого паука, сохраните его в файл simple_spider.py и выполните команду:
scrapy runspider simple_spider.py


Scrapy предоставляет глубокую настройку для различных аспектов процесса сбора данных, включая обработку запросов, сессий, кэширование и многое другое. Кроме того, благодаря встроенной поддержке экспорта данных, вы можете легко сохранять собранную информацию в различных форматах, таких как CSV, JSON или XML.

Если вам нужно автоматически собирать информацию с веб-сайтов или мониторить изменения контента, Scrapy может стать незаменимым инструментом для этих задач.

Подпишись 👉🏻 @KodduuPython 🤖
🆒2
Создание полноценного VPN-сервера — это сложная задача, и для надёжного и безопасного VPN лучше использовать специализированные решения, такие как OpenVPN или WireGuard. Однако, для демонстрационных целей, мы можем рассмотреть создание простого SOCKS-прокси с использованием Python, который будет перенаправлять трафик, но не обеспечивать его шифрование.

Для этого мы можем использовать библиотеку pysocks.

1. Установите необходимые библиотеки:
pip install pysocks


2. Простой SOCKS-прокси сервер:

python
import socket
import threading
import socks

def handler(client):
address, port = client.getpeername()
print(f"Подключение от {address}:{port}")

# Используйте socks.reply.PROXY_ERROR, чтобы отправить ошибку, если что-то пойдет не так.
client.sendall(socks.reply.SOCKS5_GRANTED)

data = client.recv(1024)
while data:
client.sendall(data)
data = client.recv(1024)

print(f"Отключение от {address}:{port}")
client.close()

def main():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("0.0.0.0", 1080))
server.listen(5)
print("SOCKS сервер запущен на порту 1080")

while True:
client, addr = server.accept()
thread = threading.Thread(target=handler, args=(client,))
thread.start()

if __name__ == "__main__":
main()


Это довольно примитивный пример и не предоставляет шифрования или аутентификации. Также он не является настоящим SOCKS-прокси (он просто принимает соединения и пересылает данные обратно), но вы можете улучшить его, добавив правильную реализацию протокола SOCKS и другие функции.

Если вы рассматриваете создание реального VPN-сервера для практического использования, рекомендуется использовать проверенные и широко используемые решения, такие как OpenVPN, и убедиться, что вы осведомлены о потенциальных рисках и вопросах безопасности.

Подпишись 👉🏻 @KodduuPython 🤖
🔥3
Вот пример необычного кода на Python, который использует метод Монте-Карло для приближенного вычисления числа π (пи):

import random

def estimate_pi(num_samples):
inside_circle = 0

for _ in range(num_samples):
x, y = random.random(), random.random()
distance = x**2 + y**2

if distance <= 1:
inside_circle += 1

return (inside_circle / num_samples) * 4

# Попробуем с 1000000 случайных точек
pi_estimate = estimate_pi(1_000_000)
print(f'Приближенное значение числа π после 1,000,000 испытаний: {pi_estimate}')

Этот код использует случайные точки в единичном квадрате для того, чтобы определить, какая их доля попадает внутрь четверти круга. Используя соотношение площади круга и квадрата, мы можем вычислить приближенное значение числа π.

Однако, чтобы сделать код действительно необычным, мы можем добавить немного "магии" Python, используя декораторы и контекстные менеджеры:

import random
import contextlib

# Декоратор для измерения времени выполнения функции
import time
def timeit(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"Функция {func.__name__!r} выполнялась {end - start:.4f} секунд.")
return result
return wrapper

# Контекстный менеджер для изменения точности вывода чисел с плавающей точкой
@contextlib.contextmanager
def precision(level):
old_precision = f"{0:.10f}".format(0).count('0')
template = "{0:." + str(level) + "f}"
float.__str__ = lambda self: template.format(self)
try:
yield
finally:
float.__str__ = lambda self: ("{0:." + str(old_precision) + "f}").format(self)

@timeit
def estimate_pi(num_samples):
inside_circle = 0
for _ in range(num_samples):
x, y = random.random(), random.random()
if x**2 + y**2 <= 1:
inside_circle += 1
return (inside_circle / num_samples) * 4

# Используем контекстный менеджер для установки точности числа π
with precision(8):
pi_estimate = estimate_pi(1_000_000)
print(f'Приближенное значение числа π после 1,000,000 испытаний: {pi_estimate}')

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

Подпишись 👉🏻 @KodduuPython 🤖
Как насчет кода, который превращает текстовое сообщение в "речь" ASCII-арт? Это необычный и интересный способ представления текста. Для этого мы можем использовать библиотеку art, которая позволяет генерировать текст в различных стилях ASCII-арт.

Перед использованием этой библиотеки, её необходимо установить, выполнив команду pip install art в командной строке.

Вот пример кода:

from art import *

# Выбираем стиль для текста. Стили можно посмотреть в документации библиотеки.
style = "block" # это один из возможных стилей

# Функция, которая принимает текст и стиль, возвращая ASCII-арт
def text_to_art(text, style):
art_text = text2art(text, font=style)
return art_text

# Пример использования функции
text = "Привет, мир!"
ascii_art = text_to_art(text, style)

print(ascii_art)

Запустив этот код, вы получите вывод в консоль, где "Привет, мир!" будет представлено в виде ASCII-арт в выбранном стиле.

Обратите внимание, что в зависимости от стиля и длины текста, ASCII-арт может занимать много места на экране, и некоторые сложные символы или кириллица могут отображаться некорректно в определённых стилях.

Подпишись 👉🏻 @KodduuPython 🤖
🔥4
Как насчет создания мини-игры в консоли на Python, например, текстового квеста? Пользователь будет выбирать действия из предложенных вариантов, что приведет к различным исходам. Вот простой пример:

def introduction():
print("Вы просыпаетесь в незнакомой комнате. Что вы будете делать?")
print("1) Осмотреть комнату")
print("2) Попытаться открыть дверь")
choice = input("> ")
if choice == "1":
look_around()
elif choice == "2":
open_door()
else:
print("Неизвестное действие. Попробуйте снова.")
introduction()

def look_around():
print("Комната пуста, кроме стола с ключом и заметкой.")
print("1) Взять ключ")
print("2) Прочитать заметку")
choice = input("> ")
if choice == "1":
take_key()
elif choice == "2":
read_note()
else:
print("Неизвестное действие. Попробуйте снова.")
look_around()

def open_door():
print("Дверь закрыта на замок.")
if "ключ" in inventory:
print("Вы используете ключ и дверь открывается. Поздравляем, вы вышли на свободу!")
else:
print("Но у вас нет ключа. Кажется, вам стоит его найти.")
introduction()

def take_key():
print("Вы взяли ключ.")
inventory.append("ключ")
introduction()

def read_note():
print("Заметка гласит: 'Иногда правильный выбор - не делать ничего.'")
introduction()

# Главная программа
inventory = [] # Инвентарь игрока

print("Добро пожаловать в текстовый квест!")
introduction()


В этом коде определены функции для каждого возможного действия игрока. В начале игры вызывается функция introduction(), которая является точкой входа в игру. В инвентарь (inventory) игрока добавляется ключ, если игрок выбирает его поднять. Чтобы "выиграть" в этой игре, игрок должен сначала найти ключ, а затем использовать его, чтобы открыть дверь.

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

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим простой скрипт, который будет генерировать случайные "секретные" сообщения и затем решать их с помощью простого метода шифрования — шифра Цезаря. Это классический метод, в котором каждая буква в тексте заменяется на другую, которая находится на некотором фиксированном числе позиций левее или правее её в алфавите.

import string
import random

# Функция шифрования текста шифром Цезаря
def caesar_encrypt(text, shift):
encrypted_text = ""
for char in text:
if char.isalpha():
offset = 65 if char.isupper() else 97
encrypted_text += chr((ord(char) + shift - offset) % 26 + offset)
else:
encrypted_text += char
return encrypted_text

# Функция расшифровки текста шифром Цезаря
def caesar_decrypt(encrypted_text, shift):
return caesar_encrypt(encrypted_text, -shift)

# Функция генерации случайного сообщения
def generate_random_message(length):
letters = string.ascii_letters + " " # Пространство и буквы для сообщения
return ''.join(random.choice(letters) for i in range(length))

# Генерация и шифрование сообщения
random_message = generate_random_message(50)
shift = random.randint(1, 25)
encrypted_message = caesar_encrypt(random_message, shift)

print(f"Original message: {random_message}")
print(f"Encrypted message with shift {shift}: {encrypted_message}")

# Попробуем расшифровать
decrypted_message = caesar_decrypt(encrypted_message, shift)
print(f"Decrypted message: {decrypted_message}")

# Проверка, верно ли расшифровано сообщение
assert random_message == decrypted_message


Этот код сначала генерирует случайное сообщение, затем шифрует его с использованием шифра Цезаря и в конце расшифровывает, проверяя, что расшифрованное сообщение совпадает с исходным.

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

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим что-то оригинальное и интерактивное — например, скрипт, который позволяет пользователю "рисовать" в консоли, используя клавиатуру. Пользователь сможет перемещаться по консоли с помощью клавиш WASD и оставлять звездочки (*), создавая простые рисунки.

import os
import sys
import msvcrt

# Инициализируем "холст" для рисования
width, height = 40, 20 # Размер холста
cursor_x, cursor_y = width // 2, height // 2 # Начальное положение курсора
canvas = [[" " for _ in range(width)] for _ in range(height)]
canvas[cursor_y][cursor_x] = "*" # Рисуем начальную точку

# Отображение холста
def print_canvas(canvas):
os.system('cls' if os.name == 'nt' else 'clear') # Очищаем экран
for row in canvas:
print("".join(row))

# Обновление позиции курсора на холсте
def update_canvas(x, y, canvas):
if 0 <= x < width and 0 <= y < height:
canvas[y][x] = "*"
return canvas

# Печать инструкций
print("Use WASD keys to move around and draw. Press 'q' to quit.")

# Главный цикл
while True:
print_canvas(canvas)

# Получаем ввод от пользователя
if msvcrt.kbhit():
key = msvcrt.getch().decode().lower()
if key == 'q':
break # Выходим из программы
elif key == 'w':
cursor_y = max(0, cursor_y - 1)
elif key == 's':
cursor_y = min(height - 1, cursor_y + 1)
elif key == 'a':
cursor_x = max(0, cursor_x - 1)
elif key == 'd':
cursor_x = min(width - 1, cursor_x + 1)

canvas = update_canvas(cursor_x, cursor_y, canvas)

# Перед выходом очищаем экран и печатаем итоговый рисунок
os.system('cls' if os.name == 'nt' else 'clear')
print_canvas(canvas)


Этот скрипт создает простой текстовый интерфейс, где пользователь может "рисовать", перемещаясь по "холсту" и оставляя звездочки. Как только пользователь нажимает 'q', программа завершается, показывая последнее состояние "холста".

Примечание: Этот код предназначен для запуска в среде Windows, поскольку используется msvcrt для не блокирующего ввода и cls для очистки экрана. Для других операционных систем потребуются изменения.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте попробуем что-то совершенно иное: создадим простой генератор музыки на Python. Мы будем использовать библиотеку pyknon, которая не так широко известна, но позволяет создавать музыкальные ноты и мелодии.

Сначала вам нужно будет установить библиотеку pyknon:

pip install pyknon


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

from pyknon.genmidi import Midi
from pyknon.music import NoteSeq, Note
import random

def generate_random_melody(num_notes, note_duration=1/4):
scale = ['c', 'd', 'e', 'f', 'g', 'a', 'b'] # C мажор
melody = NoteSeq()

for _ in range(num_notes):
pitch = random.choice(scale) + str(random.randint(4, 5))
note = Note(pitch=pitch, duration=note_duration)
melody.append(note)

return melody

# Генерируем случайную мелодию из 20 нот
random_melody = generate_random_melody(20)

# Создаем MIDI файл
midi = Midi(1, tempo=120)
midi.seq_notes(random_melody, track=0)

# Сохраняем MIDI файл
midi.write("random_melody.mid")

print("Случайная мелодия была создана и сохранена в файл 'random_melody.mid'.")


Этот скрипт генерирует случайную мелодию в диапазоне одной октавы (C4-C5) в C мажорной гамме и сохраняет её в MIDI файле. Вы можете воспроизвести этот файл с помощью любого стандартного MIDI плеера.

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

Подпишись 👉🏻 @KodduuPython 🤖
Давайте попробуем создать скрипт на Python, который может выступать в качестве базового "искусственного интеллекта" для общения. Он будет использовать простую систему правил для определения ответов на входные данные пользователя.

import random

# Словарь соответствий ключевых слов и ответов
keywords_to_responses = {
"привет": ["Привет!", "Здравствуй!", "Доброго времени суток!"],
"как дела": ["Отлично, спасибо!", "Все хорошо, как у тебя?", "Замечательно, а у тебя?"],
"пока": ["До свидания!", "Пока!", "Буду скучать!"],
}

# Функция для получения ответа на основе ввода пользователя
def get_response(user_input):
for keyword, responses in keywords_to_responses.items():
if keyword in user_input.lower():
return random.choice(responses)
return "Извините, я вас не понял."

# Главный цикл общения
while True:
user_input = input("Вы: ")
response = get_response(user_input)
print(f"ИИ: {response}")

if user_input.lower() in ["пока", "до свидания"]:
break


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

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

Подпишись 👉🏻 @KodduuPython 🤖