Программирование Python по моим конспектам Лекция 7 (конец вступительной части)

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


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

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

Компьютер может получать данные с помощью разных агрегатов, таких как клавиатура, графические планшеты, и так далее, Ребята, какое железо для ввода данных вы еще знаете?

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

Так вот это все называется принципом ВОВ (ввод-обработка-вывод, а не вордл оф танкс).

И самым простым примером этого самого принципа  будет следующий код.

Программирование Python по моим конспектам Лекция 7 (конец вступительной части) Питон, Программирование, Язык, Длиннопост

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

Первой строкой у нас комментарий, второй строкой мы параметром функции input(), c которой мы знакомились на прошлой лекции передаем строку Name. Таким образом, когда интерпретатор дойдет до этой строки он поймет две вещи

1 Вывести на экран строку Name

2Ждать ввода строки, и после нажатия клавиши ентер и создать обьект с введенным значением, и имя ему будет name (это переменная, не путать с Name). А если уж совсем дотошно говорить, ребята, то переменная Name, указывает на какой то участок памяти, где хранится эта самая введенная строка. О этом мы мы уже говорили ранее. Вспоминаем функцию id().

После того как с второй строкой интерпретатор справился, он переходит к следующей. Где его задача будет вывести с помощью функции print строку "Привет, " и значение, на которое указывает переменная name.

Программирование Python по моим конспектам Лекция 7 (конец вступительной части) Питон, Программирование, Язык, Длиннопост

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

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

Программирование Python по моим конспектам Лекция 7 (конец вступительной части) Питон, Программирование, Язык, Длиннопост
Хороший стиль программирования

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

Программирование Python по моим конспектам Лекция 7 (конец вступительной части) Питон, Программирование, Язык, Длиннопост

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

1) Максимально комментируйте свой код. Либо есть еще такое понятие самодокументации- вот вам пример


hight=input('введите высоту в сантиметрах ')


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


2) Имя переменных мы пишем с маленькой буквы, имя функций и методов  тоже. А имя классов (о них гораздо позже) с большой.

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


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


b=input('b '); q=b*b; print(b,'в квадрате равно',q)


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


Для начала - достаточно. Остальное-позже и мелкими порциями.


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

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

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

Так вот, вернемся к нашим пирогам.


можно выделить три типа ошибок.

Синтаксические ошибки- это противоречия Грамматическим правилам. Они замечаются интерпретатором до того как они исполняются. Пример в студию

Программирование Python по моим конспектам Лекция 7 (конец вступительной части) Питон, Программирование, Язык, Длиннопост

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


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

Программирование Python по моим конспектам Лекция 7 (конец вступительной части) Питон, Программирование, Язык, Длиннопост

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


Семантические ошибки

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

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


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


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



Эта программа создает короткую историю, в которой учавствуете Вы

Как вас зовут?: Петро

В каком месяце вы родились?  Сентябрь

Какой цвет выших волос? Блондин

Где вы  живете? Жмеринка



За окном стоял месяц сентябрь. Солнце светило прямо в глаз, и Петро жмуря глаза, как сцыкливый кот, покинул дом, где он до этого развлекался всю ночь, празднуя свой день рожденья. Однако, когда Петро огляделся, он увидел незнакомую улицу, да и город был чужой. Петро спросил прохожего- ей, уважаемый, а разве это не Жмеринка? На что тот ответил ему- всегда знал, что блондины дебилы. Иди проспись, пьянь.



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

Пример


План поездки

-----------

Цена автобуса 1000

Цена отеля - койкоместо 300

Общая цена тур походов 500

Количество туристов 30


Общая цена поездки группы 10500 баксов

Цена для одного человека 350 баксов


На этом кланяюсь, и желаю успехов.

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

@derBeobachter, я с вами снова немного не соглашусь.
Как заметил @RaZeRok, стиль написания программ в Python прекрасно задокументирован в PEP8 - это единый стандарт оформления программ на Python. Сделано это для того, чтобы любой разработчик мог не отвлекаться при чтении чужого кода на разницу в подходах к написанию.
Всем начинающим - настоятельно рекомендую прочитать, документ переведён на русский язык и исчерпывающе дополнен примерами кода.
Кстати, там же регламентирована и максимальная длина строки (79 символов, чтобы код можно было удобно прочитать из консоли), и то, что не стоит использовать несколько инструкций в одной строке (хотя это вполне допустимо синтаксически).
Использование camel case (стиль именования VotTak или votEdak) в Python применяется только к именам классов. Имена переменных набираются исключительно в snake case (vot_tak).

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

Здрав будь, @derBeobachter, спасибо за урок! (который я чуть не пропустил) :D Я тут быренько состряпал такие вот решения (вроде работают):

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

Здраве бояре, подскажите как в строке удалить пробел между выводимой переменной и статичной строкой тексста?

#print('я знал что',hairColor,'ы'  дебилы)


должно получится например: hairColor="Шатен" ,а выводилось бы "я знал что Шатены дебилы"

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

#derBeobachter продолжение то будет?..

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