derBeobachter

derBeobachter

Я красавец! Очень возможно, что бабушка моя согрешила с водолазом.
Пикабушник
Дата рождения: 09 сентября 1980
поставил 5504 плюса и 2486 минусов
отредактировал 1 пост
проголосовал за 1 редактирование
Награды:
5 лет на Пикабуболее 1000 подписчиков
90К рейтинг 1412 подписчиков 20 подписок 91 пост 20 в горячем

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

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


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


Отвечая на 90% одинаковых вопросов-

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

Я это делаю, потому что мне это нравится.


список предыдущих лекций -



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



Приветствую!

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


Сегодня мы все так же говорим о функциях.

Как мы помним, функция должна предусматривать четко определенное количество аргументов, которые она может принять. Если в параметрах стоит funk(a,b,c), то мы не передадим ей funk(a,b,c,d). Правильно- ибо нехер!

НО!

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

Таким образом родился параметр функции со звездочкой.

Например вот так funk( *args), если кто знает С или С++, простите пОцоны..я знаю...Там это значит немного другое.

Смотрим на пример

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

Я передаю функции любое количество аргументов. В данном случае их 4, но может быть сколько угодно. Когда функция принимает эти эти аргументы, она создает из них кортеж, который мы потом и используем как обычный аргумент. Так что Это ничем не отличается от от того, если бы мы передали функции кортеж.


Ну это не тяжело. Справитесь.

Дальше идут у нас по списку такие звери, как Локальные функции. Сие значит, что в теле одной функции могут быть написаны другие функции. Данные функции видятся только функцией-родителем и не могут быть вызваны "из вне".

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


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

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

Чаще всего встречается Е и так далее.


В данном случае я пишу функцию eng() и ее локальную функцию e(), которая будет считать непосредственно частоту повторения буквы.

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

Итак, что же происходит. Мы передаем строку функции eng(), она, в свою очередь, обрабатывает ее в локальной функции e(), для выявления частоты появления конкретной буквы. Мы узнаем количество переданных букв в строке, затем узнаем ее частоту в процентах и возвращаем все это дело.

Я взял только a, e, o. Для примера этого хватит. Так как нельзя абсолютно точно сказать, что в каждом предложении именно такой будет частота букв как в таблице выше, я расширил диапазон каждой буквы на + - 4%. Впрочем это не особо важно, так как важно понять что такое локальные функции, а не выявление букв в англ языке))

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

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

На этом я бегу.


п.с отпишитесь как там дела с планетами, дабы знать стоит ли давать новые задания

Показать полностью 4

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

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



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



Отвечая на 90% одинаковых вопросов-



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



Я это делаю, потому что мне это нравится.



Список прошлых лекций



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



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

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

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

смотрим глазами ниже не житейскую ситуацию

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

Декларирую я x, который указывает на значение 1

Вывожу его на экран

Затем вызываю функцию, где уже задекларирован еще один x, который тоже выводится на экран и указывает на 2. Но как же так то..один икс, а значения разные. Хм..может в функции x, стал указывать на новое значение?

ща проверим..

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

Дописал после вызова функции еще одну строку, которая должна вывести значение х на экран. И оно, сцуко, снова показывает 1. У вас возник вопрос...но у меня уже есть ответ)

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

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

Есть в питоне две функции globals() locals() которые помогут мне вам все показать. А пока смотрим ниже.

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

Выглядит страшно, но глаза боятся..а руки..тоже боятся.  функции globals() locals() кроме потока ненужной вам инфы показывают пространство, которое видно для того места откуда они вызваны. Если мы посмотрим на глобальное и локальное пространство для главной программы, то узнаем что локальная и глобальная переменная у него одна и это х=1.

А вот у функции совсем по другому. Свою родную функцию x=2 она воспринимает как локальную. А глобальную (которая вне функции) она видит как x=1

И чтоб вообще понятно стало. Вот вам картинка

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

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

А если мы посмотрим на основную программу. То локальное у нее это то, что залито серым, а глобальнее чем она сама у нее ничего и нет. Поэтому x=1 это и глобальная и локальная переменная.


Таким образом мы не можем залезть из серого в белое. См ниже

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

Но можем вылезти из белого в серое.

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

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

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


Однако, не все так сладко. Хоть мы и можем прочитать глобальные переменные в функции, изменить мы их не сможем. Увы.

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

Вот. Ругается интерпритатор.

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

