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
Давайте рассмотрим пример использования библиотеки pysat для работы с данными спутника DMSP (Defense Meteorological Satellite Program), который предоставляет данные об ионосфере:

python
import pysat

# Instantiate a pysat Instrument for the DMSP satellite
dmsp = pysat.Instrument(platform='dmsp', name='ivm', tag='utd', sat_id='f15')

# Download data for a specific time range
dmsp.download(start=pysat.datetime(2002, 2, 1), stop=pysat.datetime(2002, 2, 28))

# Load data for a specific date
dmsp.load(date=pysat.datetime(2002, 2, 14))

# Access the loaded data
print(dmsp.data)


Этот код скачивает данные DMSP за февраль 2002 года и загружает данные за 14 февраля 2002 года. Затем он выводит эти данные.

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

Также стоит заметить, что для загрузки данных DMSP вам, возможно, потребуется учетная запись на сервере CDAWeb, откуда загружаются эти данные. В этом случае вам потребуется ввести свое имя пользователя и пароль, когда pysat попросит это сделать.

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

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

python
import pandas as pd
import matplotlib.pyplot as plt

# Загрузите данные о месторождениях нефти и газа. Здесь мы предполагаем, что у вас есть CSV-файл с такими данными.
# Этот файл должен содержать колонки 'Latitude', 'Longitude' и 'Oil Volume' или 'Gas Volume'
df = pd.read_csv('oil_gas_data.csv')

# Простой анализ данных - посмотрим на описательные статистики
print(df.describe())

# Построим график производства нефти или газа в зависимости от географического расположения
plt.scatter(df['Longitude'], df['Latitude'], c=df['Oil Volume'], cmap='viridis')
plt.colorbar(label='Oil Volume')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.title('Oil Production')
plt.show()


Здесь мы предполагаем, что у вас есть файл CSV, который содержит информацию о географических координатах каждого месторождения и объемах добычи нефти или газа. Мы используем библиотеку pandas для загрузки и анализа этих данных, а также matplotlib для визуализации данных.

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

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

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

python
import matplotlib.pyplot as plt
from obspy import UTCDateTime
from obspy.clients.fdsn import Client

# Используем клиент FDSN для подключения к открытому серверу сейсмических данных
client = Client("IRIS")

# Задаем временной интервал, за который хотим получить данные
start_time = UTCDateTime("2020-01-01")
end_time = UTCDateTime("2020-02-01")

# Получаем данные о землетрясениях за указанный период
# Мы запрашиваем землетрясения магнитудой 5 и выше
catalog = client.get_events(starttime=start_time, endtime=end_time, minmagnitude=5)

# Печатаем полученный каталог землетрясений
print(catalog)

# Визуализируем землетрясения на карте
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')
for event in catalog:
origin = event.preferred_origin()
ax.scatter(origin.longitude, origin.latitude, origin.depth)
plt.show()


В этом примере мы используем ObsPy для загрузки данных о землетрясениях магнитудой 5 и выше за январь 2020 года. Затем мы визуализируем эти землетрясения на карте, используя их географические координаты и глубину.

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

Подпишись 👉🏻 @KodduuPython 🤖
2
Чтобы создать эффект землетрясения на изображении, мы можем использовать библиотеки OpenCV и numpy. Ниже представлен пример кода, который создает эффект "тряски" на изображении, имитируя землетрясение:

python
import cv2
import numpy as np
import time

# Загрузите изображение
image = cv2.imread('city.jpg')

# Размер изображения
rows, cols, _ = image.shape

# Сила "тряски" изображения, соответствующая магнитуде землетрясения
shake_magnitude = 10

for _ in range(100): # Укажите количество тряски здесь
# Создаем матрицу трансформации для сдвига изображения в разные направления
tx = shake_magnitude * np.random.uniform(-1, 1)
ty = shake_magnitude * np.random.uniform(-1, 1)
transform_matrix = np.float32([[1, 0, tx], [0, 1, ty]])

# Применяем матрицу трансформации к изображению
shaken_image = cv2.warpAffine(image, transform_matrix, (cols, rows))

