Программирование Python по моим конспектам Лекция 3

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



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

Учитывая отсутствия вопросов, у меня возникает три мысли..либо я накаркал о том, что мои уроки заставляют выйти в окно, либо всем просто похер на мою писанину (что меня устроило бы в большей степени), либо вам все понятно (во что я не верю, ибо мне самому мои мемуары не понятны)

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

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


Сегодня, мой дорогой друг, или маловероятная подруга, мы поговорим о таком диве дивном как Имена.

Рассмотрим такой случай

Программирование Python по моим конспектам Лекция 3 Питон, Программирование, Лекция, Длиннопост

Видим мы тут обьект со значением "1"+ обьект со значением "3". А следующая строчка- это сумма. А сейчас залезем в .опу без мыла. Ну вот вроде все супер. Все работает. Однако. Есть один нюанс. Эти оба объекта имеют свой тип, свой id, но имя у них нет (совсем как у меня на работе..если не считать "эй ты").  А в следующем примере мы уже даем имя нашим подопытным объектам.

Программирование Python по моим конспектам Лекция 3 Питон, Программирование, Лекция, Длиннопост

Тут мы уже начинаем чувствовать себя кулхацкерами. Ибо на экране появляются первые непонятки, хотя, все очень просто.  В самом деле, мы просто присвоили нашим объектам со значениями 1 и 3 имена. object1 и object2 соответственно. Еще в  некоторых селениях  называют эти имена Переменными.

Как вы ведите из третьей строки- с переменными можно творить то же самое, что и с объектами без имени.

Ну и как всегда в таких случаях, вселенная диктует свои правила. А именно- нельзя просто так взять и назвать обьект так как мы того хотим. Другими словами, для названия переменной  есть свои правила. Они очень просты-

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

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


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

А теперь смотрим как это работает. Вот есть у нас завод. Но что ему нужно, чтобы работать? Ну кроме работников и надсмотрщика с плетью.

Заводу нужен материал. Пусть это будут у нас доски. Так вот. Получаем такую картинку.

Программирование Python по моим конспектам Лекция 3 Питон, Программирование, Лекция, Длиннопост

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

Это функции type и id. В прошлой лекции, скорее всего было не понятно как это работает, но сейчас мы немного приблизимся к разгадке. Возьмем к примеру функцию type. Мы хотели узнать какой тип данных будет у числа 123. Для этого мы брали нашу функцию type, открывали скобочки после нее, выходило так type(), а внутри скобочек уже и писали наши аргументы (дрова для завода). Выходило так type(123). Другими словами, заводу с именем type, мы отправили материал в виде числа 123, и мы знаем что в ответ завод дает нам название типа данных. Либо это будет цело число,  либо строка, либо число с запятой и тд.

Нам не интересно, что происходит внутри функции. Нам в данном случае интересен результат.

А теперь обобщаем это все для наглядности.

Программирование Python по моим конспектам Лекция 3 Питон, Программирование, Лекция, Длиннопост

Напоминает наш завод? То то же.

А сейчас, ну чтоб ваще понятно стало. Мы еще на одну функцию посмотрим. Называется она min()

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

К примеру min(10,5,3,6,9)

Программирование Python по моим конспектам Лекция 3 Питон, Программирование, Лекция, Длиннопост
Программирование Python по моим конспектам Лекция 3 Питон, Программирование, Лекция, Длиннопост

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


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