Для этого мы используем команду global. Выглядит это так

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

На выходе  3


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


На сегодня мои полномочия все.

Показать полностью 14

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

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


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


Отвечая на 90% одинаковых вопросов-


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



Я это делаю, потому что мне это нравится.



Список прошлых лекций


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



Всем привет. Как обещал, сегодня мы поговорим о функциях.

Но сначала мы договорим о исключении ошибок.

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

Вот такой пример

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

Обратите внимание на то, что здесь были предвидены две разные ошибки. И на то что присутствует else, который, в прочем работает как обычный else. Т.е если мы не заходим в except, то попадаем в else.


И последнее- finally. Cюда мы попадаем в любом случае. Поэтому прошу обратить внимание на результат выполнения программы. Мы сначала попали в except, а потом в finally из за чего и вывелся пустой список.

Далее мы вводим корректное число, обходим оба try, попадаем в else и в finally, куда мы попадаем в любом случае.

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


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


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


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


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


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




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

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

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


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

Программирование Python по моим конспектам Лекция 10 Питон, Программирование, Лекция, Длиннопост
Нам было не интересно, что происходит внутри функции. Но вот пришло время, когда нам стало интересно. Мы хотим строить свои "заводы"!

Начнем с того, что функции в питоне- это обьект.

итак, вот как выглядит наша функция в природной среде


def function_name(parametr):

инструкции


Состоит функция из головы (первая строка) и тела.

Голова начинается со слова def (от слова define) и названия функции. Имена функций должны состоять из маленьких букв, а слова разделяться символами подчеркивания — это необходимо, чтобы увеличить читабельность. Далее открываются скобочки и туда мы либо пишем параметры либо нет. О этом позже.


Тело функции зачастую начинается с так званного docstring, где мы пишем то, что наша функция делает.

""" функция умножает два числа и возвращает  результат"""

Далее- мы пишем сами инструкции, которые нам стоит исполнить. А вот потом очень важная штука, которая либо есть либо нет в функции. Называется она return

Но о всем по порядку.


Давайте напишем простую функцию.

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

Первая строка-декларируем функцию print_something

вторая- мы пишем то, что функция делает

и  ниже мы саму функцию вызываем.



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

У нас была эта функция и аргументом в ней было 123. Т.е мы эти 123 куда то отправляем. Но куда?

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

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

В теле функции мы прописываем команду- вывести переменную name на экран. После чего действия функции заканчивается.


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

Поэтому мы передаем ей строку, на которую указывает переменная n.

Поэтому мы n делаем аргументом функции  вот так print_name (n)

Иначе говоря мы говорим. Отправь нашу n функции print_name ().

Функцию мы можем выполнять сколько угодно раз.

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

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

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

Збс стрелочки?


Все аналогично, только теперь у нас два параметра и два аргумента.

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

Сейчас нас интересует мистическое return (возвращать).

В данном случае return возвращает строку 'мебель'. А вообще может возвращать что угодно. Даже кортежи, которые в себя включают другие обьекты.


Итак мы отправили два аргумента, получили ответ, и его вывели на экран.


Бывают случаи, когда нам необходимо сделать аргументы по "умолчанию". Вот пример.

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

Я передаю только один аргумент, а второй уже прописан по умолчанию name='user'

Если этот аргумент ничего не примет, он по умолчанию примет значение 'user', а если же мы передадим ему что-либо, то он укажет на то, что мы ему передали.

И последнее на сегодня, но не последнее с функциями.


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

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

Теперь я меняю аргументы местами, и получаем каку.

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

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

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

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

я лично не пользуюсь этим способом, но если вам нравится- пользуйте на здоровье.


С помощью вышесказанного вы уже можете приступить к заданию с прошлой лекции.

Повторю его



Теперь мы немного внесем жизнь в наш космос.

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

Первым пунктом меню было у нас- информация о планете.



Задача такова. При вводе номера планеты (из карты)



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


2.Выводится количество населения планеты и расса, ее заселяющая (аналогично случайносгенерированное название)



3 Выводим Основные ресурсы, которые добывает планета и их количество. Это тоже происходит рандомно. Ресурсы- газ, электричество, еда.



4 Выводим отношение планеты к нам. Хорошее негативное или нейтральное


5 Выводим количество армии



6 выводим краткую историю планеты.



Все эти данные должны быть готовы быть изменены в любой момент.