# Выводим изображение
cv2.imshow('Shaken image', shaken_image)
cv2.waitKey(1) # Задержка в миллисекундах

cv2.destroyAllWindows()


В этом коде мы загружаем изображение города, создаем матрицу трансформации для сдвига изображения в случайном направлении и применяем эту трансформацию к изображению, создавая эффект "тряски". Сила "тряски" контролируется переменной shake_magnitude.

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

Подпишись 👉🏻 @KodduuPython 🤖
Физика элементарных частиц - это очень сложная и математически продвинутая область, поэтому создание кода, который демонстрирует все ее аспекты, может быть непростым. Однако можно создать простой код, который моделирует некоторые свойства элементарных частиц.

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

Вот простой пример, который демонстрирует эффект замера спина частицы в направлении оси z.

python
from qutip import basis, expect, sigmaz

# Состояние спина вверх
spin_up = basis(2, 0)

# Состояние спина вниз
spin_down = basis(2, 1)

# Оператор спина в направлении z
sz = sigmaz()

# Замеряем спин в направлении z для состояния спина вверх
print(expect(sz, spin_up))

# Замеряем спин в направлении z для состояния спина вниз
print(expect(sz, spin_down))


В этом примере мы создаем два состояния спина - вверх и вниз - и замеряем значение спина в направлении оси z для этих состояний. В соответствии с квантовой механикой, результаты замеров должны быть +1 для состояния вверх и -1 для состояния вниз.

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

Подпишись 👉🏻 @KodduuPython 🤖
Движение небесных тел, таких как Луна и Земля, определяется законами классической механики. Для расчета движения мы можем использовать уравнения Ньютона. Вот простой пример кода на Python, который использует библиотеку scipy для решения дифференциальных уравнений движения:

python
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

# Константы
G = 6.67430e-11 # Гравитационная постоянная Нм^2/кг^2
M = 5.972e24 # Масса Земли, кг
m = 7.348e22 # Масса Луны, кг
R = 384400000 # Среднее расстояние от Земли до Луны, м

# Система дифференциальных уравнений
def equations(y, t, G, M, m):
x, v_x, y, v_y = y
d = np.sqrt(x**2 + y**2)
dvxdt = -G * M * x / d**3
dvydt = -G * M * y / d**3
return v_x, dvxdt, v_y, dvydt

# Начальные условия
x0 = R
v_x0 = 0
y0 = 0
v_y0 = np.sqrt(G * M / R) # Центробежная скорость для установления Луны на орбите
y0 = [x0, v_x0, y0, v_y0]

# Время
t = np.linspace(0, 2.362e6, 1000) # Продолжительность одного оборота Луны вокруг Земли (27.3 дня)

# Решаем систему уравнений
sol = odeint(equations, y0, t, args=(G, M, m))

# Рисуем график орбиты Луны вокруг Земли
plt.figure(figsize=(5, 5))
plt.plot(sol[:, 0], sol[:, 2])
plt.xlabel('x (m)')
plt.ylabel('y (m)')
plt.title('Орбита Луны вокруг Земли')
plt.show()


В этом примере мы моделируем орбиту Луны вокруг Земли, предполагая, что Земля находится в точке (0, 0), и что только Земля оказывает гравитационное воздействие на Луну. Это простое представление, и в реальности движение Луны будет влиять на другие планеты и Солнце.

Также стоит отметить, что это - двумерная модель, и она не учитывает влияние на орбиту, вызванное вращением Земли и Луны или другими трехмерными эффектами. Для более точных расчетов потребуется более сложная модель.

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

Это довольно сложная задача, которая обычно решается с помощью специализированного программного обеспечения для астрономии и астродинамики. Python может быть использован для этих расчетов, но это потребует использования специализированных библиотек, таких как poliastro или REBOUND. Кроме того, для выполнения этих расчетов потребуется точные данные об 'Oumuamua, которые были получены из астрономических наблюдений.

Вот пример простого расчета орбиты 'Oumuamua с использованием библиотеки poliastro:

python
from astropy import units as u
from poliastro.bodies import Sun
from poliastro.twobody import Orbit
from poliastro.plotting import StaticOrbitPlotter
import matplotlib.pyplot as plt

