С Python можно так много делать, например, обрабатывать необработанные данные и машинное обучение. Но для этого потребуется больше практики. Итак, давайте прямо сейчас попробуем что-нибудь немного другое, чтобы познакомиться с Python.

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

Вот математическая задача:

  1. В лаборатории есть наноробот. Питается бактериями. Каждую секунду один нанобот съедает одну бактерию.
  2. С каждой съеденной бактерией наноробот копирует себя.
  3. Бактерии, которые едят эти нанороботы, есть повсюду; они покрывают землю тонким слоем. Нет места на земле, где бы не было этих бактерий.
  4. Каждая бактерия питается всем, что ей доступно, а также размножается каждую секунду.
  5. Если один-единственный наноробот вырвется из лаборатории, поглотят ли нанороботы все бактерии на Земле? И если да, то сколько времени это займет?

Ученые, кстати, называют это «судьбоносным» сценарием «серой слизи». Grey Goo - это куча наноботов, которые потребляют все живое на Земле только ради нее.

Математическое решение

Если бы у меня не было Jupyter Notebook (приложения для программирования на Python), я бы решил эту проблему с помощью математики. Не буду утомлять вас деталями, но ответ будет удивительным: в данных условиях наноботам потребуется столько же секунд, чтобы поглотить все бактерии, сколько бактерий было вначале. Итак, если бы на Земле было 20 квадриллионов бактерий, наноботам потребовалось бы 20 квадриллионов секунд, чтобы поглотить их все.

Это просто математика. Вам не о чем беспокоиться.

Решение Python

Я бы предпочел использовать Python для моделирования процесса. Во-первых, это намного проще и безошибочно. Во-вторых, это намного веселее.

Давайте начнем с того, что запишем основы проблемы. (Обратите внимание, что в Python мы можем писать комментарии к нашему коду, начав строку с символа #. Таким образом, любая строка, начинающаяся с символа #, является объяснением, а не частью самого кода.)

# 1. Сколько у нас бактерий в начале
bact = 10
# 2. Сколько у нас нанороботов в начале
nano = 1
# 3. Прошедшее время в секундах
sec = 0
# 4. Следующий цикл будет продолжаться, пока есть хотя бы одна бактерия
while bact ›0:
# На каждом шаге:
# 5. Каждый бот ест бактерию, поэтому количество бактерий уменьшается на количество ботов
bact = bact - nano
# 6. Затем наноботы удваиваются
nano = nano * 2
# 7. и бактерии удваиваются.
bact = bact * 2
# 8. Время идет.
sec = sec + 1
# 9. Если программа выходит из цикла, это означает, что все бактерии были съедены.
# 10. Программа выдает количество секунд, которое потребовалось ботам, чтобы полностью поесть.
print (str (sec ) + 'секунды до конца света')

Если мы вставим это в Jupyter Notebook и запустим программу (Shift + Enter), то получим «10 секунд до конца света». Это означает, что цикл выполняется, и наше моделирование дает нам точный результат, который я получил в результате моих математических расчетов.

Но подождите, это даже не самое лучшее.

Лучшая часть

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

  1. Мы можем ввести «фактор смерти», убивающий определенное количество наноботов каждую секунду.
  2. Мы можем ввести новые виды бактерий, которые размножаются медленнее или быстрее.
  3. Мы можем ввести бактерии, которые сопротивляются поеданию наноботов, и вместо этого съесть наноботов.

Мы можем ввести все это в наш цикл While и запустить симуляцию. И мы можем добавить намного больше сложности, например, добавление случайных событий, изменение бактериальной популяции с течением времени и многое другое - все, что нам нужно сделать, это сначала подумать об этом, а затем объясните это в простом коде Python. И нажмите «Выполнить», чтобы цикл зацикливался и моделирование имитировалось. Просто как тот. Сделать то же самое в математическом уравнении было бы бесконечно сложнее, в то время как в Python это всего лишь вопрос нескольких строк кода.

Итак, поехали. Это пример правильного использования Python. :-)

Скажи мне, что ты думаешь!

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