Советую использовать двухмерный массив(последовательность). Сами выбирайте какой.

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

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


Кстати, названия планет-населений могут вас порадовать. Я вчера норм так поржал со всяких хуянцев уебанцев.


На этом я все.

Показать полностью 18

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

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



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


Отвечая на 90% одинаковых вопросов-


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


Я это делаю, потому что мне это нравится.


Список прошлых лекций



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



Здорова, выжившим после прошлого задания.

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


Долго сказки рассказывать не буду, так что сразу к делу.

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

И вот использует нашу программу Марья Степановна из бухгалтерии.

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

Ага..А кто виноват? А вот я и виноват! "защиту от дурака" никто не отменял.

Ведь когда я программу писал, я же знал, что туда нужно число пихать, а Марья Степановна не знала. Вот вам и ошибка.

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

Вот еще пример. В нашей жизни все збс в случае x/y . Ровно до  тех пор пока у не укажет на ноль, а начальник нам на дверь.

А теперь представте себе, что вы написали текстовый редактор, который крашится из за того, что вы завтыкали нормально алгоритм выдумать.Человек пишет огромный договор о продаже самолета на вашем редакторе... ииии... когда он уже почти готов сохранить- у вас ошибочка ZeroDivisionError или еще чо. А через неделю на вашу фирму сразу падает лавина судебных исков по уплате утраченной выгоды от комнатных бизнесменов. И все- вам пяяясд@

Однако бояться и плакать не стоит. О вас подумали бородатые люди в узких штанах.

Подобные ошибки можно избежать. Встречаем героя программы

try...except

Данный товарищ работает как боженька, который своими ручками вам соломку стилет на то место, куда вы скорее всего упадете. Не верите? Дык я докажу!

Сначала мы разберемся, что это за зверь такой.

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

Утрирую конечно.

В своей полной красе выглядит все дело так


try:

блок команд

except: (тут еще может стоять тип ошибки. Но не обязательно):

что делать в случае ошибки в блоке try


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

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

Это же лучше, чем получать кучу красных матюков на мониторе?

Итак- если содержимой блока try выполняется без ошибок- интерпретатор перепрыгивает except и идет дальше. В противном случае- заходит в except и работает согласно ваших команд.

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

Вот вам пример, когда нам нужно принять целое число.

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

В данном случае я указал тип ожидаемой ошибки ValueError. Если не понимаете откуда я ее взял-вторая картинка предпоследняя строка.

Еще есть такой зверь как try-finall, но с ним погодим. Как обещал- по теории был краток.


А теперь начнем с легких заданий на разминку.


Напишите программу, которая продает билеты в кино. Пользователь вводит возраст.

Если возраст меньше 18, но больше 11 лет- выводится цена в 3 рубля. До 11 лет-бесплатно. Свыше 18-5 рублей.


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


http://ru.wikihow.com/%D0%B2%D1%8B%D1%81%D1%87%D0%B8%D1%82%D...


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

Игра загадывает число от 0 до 100. Ваша задача угадать это число. Если вы загадали слишком большое число- программа должна подсказать о том, что вы ввели число больше чем она загадала, и наоборот. Если угадали- программа выводит поздравления


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

Вводимые данные -

сумма кредита

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

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


Программа высчитывает для каждого года Проценты, фактическая сумма взноса и остаток.


Пример


Подсчет кредита

Сумма кредита в долларах 1000

Проценты в год 6

Годичный возврат 200


2017 Проценты 60 долларов, выплата 140 долларов, остаток 860 долларов

2018 Проценты 51 долларов, выплата 149 долларов, остаток 711 долларов

2019 Проценты 42 долларов, выплата 158 долларов, остаток 553 долларов

2020 Проценты 33 долларов, выплата 167 долларов, остаток 386 долларов

2017 Проценты 23 долларов, выплата 177 долларов, остаток 209 долларов

2017 Проценты 12 долларов, выплата 188 долларов, остаток 21 долларов

Остаток- 21 доллар



Известной  последовательность Улама.

Когда имеется  последовательность (3а+1)

-которая начинается со стартового а

-если а ==1 останавливаем последовательность

-если а четное число, нужно установить а=а/2. В противном случае установите a=3*a+1


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



ну а теперь вернемся к нашему геморрою.

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

У многих из вас получилось заполнить небо случайными планетами. И это похвально!

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

Остальные же, как говорится, с богом)