# Задаем начальные данные 'Oumuamua, полученные из наблюдений
a = -1.27263626 * u.AU
ecc = 1.2008975 * u.one
inc = 122.743 * u.deg
raan = 24.5995 * u.deg
argp = 241.7275 * u.deg
nu = 25.3842 * u.deg

# Создаем орбиту 'Oumuamua
oumuamua = Orbit.from_classical(Sun, a, ecc, inc, raan, argp, nu)

# Рисуем орбиту
frame = StaticOrbitPlotter()
frame.plot(oumuamua)

# Отображаем график
plt.show()


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

Подпишись 👉🏻 @KodduuPython 🤖
Анализ сигналов SETI (Search for Extraterrestrial Intelligence) – это очень сложная и многогранная задача. Предоставить полноценное решение для такой задачи в рамках этого ответа невозможно. Ниже пример кода, который демонстрирует анализ гипотетического сигнала, чтобы определить, имеет ли он какие-либо аномалии, которые могут указывать на внеземное происхождение.

Предположим, у нас есть одномерный массив данных (например, временной ряд) с амплитудами сигнала. Мы можем анализировать его на предмет аномальных пиков:

python
import numpy as np
import matplotlib.pyplot as plt

# Симуляция данных
np.random.seed(0)
data_length = 1000
signal = np.random.normal(0, 1, data_length)
signal[500:510] = signal[500:510] + 7 # Добавляем аномальный пик для демонстрации

# Определение порога для обнаружения аномалий
threshold = np.mean(signal) + 3*np.std(signal)

# Поиск аномалий
anomalies = np.where(signal > threshold)

# Визуализация
plt.figure(figsize=(10, 6))
plt.plot(signal)
plt.axhline(threshold, color='r', linestyle='--', label='Threshold')
plt.scatter(anomalies, signal[anomalies], color='r', label='Anomaly')
plt.legend()
plt.title("Signal Analysis for SETI")
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.show()

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

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

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим ещё один метод поиска аномалий в сигналах – метод скользящего окна. Этот метод использует локальные статистики (например, среднее и стандартное отклонение) внутри окна определенного размера для определения аномалий.

python
import numpy as np
import matplotlib.pyplot as plt

# Симуляция данных
np.random.seed(42)
data_length = 1000
signal = np.random.normal(0, 1, data_length)
signal[750:755] = signal[750:755] + 6 # Добавляем аномальный пик для демонстрации

def find_anomalies(signal, window_size, sigma=3.0):
"""
Функция для обнаружения аномалий с использованием метода скользящего окна.
"""
anomalies = []
for i in range(len(signal) - window_size + 1):
local_region = signal[i:i+window_size]
mean = np.mean(local_region)
std = np.std(local_region)

for j in range(window_size):
if abs(local_region[j] - mean) > sigma*std:
anomalies.append(i + j)

return np.unique(anomalies) # Удаляем дубликаты

window_size = 50
anomalies = find_anomalies(signal, window_size)

# Визуализация
plt.figure(figsize=(10, 6))
plt.plot(signal)
plt.scatter(anomalies, signal[anomalies], color='r', label='Anomaly')
plt.legend()
plt.title("Signal Analysis using Moving Window Method")
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.show()

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

Подпишись 👉🏻 @KodduuPython 🤖
Создание автопилота для автомобиля – это сложная и ответственная задача, которая требует глубоких знаний в области робототехники, компьютерного зрения, искусственного интеллекта и безопасности. Полноценный автопилот для автомобиля не может быть реализован в нескольких строках кода.

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

python
import cv2
import numpy as np

def detect_road_line(frame):
# Преобразуем изображение в оттенки серого
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Применяем пороговое значение для выделения белой линии
_, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)

# Применяем Canny для обнаружения краев
edges = cv2.Canny(binary, 50, 150)

# Находим контуры
contours, _ = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# Отсеиваем небольшие контуры и рисуем на изображении
for contour in contours:
if cv2.contourArea(contour) > 400:
cv2.drawContours(frame, [contour], -1, (0, 255, 0), 2)

return frame

