Программирование 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 Питон, Программирование, Языки программирования, Длиннопост

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

Удачи, короч