Теперь мы немного внесем жизнь в наш космос.


Первым пунктом меню было у нас- информация о планете.


Задача такова. При вводе номера планеты (из карты)


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


2.Выводится количество населения планеты и расса, ее заселяющая (аналогично случайносгенерированное название)


3. Выводится расстояние каждой планеты. Типа до земли 100 км, до луны 200


(достаем нашу формулу эвклида).


4 Выводим Основные ресурсы, которые добывает планета и их количество. Это тоже происходит рандомно. Ресурсы- газ, електричество, еда.


5 Выводим Количество населения


6 Выводим отношение планеты к нам. Хорошее негативное или нейтральное


7Выводим количество армии


8 выводим краткую историю планеты.



Все эти данные должны быть готовы быть изменены в любой момент.


Советую использовать двухмерный массив(последовательность). Сами выбирайте какой.


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


На этом я все.

Показать полностью 7

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

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


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

Отвечая на 90% одинаковых вопросов-

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

Я это делаю, потому что мне это нравится.



Привет товарищи. Сегодня я не делал ссылки на старые лекции. Ибо их уже дохрена и они занимают много места. Уж простите


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

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

В этом примере ваш покорный слуга изволил сказать жуткую и несправедливую веСЧ


После этого переменная а автоматически увеличивается на единицу и процесс продолжается пока не мы не достигнем конца последовательности

Это я, видимо, о С++ думал, а писал о питоне. Так что сильно меня не бейте.

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

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



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

А теперь давайте представим себе такую задачу.


x=(a or b) and c



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

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

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

Как мы это можем осуществить? Нам нужен цикл, который будет каждый раз менять значения наших а b c  на 1 и 0. Но у нас 3 переменных, которые каждый раз должны принимать новое значение. А это вам не это. Тут надо бы подумать. Нам нужен такой цикл который бы каждый свой вызов менял значения переменных как в первых трех столбцах. Для решения этой задачи мы можем использовать итерацию в итерации. А в нашем случае интерацию в итерации в итерации))


смотрим

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

А теперь смотрим, что происходит. Основной (внешний  цикл) у нас отвечает за переменную а

при первом витке цикла

1 а у нас указывает на 0

2 переходим к вложенному циклу, который отвечает за b

3 b указывает на 0

4 переходим к вложенному циклу, который отвечает за с

5 с указывает на 0

6 пишем 0 0 0 0

7 !в том же цикле!, который отвечает за с.

8 с указывает на 1

9 пишем  0 0 1 0

10 возвращаемся к основному циклу, который отвечает за b

11 b указывает на 1 (а все еще 0)

12 переходим к вложенному циклу, который отвечает за с

13 с указывает на 0

14 пишем 010 0

и так далее


итого мы имеем- мы не возвращаемся к внешнему циклу пока условия его внутренних циклов не будут исполнены.

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


Для начала давайте разберемся, что это за телка такая Фибаначя.

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

Короче..это мужик.

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


"Человек посадил пару кроликов в загон, окруженный со всех сторон стеной. Сколько пар кроликов за год может произвести на свет эта пара, если известно, что каждый месяц, начиная со второго, каждая пара кроликов производит на свет одну пару?".

Эта задача так озадачила нашу Фибоначу, шо он вывел такую формулу

Программирование Python по моим конспектам Лекция 9.4 Программирование, Питон, Лекция, Длиннопост
В переводе на русский - числа Фибоначчи это


линейная рекуррентная последовательность натуральных чисел, где первое и второе равно единице, а каждое последующее — сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377


Мы же можем посчитать последовательность с помощью простого скрипта

Смотрим ниже

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

И такой результат имеем

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

Давайте теперь разберемся что же происходит.

Начнем мы с двух первых чисел a1 и a2, два наших кролика)

Далее мы выводим их на экран

и в 18-повторениях нашего цикла мы делаем следующее

создаем переменную а, которая в формуле тов.Фибоначчи обозначена как Fn, и которая является следующим членом последовательности

она начинает указывать на сумму двух предыдущих членов последовательности Fn-1 и Fn-2.

Выводим ее на экран.

Смещаемся вправо. Иначе говоря наша старая а1 стала указывать на значение, на которое раньше указывала а2, а последняя же теперь указывает на наш новый член а.


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


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



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


Рассмотрим такой пример. Нужно нам вычислить является ли число простым. Это значит, что оно больше 1 и делится только на 1 и на себя без остатка

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