# Открываем видеопоток (можно использовать видеофайл, указав путь к файлу вместо 0)
cap = cv2.VideoCapture(0)

while True:
ret, frame = cap.read()

if not ret:
break

processed_frame = detect_road_line(frame)

cv2.imshow('AutoPilot Demo', processed_frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()


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

Подпишись 👉🏻 @KodduuPython 🤖
2
Автопилот для самолета – это еще более сложная система, чем для автомобиля, и подразумевает множество проверок и систем безопасности. В реальных условиях разработка автопилота для самолета требует знаний в области авионики, аэродинамики и безопасности полетов.

Тем не менее, в качестве простой демонстрации, я могу предоставить пример "автопилота", который поддерживает заданную высоту, основываясь на простой PID-регулировке.

python
class Autopilot:
def __init__(self, target_altitude):
self.target_altitude = target_altitude
self.kp = 0.1
self.ki = 0.01
self.kd = 0.05
self.prev_error = 0
self.cumulative_error = 0

def control(self, current_altitude):
error = self.target_altitude - current_altitude
self.cumulative_error += error

# PID regulation
p_term = self.kp * error
i_term = self.ki * self.cumulative_error
d_term = self.kd * (error - self.prev_error)

self.prev_error = error

# Combine terms to get control output
output = p_term + i_term + d_term

# The output can be used to adjust the throttle or elevator of the aircraft
# For this demonstration, we just return it
return output

# Демонстрация работы
autopilot = Autopilot(target_altitude=35000) # Target altitude in feet

# Simulated flight data (current altitude in feet)
flight_data = [34000, 34100, 34150, 34180, 34210, 34240, 34260, 34280]

for altitude in flight_data:
control_output = autopilot.control(altitude)
print(f"Current Altitude: {altitude} ft, Control Output: {control_output}")


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

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

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

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

Давайте использовать OpenCV для обнаружения необычных светящихся объектов на изображении:

python
import cv2
import numpy as np

def detect_bright_objects(image_path):
image = cv2.imread(image_path, cv2.IMREAD_COLOR)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Выделяем яркие области на изображении
_, thresholded = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY)

