Распродажи Stepik курсов и программ которые сгорят под бой курантов🎄Можно купить себе или подарить 🎁
1️⃣ Python: самый быстрый курс
2️⃣ Python Data Science: самый быстрый курс
👉 Junior Python Data Scientist (программа из курсов 1️⃣ и 2️⃣)
3️⃣ Python в нескучных примерах (50)
👉 Junior Python Developer and Data Scientist (программа из курсов 1️⃣, 2️⃣ и 3️⃣)
4️⃣ Топ 100 вопросов с реальных собеседований по Python (шпаргалка) 👉 бесплатный курс
5️⃣ Язык программирования BrainFuck или ВыносМозга! 👉 бесплатный курс
Подпишись 👉🏻 @KodduuPython 🤖
1️⃣ Python: самый быстрый курс
2️⃣ Python Data Science: самый быстрый курс
👉 Junior Python Data Scientist (программа из курсов 1️⃣ и 2️⃣)
3️⃣ Python в нескучных примерах (50)
👉 Junior Python Developer and Data Scientist (программа из курсов 1️⃣, 2️⃣ и 3️⃣)
4️⃣ Топ 100 вопросов с реальных собеседований по Python (шпаргалка) 👉 бесплатный курс
5️⃣ Язык программирования BrainFuck или ВыносМозга! 👉 бесплатный курс
Подпишись 👉🏻 @KodduuPython 🤖
В Python концепция контекста реализована с помощью менеджеров контекста и ключевого слова
---
### Пример: Использование менеджера контекста для работы с файлами
---
### Пример: Создание собственного менеджера контекста
Для создания собственного менеджера контекста можно использовать класс с методами
#### Результат:
---
### Пример: Менеджер контекста с использованием
Модуль
#### Результат:
---
### Пример: Контекст для блокировки ресурсов
Менеджеры контекста часто применяются для управления блокировками (например, с помощью `threading.Lock`).
---
### Вывод:
Контексты в Python позволяют безопасно управлять ресурсами, упрощая такие задачи, как открытие и закрытие файлов, управление соединениями или блокировками, и делают код чище и устойчивее к ошибкам.
Подпишись 👉🏻 @KodduuPython 🤖
with. Менеджеры контекста предоставляют способ работы с ресурсами (например, файлами, сетевыми соединениями или блокировками) и автоматически управляют их открытием и закрытием, даже в случае возникновения исключений.---
### Пример: Использование менеджера контекста для работы с файлами
# Работа с файлом без менеджера контекста
file = open("example.txt", "w")
try:
file.write("Hello, World!")
finally:
file.close() # Закрываем файл вручную
# Работа с файлом через менеджер контекста
with open("example.txt", "w") as file:
file.write("Hello, World!") # Файл будет автоматически закрыт
---
### Пример: Создание собственного менеджера контекста
Для создания собственного менеджера контекста можно использовать класс с методами
__enter__ и __exit__.
class MyContextManager:
def __enter__(self):
print("Входим в контекст")
return self # Можно вернуть объект, если нужно
def __exit__(self, exc_type, exc_value, traceback):
print("Выходим из контекста")
if exc_type:
print(f"Произошла ошибка: {exc_value}")
return True # Подавляет исключение, если нужно
# Используем менеджер контекста
with MyContextManager() as cm:
print("Внутри контекста")
raise ValueError("Что-то пошло не так") # Исключение будет обработано
print("Контекст завершен")
#### Результат:
Входим в контекст
Внутри контекста
Произошла ошибка: Что-то пошло не так
Выходим из контекста
Контекст завершен
---
### Пример: Менеджер контекста с использованием
contextlibМодуль
contextlib предоставляет декоратор @contextmanager, упрощающий создание менеджеров контекста.
from contextlib import contextmanager
@contextmanager
def my_context():
print("Входим в контекст")
try:
yield "Ресурс" # Передаем управление блоку `with`
except Exception as e:
print(f"Произошла ошибка: {e}")
finally:
print("Выходим из контекста")
# Используем менеджер контекста
with my_context() as resource:
print(f"Используем {resource}")
raise RuntimeError("Пример ошибки")
#### Результат:
Входим в контекст
Используем Ресурс
Произошла ошибка: Пример ошибки
Выходим из контекста
---
### Пример: Контекст для блокировки ресурсов
Менеджеры контекста часто применяются для управления блокировками (например, с помощью `threading.Lock`).
import threading
lock = threading.Lock()
def critical_section():
with lock: # Блокировка автоматически освобождается после завершения блока
print(f"Поток {threading.current_thread().name} выполняет критическую секцию")
# Создание потоков
threads = [threading.Thread(target=critical_section) for _ in range(5)]
# Запуск потоков
for thread in threads:
thread.start()
for thread in threads:
thread.join()
---
### Вывод:
Контексты в Python позволяют безопасно управлять ресурсами, упрощая такие задачи, как открытие и закрытие файлов, управление соединениями или блокировками, и делают код чище и устойчивее к ошибкам.
Подпишись 👉🏻 @KodduuPython 🤖
⚡5👍4
Работа с GPS в Python может быть выполнена с использованием модулей, таких как
---
### Пример 1: Использование
#### Установка:
#### Код:
---
### Пример 2: Использование
Данные от GPS-устройства часто передаются в формате NMEA (текстовый формат), который можно обработать вручную или с помощью библиотек, например,
#### Установка:
#### Код:
---
### Пример 3: Работа с эмуляцией GPS
Для тестирования можно использовать файлы с NMEA-данными, которые эмулируют работу реального GPS. Такой подход полезен, если у вас нет физического устройства.
#### Тестовые данные (пример NMEA):
#### Код для эмуляции:
---
### Вывод
Этот код демонстрирует, как получать и обрабатывать GPS-данные. В зависимости от вашего устройства и протокола взаимодействия, вы можете:
1. Использовать
2. Работать напрямую с портом через
3. Эмулировать GPS-сигналы для тестирования.
Подпишись 👉🏻 @KodduuPython 🤖
gpsd, pyserial или pynmea2. Эти модули позволяют подключаться к GPS-устройствам, получать данные о местоположении и разбирать их.---
### Пример 1: Использование
gpsdgpsd — это сервер, который предоставляет данные от GPS-устройства. В Python можно использовать библиотеку gpsd-py3 для взаимодействия с gpsd.#### Установка:
pip install gpsd-py3
#### Код:
import gpsd
# Подключаемся к gpsd
gpsd.connect()
# Получаем данные от GPS
packet = gpsd.get_current()
# Вывод информации о местоположении
if packet.mode >= 2: # Режим 2D или 3D
print(f"Широта: {packet.lat}")
print(f"Долгота: {packet.lon}")
if packet.mode == 3: # Режим 3D
print(f"Высота: {packet.alt}")
else:
print("Нет данных о местоположении")
---
### Пример 2: Использование
pyserial для чтения данных NMEAДанные от GPS-устройства часто передаются в формате NMEA (текстовый формат), который можно обработать вручную или с помощью библиотек, например,
pynmea2.#### Установка:
pip install pyserial pynmea2
#### Код:
import serial
import pynmea2
# Подключение к GPS через COM-порт (здесь используется примерный порт)
gps_port = "/dev/ttyUSB0" # Укажите порт вашего устройства
baud_rate = 9600 # Типичная скорость GPS
timeout = 5 # Тайм-аут
try:
# Открываем соединение
with serial.Serial(gps_port, baudrate=baud_rate, timeout=timeout) as ser:
print("Чтение данных от GPS...")
while True:
line = ser.readline().decode('ascii', errors='replace').strip()
if line.startswith('$GPGGA'): # Проверяем тип сообщения
msg = pynmea2.parse(line)
print(f"Широта: {msg.latitude} {msg.lat_dir}")
print(f"Долгота: {msg.longitude} {msg.lon_dir}")
print(f"Высота: {msg.altitude} {msg.altitude_units}")
except serial.SerialException as e:
print(f"Ошибка подключения к порту: {e}")
except pynmea2.ParseError as e:
print(f"Ошибка разбора NMEA данных: {e}")
---
### Пример 3: Работа с эмуляцией GPS
Для тестирования можно использовать файлы с NMEA-данными, которые эмулируют работу реального GPS. Такой подход полезен, если у вас нет физического устройства.
#### Тестовые данные (пример NMEA):
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
#### Код для эмуляции:
import pynmea2
# Пример NMEA-строки
nmea_data = "$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47"
# Разбор строки
try:
msg = pynmea2.parse(nmea_data)
print(f"Время: {msg.timestamp}")
print(f"Широта: {msg.latitude} {msg.lat_dir}")
print(f"Долгота: {msg.longitude} {msg.lon_dir}")
print(f"Высота: {msg.altitude} {msg.altitude_units}")
except pynmea2.ParseError as e:
print(f"Ошибка разбора NMEA данных: {e}")
---
### Вывод
Этот код демонстрирует, как получать и обрабатывать GPS-данные. В зависимости от вашего устройства и протокола взаимодействия, вы можете:
1. Использовать
gpsd для высокоуровневого доступа к GPS.2. Работать напрямую с портом через
pyserial и разбирать данные в формате NMEA.3. Эмулировать GPS-сигналы для тестирования.
Подпишись 👉🏻 @KodduuPython 🤖
👍6
Код 👆👆👆
Подпишись 👉🏻 @KodduuPython 🤖
import time
import os
import random
# Настройка размеров "экрана"
SCREEN_WIDTH = 40
SCREEN_HEIGHT = 20
# Новогодняя елка
TREE = [
" 🎄",
" 🎄🎄",
" 🎄🎄🎄",
" 🎄🎄🎄🎄",
" 🎄🎄🎄🎄🎄",
" 🎄🎄🎄🎄🎄🎄",
" 🎄🎄🎄🎄🎄🎄🎄",
" 🎄🎄🎄🎄🎄🎄🎄🎄",
" 🎄🎄🎄🎄🎄🎄🎄🎄🎄",
" ||",
" ||",
]
# Генерация начальных снежинок
snowflakes = [[random.randint(0, SCREEN_WIDTH - 1), random.randint(0, SCREEN_HEIGHT - 1)] for _ in range(50)]
# Функция рисования экрана
def draw_screen():
os.system('cls' if os.name == 'nt' else 'clear') # Очистка экрана
# Рисуем "снежный экран"
screen = [[" " for _ in range(SCREEN_WIDTH)] for _ in range(SCREEN_HEIGHT)]
# Добавляем снежинки
for flake in snowflakes:
x, y = flake
if 0 <= y < SCREEN_HEIGHT and 0 <= x < SCREEN_WIDTH:
screen[y][x] = "❄️"
# Рисуем елку
for i, line in enumerate(TREE):
if SCREEN_HEIGHT - len(TREE) + i >= 0:
screen[SCREEN_HEIGHT - len(TREE) + i][:len(line)] = line
# Вывод экрана
for row in screen:
print("".join(row))
# Главный цикл
try:
while True:
draw_screen()
# Обновляем положение снежинок
for flake in snowflakes:
flake[1] += 1 # Снежинка падает вниз
if flake[1] >= SCREEN_HEIGHT: # Перезапускаем снежинку сверху
flake[1] = 0
flake[0] = random.randint(0, SCREEN_WIDTH - 1)
# Добавляем задержку для анимации
time.sleep(0.2)
except KeyboardInterrupt:
print("\nС Новым Годом! 🎅🎁🎉")
Подпишись 👉🏻 @KodduuPython 🤖
❤7
This media is not supported in your browser
VIEW IN TELEGRAM
С наступающим 🎄❄️☃️ Сбычи мечт и много хорошего кода в новом 2025 году 🎁👩💻🧑💻
Подпишись 👉🏻 @KodduuPython 🤖
Подпишись 👉🏻 @KodduuPython 🤖
👍8❤2🔥2
Не успели купить 🎁, подарите знания (любой курс можно подарить):
1️⃣ Python: самый быстрый курс
2️⃣ Python Data Science: самый быстрый курс
👉 Junior Python Data Scientist (программа из курсов 1️⃣ и 2️⃣)
3️⃣ Python в нескучных примерах (50)
👉 Junior Python Developer and Data Scientist (программа из курсов 1️⃣, 2️⃣ и 3️⃣)
4️⃣ Топ 100 вопросов с реальных собеседований по Python (шпаргалка) 👉 бесплатный курс
5️⃣ Язык программирования BrainFuck или ВыносМозга! 👉 бесплатный курс
Подпишись 👉🏻 @KodduuPython 🤖
1️⃣ Python: самый быстрый курс
2️⃣ Python Data Science: самый быстрый курс
👉 Junior Python Data Scientist (программа из курсов 1️⃣ и 2️⃣)
3️⃣ Python в нескучных примерах (50)
👉 Junior Python Developer and Data Scientist (программа из курсов 1️⃣, 2️⃣ и 3️⃣)
4️⃣ Топ 100 вопросов с реальных собеседований по Python (шпаргалка) 👉 бесплатный курс
5️⃣ Язык программирования BrainFuck или ВыносМозга! 👉 бесплатный курс
Подпишись 👉🏻 @KodduuPython 🤖
👍4❤1
Ниже пример простого скрипта на Python, который собирает новогоднее поздравление из случайно выбранных слов и фраз. Его можно расширять, добавлять дополнительные списки или логику по своему вкусу.
### Как это работает:
1. Списки со словами и фразами: Для разных частей поздравления (`starts`,
2. Модуль `random`: При помощи
3. Сборка текста: Формируем итоговую строку (`greeting`), используя f-строки с подстановками.
4. Вывод результата: Вызов
При желании можно:
- Добавить больше слов в списки.
- Формировать более сложные конструкции предложений.
- Сохранять поздравление в файл или отправлять его по электронной почте.
Подпишись 👉🏻 @KodduuPython 🤖
import random
def generate_new_year_greeting():
"""
Генерирует новогоднее поздравление, выбирая слова из списков случайным образом.
"""
# Приветствия/начальные фразы
starts = [
"Поздравляю",
"Сердечно поздравляю",
"От всей души приветствую",
"С огромной радостью поздравляю"
]
# Прилагательные/эпитеты
adjectives = [
"счастливого",
"волшебного",
"радостного",
"прекрасного",
"блестящего"
]
# Основные пожелания
wishes = [
"здоровья",
"удачи",
"радости",
"любви",
"тепла",
"творческих успехов",
"исполнения всех желаний"
]
# Дополнительные фразы
extras = [
"чтобы каждый день был наполнен чудесами",
"пусть все мечты сбываются",
"желаю верить в себя и покорять любые вершины",
"пусть в сердце живёт только добро",
"и пусть этот год принесёт много ярких событий"
]
# Заключительные фразы/пожелания
endings = [
"С Новым годом!",
"Пусть в этом году будет всё на высоте!",
"Пусть в новом году будет только лучше!",
"С праздником!",
"Свершений и новых побед!"
]
# Собираем предложение
greeting = (
f"{random.choice(starts)} с наступившим {random.choice(adjectives)} Новым годом!\n\n"
f"Желаю {random.choice(wishes)}, {random.choice(wishes)}, а также {random.choice(wishes)}.\n"
f"И, конечно, {random.choice(extras)}.\n\n"
f"{random.choice(endings)}"
)
return greeting
def main():
# Генерируем и выводим поздравление
print(generate_new_year_greeting())
if __name__ == "__main__":
main()
### Как это работает:
1. Списки со словами и фразами: Для разных частей поздравления (`starts`,
adjectives, wishes, extras, `endings`) заведены отдельные списки. 2. Модуль `random`: При помощи
random.choice выбирается по одной фразе/слову из каждого списка. 3. Сборка текста: Формируем итоговую строку (`greeting`), используя f-строки с подстановками.
4. Вывод результата: Вызов
print(generate_new_year_greeting()) выдаёт нам случайное поздравление на каждом запуске. При желании можно:
- Добавить больше слов в списки.
- Формировать более сложные конструкции предложений.
- Сохранять поздравление в файл или отправлять его по электронной почте.
Подпишись 👉🏻 @KodduuPython 🤖
👍8❤4
Ниже приведён шуточный пример кода на Python, который «оценивает», сколько салата «Оливье» было съедено во всём мире на Новый год. Все расчёты, конечно, условны и сделаны для иллюстрации, а не на основе реальной статистики.
### Как работает код
1. Параметры «мировой» статистики
-
-
-
2. Средняя порция
В примере для простоты взято \(300\) граммов на человека. Кто-то съедает больше, кто-то меньше — но пусть будет так.
3. Вычисление
- Находим общее число людей, которые (гипотетически) ели Оливье.
- Умножаем на 300 г.
- Переводим всё это в килограммы.
4. Случайный разброс
В коде мы добавляем ±10% (переменная `fluctuation_percent`), чтобы сделать оценку ещё менее «точной» и более шутливой.
5. Вывод
В
---
Это, конечно, не настоящее научное исследование, а лишь пример того, как можно реализовать в Python «виртуальный счётчик» чего угодно — например, салата Оливье в новогоднюю ночь.
Подпишись 👉🏻 @KodduuPython 🤖
import random
def estimate_olivier_eaten():
"""
Возвращает приблизительное (и шуточное) количество килограммов Оливье,
которые были съедены на планете в новогоднюю ночь.
"""
# (1) Численность населения (приблизительно, в миллиардах)
world_population = 8.05 # млрд (примерно к 2024 году)
# (2) Процент людей, отмечающих Новый год
# Условно предположим, что его празднуют 80% населения
celebrating_people_percent = 0.8
# (3) Процент любителей Оливье среди тех, кто празднует
# Пусть из празднующих минимум 50% едят Оливье
olivier_lovers_percent = 0.5
# (4) Средняя порция Оливье на человека (в граммах)
# Предположим 300 г на душу – кто-то съест больше, кто-то меньше
avg_portion_per_person_grams = 300
# (5) Считаем
# Сколько людей ест Оливье
number_of_olivier_eaters = world_population * 1_000_000_000 \
* celebrating_people_percent \
* olivier_lovers_percent
# Сколько всего граммов Оливье пришлось на этих людей
total_grams_olivier = number_of_olivier_eaters * avg_portion_per_person_grams
# Переводим в килограммы
total_kilos_olivier = total_grams_olivier / 1000
return total_kilos_olivier
def main():
# Получим оценку
kilos_olivier = estimate_olivier_eaten()
# Для «дополнительной реалистичности» внесём случайный разброс ±10%
# Ведь точное число никто не знает 🙂
fluctuation_percent = random.uniform(-0.1, 0.1)
kilos_olivier *= (1 + fluctuation_percent)
# Красиво форматируем число (например, с разделением разрядов)
result_str = f"{kilos_olivier:,.0f}" # округлим до целых
print(f"По приблизительным (шуточным) оценкам, в новогоднюю ночь "
f"на планете было съедено около {result_str} кг Оливье!")
if __name__ == "__main__":
main()
### Как работает код
1. Параметры «мировой» статистики
-
world_population — приблизительная численность населения Земли в миллиардах. -
celebrating_people_percent — доля тех, кто отмечает Новый год. -
olivier_lovers_percent — доля тех, кто в праздничную ночь ест Оливье (из тех, кто вообще празднует).2. Средняя порция
В примере для простоты взято \(300\) граммов на человека. Кто-то съедает больше, кто-то меньше — но пусть будет так.
3. Вычисление
- Находим общее число людей, которые (гипотетически) ели Оливье.
- Умножаем на 300 г.
- Переводим всё это в килограммы.
4. Случайный разброс
В коде мы добавляем ±10% (переменная `fluctuation_percent`), чтобы сделать оценку ещё менее «точной» и более шутливой.
5. Вывод
В
main() печатаем итоговое «псевдо-число» в красиво отформатированном виде.---
Это, конечно, не настоящее научное исследование, а лишь пример того, как можно реализовать в Python «виртуальный счётчик» чего угодно — например, салата Оливье в новогоднюю ночь.
Подпишись 👉🏻 @KodduuPython 🤖
⚡5❤1
Ниже приведён упрощённый пример на Python, демонстрирующий базовые идеи, которые могли использоваться для плановых расчётов в экономике (как, например, в СССР). Он не претендует на историческую точность и полноту, но иллюстрирует общий подход к задачам планирования с применением математической оптимизации.
---
Краткое введение в задачу
Предположим, что у нас есть несколько типов ресурсов (например, металл, дерево, электроэнергия и т.д.), и мы хотим произвести несколько видов товаров (станки, мебель, автомобили и т.д.). У каждого товара есть:
1. План по выпуску (то есть минимальное количество, которое нужно произвести по указу «сверху»).
2. Потребление ресурсов на единицу выпуска (например, один автомобиль требует 1 тонну металла, 10 кВт⋅ч электроэнергии и т.п.).
3. Ограниченное количество ресурсов, доступных в нашей «народно-хозяйственной» системе.
Основная задача: найти, сколько каждого вида товара нужно произвести, чтобы:
- Выполнить (или превысить) плановые задания (заказ государства).
- Не превысить доступные объёмы ресурсов.
- Максимизировать (или минимизировать) некую целевую функцию — например, суммарную “пользу” (удовлетворение потребностей народа / вклад в экономику).
В реальном СССР и других плановых экономиках задач было в разы больше и сложнее: расчёты производились по десяткам тысяч наименований продукции, учитывалась логистика, взаимозаменяемость ресурсов, отраслевые приоритеты и т.д. В 70–80-х годах это было крайне затруднительно из-за недостатка вычислительной техники и несовершенства методов планирования, что приводило к неточностям, дефицитам и дисбалансам.
Сегодня же, используя современные вычислительные мощности и продвинутые алгоритмы (линейное и нелинейное программирование, машинное обучение, системы принятия решений в реальном времени и т.п.), можно в теории гораздо эффективнее решать плановые задачи. Хотя, конечно, сама концепция плановой экономики поднимает множество вопросов и проблем, выходящих за рамки чисто вычислительной стороны дела.
Сложность плановых расчётов в 70–80-х
Недостаток вычислительной техники. ЭВМ в СССР (например, «Минск», «Урал», ЕС ЭВМ) имели на порядки меньшую производительность по сравнению с современными ПК. В 70–80-е годы такие машины могли обрабатывать относительно простые и не слишком большие задачи. Полноценный учёт сотен тысяч наименований товаров и ресурсов представлял колоссальную computational-проблему.
Ручной труд экономистов и плановиков. Многие расчёты производились вручную, с помощью арифмометров, перфокарт. Часть плановых заданий корректировалась “на местах”, что приводило к искажению общей картины.
Ограничения математических моделей. Методологии линейного программирования, многокритериальной оптимизации и т. п. тогда не были развиты так широко, как сейчас. Вдобавок многие экономические и социальные факторы трудно формализовать линейной моделью.
В результате получался грубый (и часто запаздывающий) план, который вёл к дефициту одних товаров и избытку других, очередям, бартерным схемам и так далее.
Подпишись 👉🏻 @KodduuPython 🤖
---
Краткое введение в задачу
Предположим, что у нас есть несколько типов ресурсов (например, металл, дерево, электроэнергия и т.д.), и мы хотим произвести несколько видов товаров (станки, мебель, автомобили и т.д.). У каждого товара есть:
1. План по выпуску (то есть минимальное количество, которое нужно произвести по указу «сверху»).
2. Потребление ресурсов на единицу выпуска (например, один автомобиль требует 1 тонну металла, 10 кВт⋅ч электроэнергии и т.п.).
3. Ограниченное количество ресурсов, доступных в нашей «народно-хозяйственной» системе.
Основная задача: найти, сколько каждого вида товара нужно произвести, чтобы:
- Выполнить (или превысить) плановые задания (заказ государства).
- Не превысить доступные объёмы ресурсов.
- Максимизировать (или минимизировать) некую целевую функцию — например, суммарную “пользу” (удовлетворение потребностей народа / вклад в экономику).
В реальном СССР и других плановых экономиках задач было в разы больше и сложнее: расчёты производились по десяткам тысяч наименований продукции, учитывалась логистика, взаимозаменяемость ресурсов, отраслевые приоритеты и т.д. В 70–80-х годах это было крайне затруднительно из-за недостатка вычислительной техники и несовершенства методов планирования, что приводило к неточностям, дефицитам и дисбалансам.
Сегодня же, используя современные вычислительные мощности и продвинутые алгоритмы (линейное и нелинейное программирование, машинное обучение, системы принятия решений в реальном времени и т.п.), можно в теории гораздо эффективнее решать плановые задачи. Хотя, конечно, сама концепция плановой экономики поднимает множество вопросов и проблем, выходящих за рамки чисто вычислительной стороны дела.
Сложность плановых расчётов в 70–80-х
Недостаток вычислительной техники. ЭВМ в СССР (например, «Минск», «Урал», ЕС ЭВМ) имели на порядки меньшую производительность по сравнению с современными ПК. В 70–80-е годы такие машины могли обрабатывать относительно простые и не слишком большие задачи. Полноценный учёт сотен тысяч наименований товаров и ресурсов представлял колоссальную computational-проблему.
Ручной труд экономистов и плановиков. Многие расчёты производились вручную, с помощью арифмометров, перфокарт. Часть плановых заданий корректировалась “на местах”, что приводило к искажению общей картины.
Ограничения математических моделей. Методологии линейного программирования, многокритериальной оптимизации и т. п. тогда не были развиты так широко, как сейчас. Вдобавок многие экономические и социальные факторы трудно формализовать линейной моделью.
В результате получался грубый (и часто запаздывающий) план, который вёл к дефициту одних товаров и избытку других, очередям, бартерным схемам и так далее.
Подпишись 👉🏻 @KodduuPython 🤖