если 3 строка наши условия удовлетворяет, иначе говоря мы находим делитель числа, то цикл нам больше  не нужен так как своего мы добились. Мы выходим из цикла (а в данном случае и из скрипта) с помощью команды break. Она выбрасывает нас из цикла (я даже стрелочку нарисовал) и дальше интерпретатор следует правилам, которые должны быть исполнены после этого цикла. В нашем случае это выход их программы так как других команд нет.


и последний на сегодня зверь, которого зовут continue


Он более гуманный брат брейка. Он также прерывает цикл, НО не выбрасывает нас их него, а бросает  нас в начало этого цикла.

При условии если

для for цикла интераторная последовательность не исчерпана

для while условие цикла еще выполняется


А вот и программка, что согласные буквы ищет в слове

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

мы ищем каждый символ нашего слова в заданном списке гласных.

Если нашли - работа цикла прерывается и мы идем к началу цикла.Если не нашли-счетчик увеличивается.


В отличии от break из цикла нас не выбрасывает.


То есть - после continue  или break в теле цикла могут находиться другие команды и вообще++11500 строк. Но если у нас нет желания по каким то причинам исполнять их, то мы на наше усмотрение используем continue или break.


Ну и в конце маленькое, но для новичков геморройное задание.

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

Короче задачка такая.

Поле (космос типа) 10 *10 клеток, которое необходимо "заселить" десятью случайными "планетами", которые  каждый раз случайно разбросаны по карте.

При запуске программы каждый раз генерируется новое поле с новым расположением планет.

Пространство не занятое планетой отмечено точкой. Пространство занятое планетой отображается порядковым номером этой.

Ниже поля находится меню. Как на картинке. Функционал меню будем развивать позже, поэтому оставляем пока так.

Два примера запуска программы ниже

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

Подсказки- есть несколько вариантов решения. Либо созданием последовательности из 100 клеток и вывода на экран. Тогда каждая клетка будет иметь свой номер от 0 до 99

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

(0,1)(0,2) и тд., ну и еще другими способами, которые вам больше нравятся.

Естественно вы будете использовать функцию рандома.

Заранее предупреждаю- рандом будет вам создавать иногда две звезды на одну коодинату. Следите за этим.

Все необходимые знания вы найдете в ранних лекциях. Либо в гугле) Если чо- спрашивайте.

Если есть предложения по развитию этого задания- предлагайте, либо делайте сами. Короче делайте хоть что нибудь, иначе, как и я программировать нормально не научитесь)

а я пошел.

Показать полностью 13

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

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



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


Отвечая на 90% одинаковых вопросов-


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


Я это делаю, потому что мне это нравится.



Список предыдущих лекций


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



Привет, заблудшие души. Давно мы питона не гоняли.

Сегодня тема полезная и нужная. А зовут ее итерация. Слово это пришло к нам от древних цивилизаций, который любили вечерком так..за кубком вина из черепа врага поинтерировать. iteratio (lat. повторение)


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


Интерация

Собрать все яблоки с яблони

Команда

взять яблоко

Последовательность

все яблоки на дереве


Интерация

Назови числа от 0 до 3

команда

назови число

Послледоватлеьнось

[1,2,3]


Интерация в питоне происходит с помощью команды for и выглядит так


for элемент последовательности in последовательность:

инструкции


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

Эо звучит сложно. Но сейчас я, как всегда, покажу на кошках.

Вот что было бы, если бы мы не знали что такое интерация.


Задача- вывести все элементы списка на экран.

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

Первая строка-список чисел.

Вторая строка- переменная "счетчик" обновляется

третья строка- пока переменная "счетчик" меньше количества элементов списка:

печатаем элемент списка с индексом равным переменной "счетчику"

Увеличиваем "счетчик" на единицу.

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

Для такой задачи- это плохой пример.

Именно для того чтобы подобного геморроя не было, умные дяди и придумали интерацию.

Смотрим ниже.

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

Ну не красота ли? Было 5 строк и куча алгоритмов, вместо этого три примитивные строки.

Итак. Что же происходит. В переводе на русский.

Для элемента последовательности а, который находится в последовательности  col

напечатай элимент а.

После этого переменная а автоматически увеличивается на единицу и процесс продолжается пока не мы не достигнем конца последовательности.

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


Вот еще так можно