# Находим контуры на бинаризованном изображении
contours, _ = cv2.findContours(thresholded, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

potential_dyson_spheres = []
for contour in contours:
if cv2.contourArea(contour) > 500: # Отсекаем маленькие объекты
potential_dyson_spheres.append(contour)
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow('Potential Dyson Spheres', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

return potential_dyson_spheres

# Тестирование функции
image_path = "path_to_your_telescope_image.jpg"
detect_bright_objects(image_path)


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

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

Одним из способов использовать глубокое обучение для анализа изображений в Python является использование библиотеки TensorFlow и ее высокоуровневого API Keras.

В качестве примера давайте используем предварительно обученную модель VGG16 (одну из популярных моделей в области компьютерного зрения):

python
import numpy as np
import tensorflow as tf
from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image

# Загрузка предварительно обученной модели VGG16
model = VGG16(weights='imagenet')

def predict_artificial_objects(img_path):
img = image.load_img(img_path, target_size=(224, 224))
img_array = image.img_to_array(img)
img_batch = np.expand_dims(img_array, axis=0)

img_preprocessed = preprocess_input(img_batch)
predictions = model.predict(img_preprocessed)

# Расшифровка результатов в список объектов и их вероятностей
decoded_predictions = decode_predictions(predictions, top=5)[0]

artificial_objects = ["bottle", "can", "laptop", "cellphone", "tv", "camera"] # примеры объектов искусственного происхождения

found_objects = []
for i, (imagenet_id, label, score) in enumerate(decoded_predictions):
if label in artificial_objects:
found_objects.append((label, score))

return found_objects

img_path = "path_to_your_image.jpg"
print(predict_artificial_objects(img_path))


Здесь мы загружаем модель VGG16, обученную на датасете ImageNet, и используем ее для определения объектов на изображении. Затем мы фильтруем предсказанные объекты по списку типичных объектов искусственного происхождения.

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

Подпишись 👉🏻 @KodduuPython 🤖
👍1
Давайте создадим небольшую текстовую игру на Python, где пользователь должен угадать число от 1 до 100, которое компьютер загадал.

python
import random

def guess_the_number():
number = random.randint(1, 100)
attempts = 0

print("Я загадал число от 1 до 100. Попробуйте угадать его!")

while True:
try:
guess = int(input("Ваш вариант: "))

if 1 <= guess <= 100:
attempts += 1

if guess < number:
print("Загаданное число больше вашего варианта.")
elif guess > number:
print("Загаданное число меньше вашего варианта.")
else:
print(f"Поздравляю! Вы угадали число {number} за {attempts} попыток.")
break
else:
print("Ваш вариант должен быть в диапазоне от 1 до 100.")
except ValueError:
print("Пожалуйста, введите число.")

if __name__ == "__main__":
guess_the_number()


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

Сохраните этот код в файл и запустите. Наслаждайтесь игрой!

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим интересный генератор случайных историй.

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

python
import random

def generate_story():
heroes = ["рыцарь", "волшебник", "король", "дракон", "вампир"]
actions = ["спас", "поймал", "победил", "потерял", "нашел"]
circumstances = ["в густом лесу", "в подземелье старого замка", "на вершине горы", "в подводном городе", "в волшебном мире"]

hero = random.choice(heroes)
action = random.choice(actions)
circumstance = random.choice(circumstances)

story = f"Однажды {hero} {action} своего друга {circumstance}."
return story

if __name__ == "__main__":
print(generate_story())


Запустите программу несколько раз, чтобы насладиться различными историями. Вы также можете дополнить или модифицировать списки heroes, actions и circumstances, чтобы сделать генерируемые истории более разнообразными и интересными.

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

python
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance

def deposit(self, amount):
self.balance += amount
return f"Вы внесли {amount}$. Ваш текущий баланс: {self.balance}$."

def withdraw(self, amount):
if amount > self.balance:
return f"Недостаточно средств! Ваш текущий баланс: {self.balance}$."
self.balance -= amount
return f"Вы сняли {amount}$. Ваш текущий баланс: {self.balance}$."

def check_balance(self):
return f"Текущий баланс: {self.balance}$."

if __name__ == "__main__":
account = BankAccount("Алексей")
while True:
print("\nБанковский аккаунт:")
print("1. Внести депозит")
print("2. Снять деньги")
print("3. Проверить баланс")
print("4. Выйти")

choice = input("Выберите действие (1/2/3/4): ")

if choice == "1":
amount = float(input("Введите сумму для внесения: "))
print(account.deposit(amount))
elif choice == "2":
amount = float(input("Введите сумму для снятия: "))
print(account.withdraw(amount))
elif choice == "3":
print(account.check_balance())
elif choice == "4":
print("До свидания!")
break
else:
print("Неверный выбор. Пожалуйста, попробуйте снова.")


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

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

python
import random

def generate_acrostic(name):
words = {
'А': ["Алые", "Активные", "Амбициозные"],
'Б': ["Быстрые", "Блестящие", "Боевые"],
'В': ["Великие", "Верные", "Внезапные"],
# Добавьте больше слов для каждой буквы, чтобы улучшить разнообразие
# ...
}

verses = {
'А': ["алмазы сверкают на солнце.", "ангелы поют на небесах.", "акулы плавают в океане."],
'Б': ["буря начинается в полдень.", "бабочки летают вокруг.", "бегемоты громко ржут."],
'В': ["ветер шепчет тайные слова.", "волны разбиваются о берег.", "высоко поднимается луна."],
# Добавьте больше стихов для каждой буквы
# ...
}

acrostic = []
for letter in name.upper():
if letter in words and letter in verses:
line = f"{random.choice(words[letter])} {random.choice(verses[letter])}"
acrostic.append(line)

return "\n".join(acrostic)

if __name__ == "__main__":
name = input("Введите ваше имя: ")
print("\nВаш акростих:")
print(generate_acrostic(name))


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

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

Подпишись 👉🏻 @KodduuPython 🤖
👍1
Давайте создадим программу для кодирования и декодирования текста с использованием простого метода Цезаря.

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

python
def caesar_cipher(text, shift, mode="encode"):
alphabet = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
result = ''

for char in text.upper():
if char in alphabet:
index = alphabet.index(char)
if mode == "encode":
index = (index + shift) % len(alphabet)
elif mode == "decode":
index = (index - shift) % len(alphabet)
result += alphabet[index]
else:
result += char

return result

if __name__ == "__main__":
action = input("Выберите действие (encode/decode): ")
if action not in ["encode", "decode"]:
print("Неверное действие!")
exit()

text = input("Введите текст: ")
shift = int(input("Введите сдвиг (целое число): "))

result = caesar_cipher(text, shift, mode=action)
print(f"Результат: {result}")


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

Примечание: Данный шифр работает с русским алфавитом. Если вы хотите использовать английский или другой алфавит, просто замените строку alphabet соответствующими символами.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте создадим программу, которая будет имитировать работу библиотеки. В этой библиотеке пользователи могут брать и возвращать книги.

python
class Library:
def __init__(self):
self.books = ["Война и мир", "Преступление и наказание", "Мастер и Маргарита"]
self.lent_books = {}

def lend_book(self, book_name, user_name):
if book_name in self.books:
self.books.remove(book_name)
self.lent_books[book_name] = user_name
return f"Книга '{book_name}' выдана пользователю {user_name}."
elif book_name in self.lent_books:
return f"Книга '{book_name}' уже выдана пользователю {self.lent_books[book_name]}."
else:
return "Такой книги нет в библиотеке."

def return_book(self, book_name):
if book_name in self.lent_books:
user_name = self.lent_books[book_name]
del self.lent_books[book_name]
self.books.append(book_name)
return f"Книга '{book_name}' возвращена от пользователя {user_name}."
else:
return "Эта книга не была взята."

def display_books(self):
return ", ".join(self.books)

if __name__ == "__main__":
library = Library()
while True:
print("\nДобро пожаловать в библиотеку!")
print("1. Показать доступные книги")
print("2. Взять книгу")
print("3. Вернуть книгу")
print("4. Выйти")

choice = input("Выберите действие (1/2/3/4): ")

if choice == "1":
print("\nДоступные книги:")
print(library.display_books())
elif choice == "2":
book_name = input("Введите название книги, которую хотите взять: ")
user_name = input("Введите ваше имя: ")
print(library.lend_book(book_name, user_name))
elif choice == "3":
book_name = input("Введите название книги, которую хотите вернуть: ")
print(library.return_book(book_name))
elif choice == "4":
print("До свидания!")
break
else:
print("Неверный выбор. Пожалуйста, попробуйте снова.")


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

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

python
class Person:
def __init__(self, name, parent=None):
self.name = name
self.parent = parent
self.children = []

def add_child(self, child):
self.children.append(child)

def display_family_tree(self, level=0):
print(' ' * level + self.name)
for child in self.children:
child.display_family_tree(level + 1)

def find_person(root, name):
if root.name == name:
return root
for child in root.children:
result = find_person(child, name)
if result:
return result
return None

if __name__ == "__main__":
root_name = input("Введите имя основателя семьи: ")
root = Person(root_name)

while True:
print("\nМеню генеалогического дерева:")
print("1. Добавить члена семьи")
print("2. Показать дерево")
print("3. Выйти")

choice = input("Выберите действие (1/2/3): ")

if choice == "1":
parent_name = input("Введите имя родителя: ")
child_name = input("Введите имя ребенка: ")

parent = find_person(root, parent_name)
if parent:
child = Person(child_name, parent)
parent.add_child(child)
print(f"{child_name} добавлен в семью как ребенок {parent_name}.")
else:
print(f"Не удалось найти {parent_name} в дереве!")
elif choice == "2":
root.display_family_tree()
elif choice == "3":
print("До свидания!")
break
else:
print("Неверный выбор. Пожалуйста, попробуйте снова.")


В этой программе у нас есть класс Person, который представляет члена семьи. Каждый член семьи может иметь родителя и нескольких детей. Мы можем добавлять новых членов семьи, указывая их родителей, и отображать всё генеалогическое дерево.

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