Программирование 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 выводим краткую историю планеты.



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


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


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


На этом я все.

Автор поста оценил этот комментарий

@derBeobachter, А почему так обрывать лекцию, где блок else, где отлов нескольких видов ошибок в одном блоке, где получение экземпляра ошибки, и с чего это finally вдруг монстр?


Тема ведь монолитная, ещё ни разу не встречал чтобы её дробили.

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

В догонку, пока не ушел .....

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

Ну это пока первая часть, работать надо))))) Вроде работает. Спасибо за задания))

Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку
Автор поста оценил этот комментарий
Ты бы выложил лекции в pdf или doc, удобнее было бы читать
раскрыть ветку