Задача- вывести на экран квадраты элементов последовательности

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

Задача- Разделить пробелами слово "пикабу"

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

Если же мы хотим провести цикл определенное количество раз, поможет нам в этом питон с помощью функции range(n), которая создает range -Обьект, который состоит из последовательности чисел от 0 до n-1

Таким образом с помощью функции range(n) мы декларируем n повторений цикла

Смотрим ниже

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

функция range() может даже несколько аргументов принимать. К примеру range(старт, стоп). Таким образом наш range обьект станет списком с цифрами от старт до стоп-1


Вспоминаем нашу Unicode таблицу- вот она

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

Первый символ там - пробел. Потому там пусто.


Есть еще один финт- range(старт, стоп, шаг)


тут даже объяснять не нужно. Те же яйца, что в примере выше, но с заданным шагом

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

Ну и на закуску. Задача. Кстати, именно эта задача, хоть она и одна из самых легких, стала мой любимейшей. Правда, не знаю почему..но вот факт.

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


Итак дла задания необходимо создать списки.

Один для оси x, один для оси y, и один для оси z. Каждый из списков должен принять максимум N элиментов.

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

При запуске программы списки должны быть автоматически заполнены случайными числами, которые находятся в промежутке между - 500 до +500, в итоге вы должны получить N трехмерных точек в пространстве. Звучит сложно, выглядит так

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

Подсказка- случайные числа генерируются с помощью модуля

random


числа от -500 до 500 генерируются так

import random

random.randint(-500,500))


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

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

Короче..просили задания сложнее- получите задания сложнее)

Удачи, короч

Показать полностью 13

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

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



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

Отвечая на 90% одинаковых вопросов-

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

Я это делаю, потому что мне это нравится.



Список предыдущих лекций



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...


http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



Привет, товарищи, не знаю чем вас так удивил прошлый пост, ибо, по моему мнению, он был один из самых унылых, однако набежало аж +120 подписчиков. Это наталкивает меня на мысль, что все посты должны быть такими же унылыми как прошлый.

Да несцы, меченый, я пошутил.

Блеаць..говорила мама, что с шутками у меня так себе..


ладно. Это все присказка, а сказка впереди.

Сегодня мы поговорим о циклах. @Dantev специально как ты просил)

Первый наш клиент называется на разных языках по разному..одни называют его "ПОКА", другие "solange", третьи  говорят "في حين" ну а пиндосы не заморачивались и назвали его словом WHILE.

Очень хорошее слово. В жизни- ну ваще не заменимое. К примеру-


-не быкуй ПОКА не подкачался

или там..

-пей ПОКА она не стала красивой



Слово ПОКА решает наши  жизни, товарищи!! Оно, блеать, руководит парадом!

Давайте теперь подробнее рассорим первый пример.


-Я накачан?

-Нет

-Качаюсь

-Я накачан?

-Нет

-Качаюсь

-я накачан

-Да

-"ей йоопта, пацанчиг, иди сюдаа"


Второй пример


Красивая баба?

Страшная

Бухаю

Красивая баба?

Страшная

Бухаю

Красивая баба?

БАгиня!!

"выходи за меня!"


Что обедняет это все, кроме того, что это сраный бред? Правильно! Мы повторяем одно и тоже действие ПОКА не будет достигнуто условие. Это, поцоны, и есть цикл. Иногда цикл - есть зло. Например если мы плохие программисты или тупицы.

ВОт яркий пример


гладь кошку пока она зверь


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


Итак..это все прелюдия была.


Итак в питоне, как и в нашей, серой жизни, в циклах есть условие и инструкция.

Выглядит так


while условие:

инструкция  #не забываем о четырех пробелах


А теперь я покажу как все это работает на практике. Начнем с плохого примера. С той самой кошки.

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

Условие будет выполняться бесконечно. И вот на мониторе мы уведем такое чудо

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

И так бесконечно.


А вот и случай, когда нам такой цикл пригодится. Пишем программу которая принимает числа от 1 до 10, если число не входит в эти рамки- программа проявляет беспокойство по этому поводу.


Сначала я покажу, потом объясню.

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

Первая строка- приглашение.