Все дело в том, мой друг, и маловероятная подруга, что в самом питоне уже встроены тонны стандартных функций. Та же функция min() к примеру. И вот сидели как то бородатые дядьки в узких штанах и думали..вот у нас уже десятки тысяч функций..можно и запутаться в них. А давайте мы все функции сгруппируем. Например математические функции будут находится в группе math, а функции работы со временем пусть будут в группе time. И решили эти бородатые дядьки, чокаясь стаканами со смузи, назвать эти группы модулями. И для того чтобы воспользоваться какой либо функций из модулей, решили сначала этот модуль импортировать (иначе  сказать, "дорогой интерпретатор, в данной программе, я бы хотел использовать функции из модуля "time", к примеру).

Выглядит это так

import modulname или так from modulname import*

или если нам конкретная функция нужна

from modulename import functionsname.


вот пример вам. Из модуля math, мы импортируем все функции, но используем только лишь функцию получения факториала. Для тех, кто не знает что такое факториал-

вот пример получения факториала из 6 (!- это знак факториала)

6!=1*2*3*4*5*6=720


В примере я попробую получить факториал из 10

Программирование Python по моим конспектам Лекция 3 Питон, Программирование, Лекция, Длиннопост

А теперь немного подробнее. Я подключил модуль math в первой строке. Во второй строке я в модуле math получаю доступ к находящейся в ней функции factorial c  помощью точки. Пока этого достаточно. Ведь это только вступление. Мы еще будем о этом говорить.


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

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

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Спасибо за урок! :D

Есть вопросы:

1. Будет ли верным присвоить переменной имя, например: a1=3 или a_1=3? Или я буду найден по айпи? :)

2. Вот замутим мы новую функцию, которая чёнить делает. Можно ли её потом вызвать в нужном месте? Чтобы заново одни и те же руны не высекать. Ну, типа, эдакий переносной завод, который один на всё Поволжье.

З.Ы. Как будет выглядеть наш хелоуворд? Блоками, или высокоуровневая челобитная? =))

раскрыть ветку (6)
2
Автор поста оценил этот комментарий
Всегда пожалуйста

1 Оба варианта верны. Главное не начинай название переменной с цифры и не пиши русские слова трансилитом. По айпи все равно найду. Для профилактики

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

3 наш хелоуворд будет выглядеть так print("Hello world)".

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

1. Если в коде часть строк будет совпадать с именами переменных, не будет ли ошибки? Например: имя переменной "tor" и строка "factorial" (или любые подобные совпадения). И да, я под диван спрячусь :)

2. Функцию тоже можно обозвать какнить? Например: fnc_rise

3. Я имею ввиду способ написания скриптов и т.д. (внешний вид всего кода)

раскрыть ветку (4)
1
Автор поста оценил этот комментарий
1 Это будет ошибкой (если полностью оператор совпадает, а не его часть. Другими словами "tor" и строка "factorial"- это не ошибка), однако, я еще не встречал людей, которые так делают. Хотя..всякое бывает

2 Забегаете вперед. Еще будем о этом говорить. У нас будет тема "функции". Сегодня мы лишь пытались понять о чем говорить будем. А вообще да- функции можно называть как угодно.

3 я не совсем понял вопрос. Если не ошибаюсь, блоки- это из html. Ну для примера, код выглядит примерно так

Иллюстрация к комментарию
раскрыть ветку (3)
Автор поста оценил этот комментарий

1. Понял.

2. Буду ждать продолжения. Хотя есть еще вопрос =)

3. Если я не ошибаюсь - это называется высокоуровневая конструкция?

т.е. пишем весь код в одном болке, как в Вашем примере. Это ежели я не совсем дебил ((

А вот низкоуровневая конструкция (в несколько блоков):


a1=3

a2=-6

a3=1.3

a4="shitr"

a5="wood"


block_1:

if (a5)привезли

else return


block_3:

if завод_построен

then пихаем(a5)в_пилораму

jump_to: block_6


block6:

wait 2000 ms

начинаем_обработку(a5)

jump_to: block_7


block_7:

прочая_дичь


З.Ы. Эт не питон, эт просто пример :D

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Между высокоуровневым и низкоуровневым языком (соответственно и конструкцией) очень маленькая граница. ОДнако питон- это высокоуровневый язык, если его сравнить, скажем, с ассемблером.

Если мы сравним Си и питон, то си покажется более низкоуровневым. Однако он есть высокоуровневый. Ну а если блоки нравятся- можно и блоками писать) Просто между строками кода ставя пробелы

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

З.Ы. Сопсна, мне разницы нет, какую конструкцию изучать; главное - быстродействие и оптимизация =D

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку