Найти в Дзене

Что такое данные. Часть 8.1

Оглавление

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

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

я не выразил главную идею. Чего-то не хватает

Грустил он, печалился. Приходит к нему бог и говорит:

что печалишься старче?

Поведал мудрец причину своей печали. На что всевышний ответил:

Твоя печаль в том, что ты в своих рукописях не добавил меня

Так и я смотрю на программу из прошлой части и думаю: «для человека далекого от программирования – это просто бессмысленный набор символов». Тогда я задался вопросом, что придаёт чему-то смысл? Наверно, какая-то базовая единица. Например, для предложения смысловой единицей служит слово, для слова – буква и.д. Базовая единица – это то, без чего смысла быть не может. А в следующем коде, где смысл?

Программа из прошлой главы
Программа из прошлой главы

Для ответа на этот вопрос, подумай уважаемый читатель, без чего эта программа превратится в бессмыслицу? Конечно без «данных». Программа создается для обработки «данных» - информации. Приведенный код выполняет простые действия

  • Просматривает содержимое директории «d:/12»
  • Ищет файлы с расширением mp3
  • Воспроизводит выбранный мной файл.

По сути, если я хочу послушать «клёвую» музыку мозг наверно выполняет тот же код. Сначала я открываю папку с музыкой, через орган зрения в мозговые клетки передается список файлов из папки, затем щелкаю мышкой по любимому музыкальному произведению и наслаждаюсь музыкой. Но чтобы этим процессом наслаждаться должны быть какие-то исходные данные: я должен знать имя открываемой папки, должен знать алфавит, чтобы это имя прочитать и должен иметь представления - как вообще пользоваться компьютером. Со школьной скамьи нам уже вливают исходные данные, а потом на протяжении всего периода обучения учат, как обрабатывать их. Я могу писать эти строки, потому что знаю алфавит, но сам алфавит без понимания как из него получать слова, а из слов предложения бесполезен.

Исходные данные, обработка и результат
Исходные данные, обработка и результат

Точно также я поступаю при написании кода:

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

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

Исходные данные:

  1. musik_PLAY_dir = "d:/12"
  2. file_music =input("Что желаете послушать? ")

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

Переменные

Исходные данные я помещаю в переменные musik_PLAY_dir, file_music. Переменные можете представить как некоторый объект, в который помещено какое-то значение. Причём это значение может изменяться. Представить переменные проще на «житейском примере». Вы пошли в магазин за продуктами. Какой главный критерий ваших покупок? Конечно цена продуктов и сколько денег в кармане. И как вы знаете, цены растут гораздо быстрее, чем карман с деньгами. Таким образом «цена» и «деньги в кармане» просто переменные, постоянно меняющие свои значения. В коде и я задал переменные musik_PLAY_dir, file_music и присвоил им какие-то значения. Имена этих переменных я выбрал произвольно, мог бы записать

a = "d:/12"

b =input("Что желаете послушать? ")

Но предпочитаю использовать более понятные имена для переменных.

Функции

В функциях, я описываю действия (обработку), которые нужно выполнить с данными, чтобы получить результат. В Python функции описываются после слова def. Слово def - это ключевое слово, увидев его, Python понимает - я хочу описать действия с данными. Аналогично наверно работает и наше сознание. Например, в том же магазине. Я купил продукты на 550 руб., 200 руб., 300 руб. в кармане всего 1000 руб. И в сознание из внешнего мира перетекают исходные данные – цена и «наличка», которая у меня есть. Дальше я спрашиваю у мозга: хватит мне оплатить продукты или нет? Мозг в ответ запускает функцию сложения и сравнения 550 руб. + 200 руб., + 300 руб.>1000. Похоже, покупка отменяется.

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

os.startfile(play_musik(int(file_musik)-1)) - эта функция запускает программу, в качестве её аргумента указываю путь к файлу — play_musik(int(file_musik)-1).

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

os.startfile(play_musik(int(file_musik)-1)).

И запишу функцию таким образом -

os.startfile(Путь к файлу)
  1. Путь к файлу = play_musik(Номер файла)
  2. Номер файла = int(file_musik)-1

Чтобы в сознании уяснить идею кода, нужно спросить себя: где тут исходные данные? Переменная file_musik принимает значение, вводимое мной с клавиатуры. Например, я ввел с клавиатуры «1», тогда file_musik=1 и

Номер файла = int(«1»)-1

Типы данных

Типы данных мы классифицируем интуитивно на фотографии, числа, строки и графики — всё это данные, только разных типов. Python тоже интуитивно определяет тип данных. Например, я запишу команду:

a=5, тогда Python переменную «a» воспримет как числовой тип данных, а если напишу b= «5», то Python отнесет переменную «b» к строковому типу данных. Любой набор символов для python заключенный в кавычки - это строка. А что будет, если к «a» прибавить «b»? Выйдет ошибка, потому что Python не знает, как к строке прибавить число. Но если, я запишу:

int(b)+a,

то получу ответ — 10. Функция int(строка) служит для преобразования строки в целое число. Т.е. после применения int(b), «b» становится целым числом и я могу прибавить его к «a». функция обратная int (строка)str(число). Т.е. если я запишу

b+str(a),

то получу ответ - «55», т. к. сложение двух строк для Python это их слияние. Поэтому, чтобы избежать ошибок не соответствия типов данных нужно чётко представлять с какими данными вы работает. Например, если бы строчку

номер файла = int(«1»)-1

я записал без int(), в ответ получил бы ошибку не соответствия типов, потому что «1» строка, а 1 — число и так делать нельзя

«1»-1.

Теперь вы легко можете сказать, что результатом выполнения операции int(«1»)-1 будет ноль, т.е.

Номер файла = int(«1»)-1=0

Соберу по крупицам «упрощение» функции

os.startfile(play_musik(int(file_musik)-1))=>=>
=>=> os.startfile(play_musik(0)).

Но перед тем, как запустить файл, Python переходит к функции play_musik(0) и вычисляет ее значение.

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

Телеграм канал<<здесь

Пишем искусственный интеллект. Изучаем Python
Пишем искусственный интеллект. Изучаем Python

Не переключайтесь, самое интересное еще впереди.
Телеграм канал<<здесь