Вторая строка очень важна. Пока условие истинно, а истинно оно всегда, ибо True. Выполняем инструкции. Иначе говоря- выполняем бесконечно. Первая строка инструкции- принимаем значение числа. Вторая- сравниваем с условием - должно быть либо равно или больше единицы но меньше или равно десяти. Если все ок переходим к оператору break. Вот оно что!! это та самая панацея, которая выбрасывает нас из бесконечного цыкла. Без нее мы бы там вечно вертелись. Если же наше число не удовлетворяет это условие мы ессно не попадаем на break, а идем к else,  и цикл запускается заново.

А теперь пример более толковый.


Сейчас мы будем определять площадь разных треугольников до тех пор пока это нам не надоест.

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

В первой строке мы просто выводим что то типа приветствия

За ней мы объявляем переменную, которая будет нашим условием и по умолчанию она указывает на строку "да"

Далее начинается условие цикла. Пока да- исполняй все, что внутри. В противном случае- не заходи в цикл.

В нашем случае переменная указывает на да. Значит мы в цикл заходим. Две первые строки инструкций цикла мы получаем длину и высоту прямоугольника. Третья строка- получаем площадь прямоугольника, которая получает имя vol. Далее мы выводим на экран наш результат и спрашиваем продолжить ли. На наш ответ начинает указывать ранеезадекларированная переменная ans, та самая, которая по умолчанию "да".

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

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

Вот так, быть может, станет понятнее

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

На сегодня мои полномочия все.

Показать полностью 6

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

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


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



Исправления и замечания приветствуются.


Список предыдущих лекций



http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...

http://pikabu.ru/story/programmirovanie_python_po_moim_konsp...



Здоров, потерялся я тут немного со своими лекциями, однако збс, что этого никто не заметил.

Сегодня поговорим о важнецкой теме. Вот такой важной, шо аж ваще. Без  нее дела не будет. Крест на пузе- дела не будет!!

Сегодня мы поговорим о операторах разветвления. Ага. Разветвление-это вам не математика- тут придется думать!

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

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

Это самый яркий пример разветвления в нашей скучной, серой жизни. Ключевое слово тут-ЕСЛИ. Иными словами есть условие, и ЕСЛИ оно исполнено- наступает действие.

В питоне тоже есть свои ЕСЛИ, которые назвали в честь слова бусурманского if (если. пинд.яз)

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


if условие :

инструкция


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

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

А вот вам пока мелкий примерчик. Программка принимает число, если число отрицательное- выводим его положительный эквивалент. Если положительное- не делаем ничего.

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

Теперь разбор построчно. Первая строка- переменная x начинает указывать на значение равное введенному нами параметру в целочисленном формате.

вторая строка. проверяем соответствует ли наш х условию. Если значение в скобках истинно - интерпретатор заходит в раздел "инструкция" и исполняет его. Если нет он его перепрыгивает и сразу переходит к инструкции print.


Сумрачный гений не остановился на одном ифе и выдумал еще одну полезную штукенцию, которою зовут ЭЛСЭ. else (иначе. пинд.яз). В питоне выглядит так


if условие :

инструкция

else:

инструкция


Работает схема очень похоже на if, но с одним нюансом. Если условия исполнено- переходим к инструкции if. В противном случае переходим к инструкции else-

Создаем пример программы, которая продает билеты в кино. Для детей до 7 лет и пожилых людей (свыше 65 лет)- вход три рубля. Остальным - пять рублей.

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

И последний зверь в нашем зоопарке зовется elif. Это как внебрачная дочь else и if.

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

ээээээээммммммммм....во! автомат продает разноцветные жвачки, которые по разному стоят.

Говнокодим же ниже!

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

выглядит как говно. Слишком много условий в условиях. Именно для таких случаев и изобрели elif.

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


if условие :

инструкция

elif:

инструкция

elif:

инструкция

elif:

инструкция


Пока все выглядит не очень понятно. Но когда я модифицирую программку выше, все станет понятней. Смотрим

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

Как минимум выглядит не так страшно и более логично. Разбор построчно.

Бублэ принимает строку.  Это понятно.

Первый иф- проверка условия, если условие истинно- пишем цену в рубль. Конец программы. Если не истенно - идем к строке elif ИНАЧЕЕСЛИ. Если и это условие условие не выполнено- идем к следующему и так далее.

последний else- это так званная "защита от дурака". Ведь кто знает что введет пользователь. Да мы и сами знаем какое слово из трех букв  вы введете туда однажды. Для таких случаев и работает последняя строка.

На сегодня мои полномочия все. Монолог окончен

Показать полностью 4
Отличная работа, все прочитано!