Прекрасно понимаю, как вам хочется перейти к практике. Но потерпите ещё немного. Чем эффективней мы сейчас с вами поработаем, чем лучше воспримем и поймём, тем легче и быстрей будет наше последующее творчество!
Системное мышление не достигается по щелчку пальцев, но как только мы его с вами приобретём - откроются не только новые горизонты, но и повысится скорость, улучшатся специальные навыки, коэффициент IQ станет выше, аппетит аппетитней, бодрость бодрее и перспективы перспективней. Так что внимание и сосредоточение. До поединка уже немного!
Человек получает информацию с помощью пяти явных органов чувств - зрение, слух, осязание, обоняние, вкус. К слову, разные источники выделяют чувства по-разному. Например, некоторые утверждают, что мы также должны учитывать чувство дна расположения в пространстве (верх, низ, ощущения падения и всё такое). Буддисты выделяют такое чувство, как "ум", как правило беспокойный и постоянно переживающий, одним словом несчастный.
Человек - это прекрасно, венец творения, изобрёл географию, кофе и туалетную бумагу, но мы изучаем компьютер. Сколько "органов чувств" у компьютера?
Пять. Но не таких, как у человека. Компьютерные "чувства" называются видами информации, которые может получать, обрабатывать и выводить компьютер (по аналогии с человеком: посмотрели - получили информацию, подумали - обработали, рассказали, что видели, - вывели информацию).
Компьютер получает, обрабатывает, выводит:
Быть может, году эдак в 2300-м научат компьютеры воспроизводить и понимать запахи, или вкус. Научат ругаться, научат эмоционально и искренне реагировать. Научат чувству юмора, и будет комп троллить хозяина. Высокопрофессионально троллить, искренне. Здорово же!
Итак, повторим: числа, текст, графика, видео, звук. Всё. Пока больше ничего компьютер не понимает. Но даже и здесь есть загвоздка.
Дело в том, что все данные (и текст, и числа, и полное собрание выступлений Петросяна, напетые в mp3 песни собственного сочинения) - хранятся в компьютере в виде нулей и единиц. В так называемой двоичной системе. Только нули. Только единицы. Весь текст, который вы сейчас читаете, - хранится в памяти и обрабатывается процессором вашего смартфона (планшета или чего там ещё) как последовательный и малопонятный нам набор: 01110100001101...
ТИПЫ ДАННЫХ В PYTHON |
Теперь внимание! Как компьютеру самому понять, какая последовательность из единиц и нулей хранит видео, какая - звук? Какая - текст, какая - числа? Да никак! Он не сможет определить ту или иную цепочку из нулей и единиц как что-то другое, кроме как цепочку из нулей и единиц. Кажущаяся тавтология, но и на самом деле компьютер "что вижу, то пою". "Я человек простой - увидел нули и единицы, воспринял как нули и единицы".
По секрету скажу, что процессору вообще мало что понятно. Ему важно получать биты (эти самые нули и единицы), обрабатывать их по своим правилам и больше ничего не делать и не знать.
Так как объяснить, что 1000001 - это число 65, а не символ "А" и не число один миллион один? И кто будет объяснять?
Пасхалка для программистов
Для начала изучим всего три типа данных:
Запомните их, обязательно запомните! Наизусть.
КЛАССИФИКАЦИЯ ЯЗЫКОВ |
Есть низкоуровневые языки программирования. Есть высокоуровневые. Они отличаются тем, что в высокоуровневых языках рутинные, часто выполняемые операции заменены готовыми командами. Например, функция print(), любезно выводящая на экран нужную информацию, на низкоуровневом языке программирования Ассемблере будет состоять из 4-6 строк (в зависимости от разных условностей). В Python - одна строка. Чувствуете разницу?
|
Высокоуровневые языки делают рутинную работу за нас. С одной стороны это хорошо - не нужно тратить время на написание дополнительного кода. С другой стороны плохо - нет полного контроля над программой. С третьей стороны тоже хорошо - с помощью высокоуровневых языков написать программу, способную поломать компьютер нарушить работу операционной системы практически невозможно.
Мы можем купить в магазине кусок мыла и с помощью этого мыла выстирать всю одежду. Будет долго, местами неприятно, а иногда даже и смешно. Зато мы простираем каждое пятнышко, каждую точечку, проконтролируем весь процесс стирки "от" и "до". Мыло - это низкоуровневая стирка.
Но можно и поберечь себя и купить задорого стиральную машинку. В неё поместим вещи, засыпем порошок и пусть себе стирает. По окончании воспользуемся результатом. А что происходит внутри машинки, что там и в какую сторону крутится, - нас совершенно не волнует. Лишь бы одежда стала чистой! Стиральная машина - это высокоуровневая стирка.
И вновь нельзя искренне ответить на вопрос - какие языки лучше: высокого или низкого уровня? Каждый язык применяется для определённых ситуаций. Например, программировать устройства лучше на Ассемблере: требуется немного памяти, над которой программист получает полный контроль, происходит прямая работа с процессором.
Интерактивные возможности для сайтов, всякие чатики, форумы и социальные сети, лучше писать на PHP. Или Python.
Если есть желание написать свой Counter-Strike с блэк-джеком и ботами - учите C, C++, C# и, для начала, движок Unity.
Да, вы правильно поняли. У каждого языка есть своя специализация. Но вы, изучив один язык, - легко перейдёте на любые другие. По этому поводу не переживайте. Тем более в современном мире Python далеко не последний язык за счёт подключаемых модулей (библиотек). Но это другая история. Сосредоточьтесь на изучении Python, а дальше всё само собой образуется.
ПОЯСНИ ЗА ТИП! |
Python - высокоуровневый язык программирования и он обладает одной интересной особенностью. По мере поступления данных в программу интерпретатор сам определяет, к какому виду данные принадлежат. То есть являются ли строкой, числом или логической переменной. Нам практически не нужно задумываться: как только мы определяем (задаём) данные - Python самостоятельно принимает решение и назначает тип данных.
В других языках немного по-другому. Как только мы вводим данные в программу, то в этом же месте должны указать процессору, что это за данные, - строка, короткое число, длинное число, целое или дробное, логика или ссылка.
Эта интересная особенность Python называется нестрогой типизацией.
|
Тем не менее мы обязательно должны познакомиться с типами данных поближе. Итак, что у нас есть?
str |
Текстовый тип данных отвечает за хранение и обработку только текстовых данных. Текстовые данные - любые данные, выраженные с помощью имеющихся в распоряжении компьютера символов. Это, прежде всего, символы алфавита: А..Я, а..я, A..Z, a..z, цифры 0..9, знаки препинания, спецсимволы и вообще всё, что выражено в таблице кодировки.
Таблица кодировки - специальная таблица, в которой каждому символу назначен свой код. Коды уникальны, и любой символ идентифицируется, прежде всего, по коду.
Полную версию таблицы кодировки можно полюбопытствовать в поисковиках, вашему вниманию представляю лишь часть таблицы кодировки. В ней первые 11 заглавных символов английского и русского алфавита и их коды:
Символ A, код 65 Символ А, код 1105
Символ B, код 66 Символ Б, код 1106
Символ C, код 67 Символ В, код 1107
Символ D, код 68 Символ Г, код 1108
Символ E, код 69 Символ Д, код 1109
Символ F, код 70 Символ Е, код 1110
Символ G, код 71 Символ Ж, код 1111
Символ H, код 72 Символ З, код 1112
Символ I, код 73 Символ И, код 1113
Символ J, код 74 Символ Й, код 1114
Символ K, код 75 Символ К, код 1115
Для таблиц кодировок существуют общемировые стандарты. Поэтому мы можем быть уверены, что отображаемые на нашем устройстве символы точно также отобразятся и на других устройствах.
Даже больше. Символ "А" (латиница) и символ "А" (кириллица) хоть и являются безусловно идентичными по начертанию, но всё равно для компьютера это две разные буквы! |
Какое количество папок "Молоко" можно создать на рабочем столе?
Ответ. Версия 1
Молоко - первая "М" на латинице:
Молоко - первая "о" латинская
Молоко - вторая "о" - латинская
Молоко - третья "о" - латинская
Молоко - первая и вторая "о" - латинские
...
Итого: 16
Если предпоследнюю "к" на кириллице заменять на не очень похожую "k" на латинице - то 32 папки.
Ответ. Версия 2
Текстовые данные обязательно должны быть заключены в парные кавычки. Кавычки могут быть двойными:
"Это текстовые данные"
или одинарными:
'Это тоже текстовые данные'
Главное чтобы открывающая и закрывающая кавычки были одинаковыми. Либо "здесь текст", либо 'здесь текст'.
Как вы думаете, является ли текстовыми данными следующее?
"3.14"
Ответ
Текстовый тип данных поддерживает следующие операции:
Если мы вздумаем делить (/) или вычитать (-) строки на строки или числа, то получим в конечном итоге ошибку. Попробуйте в Python Shell записать:
"Новый Год" / 2
Нажмите Enter. Изучите результат.
int |
Целочисленный тип данных предназначен для хранения только числовых значений целого типа. Размер обрабатываемых данных напрямую зависит от доступной оперативной памяти компьютера.
Целочисленный тип данных поддерживает следующие операции:
/ + - |
10 / 3 10 + 3 10 - 3 |
3.33 13 7 |
|
) |
Не забываем! int работает только с положительными, отрицательными, равными нулю целыми числами.
bool |
Наинтереснейший тип данных, который может принимать только одно из двух логических значений: True (истина) или False (ложь). Только True, либо False, причём значения в Python записываются с заглавных символов.
Обычно в логическую переменную помещается результат логического выражения, полученного с помощью операторов сравнения.
Вы входите в комнату и у вас спрашивают: "Включен ли свет?". На этот вопрос вы можете с лёгкостью ответить "Да" (True) или "Нет" (False), и ваш бинарный (двоичный) ответ легко описать с помощью логической переменной.
Диалог может выглядеть так:
- Свет включен?
- True!
Что вот сейчас произошло? Вам задали вопрос, вы проанализировали ситуацию, посмотрели на люстру или лампу, сравнили её с выключенной и осознали, что в данный момент лампочка светится.
Ключевое слово - сравнили. Компьютер также сравнивает, но только не лампочки, а данные. Результатом сравнения как раз является величина логического типа, то есть либо True, либо False.
|
С помощью следующих операторов можно сравнивать данные. Потренируйтесь в Python Shell, записав, к примеру, 5 > 5. Нажмите Enter и посмотрите на результат.
"A" > "B" |
False |
||
"A" < "B" |
True |
||
"C" >= "E" |
False |
||
"C" <= "C" |
True |
||
"Z" != "Z" |
False |
||
"Z" == "Z" |
True |
Значение True также считается числом 1, а False - числом 0.
Попробуйте:
3 / True
Результат: 3.0
3 / False
Результат: ошибка деления на ноль, "ZeroDivisionError: division by zero".
|
ОБОБЩЕНИЕ |
В Python слегка побольше типов данных, чем здесь рассмотрено. Но пока не нужно кидаться в бой и стараться изучать все. Сначала нужно понять основные принципы и механизмы обработки представленных здесь типов; изучить успеем, не спешите пожалуйста. Уже много можно сделать имея в распоряжении лишь строковой тип данных, целочисленный и логические истину/ложь.
Для строковых (текстовых, символьных) данных можем применять две операции:
Для целочисленных типов данных можем применять следующие операции:
Для получения логического результата имеем право (законом не запрещено) применять сравнения:
Выдохнули! Учить это не требуется. По ходу дела и по мере практики данные операции и правила будут применяться вами интуитивно. Ведь и правда же вы не задумываетесь о том, как пишется знак сложения в записи примера "3 + 5"?
Но пока запомните где взять информацию: в главе "Типы данных". Быть может вам придётся сюда наведываться чаще, чем ожидается!
© 2019-2024 Виктор Трофимов
|