К основному контенту

Назначаем конусу материал.

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

Основные операторы программирования.

Мы с вами уже написали свою первую программу, но это всего лишь простая инструкция, последовательно исполняемая компьютером. Для того чтобы добавить возможность выбора материала нам придется окунуться в мир настоящего программирования и освоить основополагающие операторы, которые позволят нам строить разветвленные алгоритмы для решения наших задач. Мы уже сможем дать компьютеру возможность принимать решения самостоятельно, исходя из полученных извне или вычисленных в теле программы данных. Мы заставим машину работать вместо нас, но насколько хорошо она это будет делать, всецело зависит от нас.
Основной операцией в программировании является проверка условия. В Python, как и во многих других языках программирования, за эту операцию отвечает оператор if(от англ. if – «если»). Оператор if проверяет истинность передаваемых ему объектов или выражений, после чего, в зависимости от истинности анализируемого объекта исполняет заданную инструкцию. В самом простом случае код с оператором if будет выглядеть примерно так:
if 5>1:
    print("Это правда")
В данном примере проверяется истинность выражения и, если оно истинно, то в консоль будет выведено сообщение "Это правда". В случае ложности проверяемого выражения ничего дальше не произойдет. Однако Python даёт более широкие возможности при проверке условий. Приведённую выше проверку можно дополнить конструкцией, производящей действие и в случае ложности проверяемого выражения. Этому служит оператор else("иначе" - англ.). Перепишем код следующим образом:
if 1 < 5:
print("Это правда")
else:
print("Это ложь")
Теперь программа срабатывает и в случае ложности проверяемого выражения. Но это ещё не всё, с помощью оператора elif можно вводить проверку дополнительных условий, но об этом поговорим чуть позже.
Теперь немного отвлечемся на синтаксис языка. Вы наверное обратили внимание на то, что в коде появились отступы и двоеточия. Это элементы необходимые для организации языка - подчинённое выражение отделяется двоеточием и табуляцией в следующей строке. На самом деле, подчинённое выражение можно написать после двоеточия в той же строке:
if x>y: print('ok')
Но такая запись делает код плохо читаемым, поэтому редко используется.
В Питоне нет скобок в качестве структурообразующих элементов, как в языках ЛИСП или Си, в которых табуляцией и размещением на разных строках дополнительно форматируют код для лучшей читаемости. Возможно создатель Питон, Гвидо Ван Россум решил, что от скобок можно вовсе отказаться, оставив форматирование табуляцией как необходимый элемент структуры языка.
Следующим столпом программирования является оператор цикла, в Питон их два – for и while, первый служит для перебора списков с известным количеством элементов, второй – перебирает элементы до тех пор, пока выполняется условие. Напишем следующий простой код:
for i in [1,2,3]:
print(i)
После запуска получим результат:
1
2
3
Оператор цикла последовательно перебрал все элементы списка и вывел их на печать. Об операторе while поговорим позже. Теперь вернемся к нашему конусу.
Список плотностей материалов.
Предположим, что наш конус могут изготовить из трех материалов: дерево, бетон, сталь. Создадим два списка, первый из названий материалов, второй из значений их плотностей в килограмм на кубический метр. попробуем написать код, который будет по материалу выдавать его плотность:
mat_list = ['дерево', 'бетон', 'сталь']
plot_list = [700, 2200, 7850]
mat = 'сталь'
for i in range(len(mat_list)):
if mat_list[i] == mat:
print(plot_list[i])
Получилось довольно сложно. Появилось много нового, будем разбираться. С созданием списков и принятием материала «сталь» наверное все ясно, идем дальше: len(mat_list) - функция len измеряет размер списка, в данном случае оба списка одинакового размера и неважно который измерять;
range(len(mat_list)) – функция range создает последовательность целых чисел;
mat_list[i] – таким образом извлекаются элементы из списка;
if mat_list[i] == mat: - сравнение принятого материала с материалами из списка(при совпадении на печать выводится плотность материала).
Код можно существенно упростить, если объединить два исходных списка в один:
mat_list = [['дерево',700],['бетон',2200],['сталь',7850]]
mat = 'сталь'
for i in mat_list:
if i[0] == mat:
print(i[1])
Мы создали список из подсписков, в которых сразу содержатся названия и плотности, i[0], i[1] – так мы получаем первый и второй элементы подсписков. Четко запомните, что нумерация элементов списков в Питон начинается с нуля. Для материалов и их плотностей можно было создать словарь, но и этот вопрос отложим на потом.
Перепишем расчет конуса:
###Расчет объема и массы конуса
from math import pi #импорт числа «пи»
mat_list = [['дерево',700],['бетон',2200],['сталь',7850]]
R = float(input(‘Введите радиус основания: ’)) #радиус основания конуса
H = float(input(‘Введите высоту конуса: ’)) #высота конуса
mat = input(‘Введите материал конуса(дерево, бетон или сталь): ’) #материал конуса
V = pi*R**2*H/3 #расчет объема конуса
plot = 0
for i in mat_list:
if i[0] == mat:
plot = i[1]
print(‘Объем конуса равен: ’,V, ’м.куб’)
print(‘Масса конуса равна: ’,V*plot, ‘кг’)
Что изменилось? Да почти ничего. Материал получаем через input, не преобразовывая вводимую информацию. Создаем переменную plot и сразу присваиваем ей значение 0, которое потом изменяется на необходимое. Массу вычисляем сразу внутри функции вывода.
Только что мы создали свою первую базу данных и это очень хорошо – уметь создавать базы данных, но это не всегда нужно. Человечество за свою историю насоздавало несметное количество баз данных и нам крайне важно научится ими пользоваться. В дальнейшем я покажу, как можно извлекать информацию из файлов, хранящихся на вашем компьютере, а также научу вас получать данные из интернета. Например подключимся к справочнику по свойствам материалов и сможем всегда быстро узнать сколько будет весить наш конус, если выточить его из эбонита или гетинакса.

Комментарии

Популярные сообщения из этого блога

Pyth Anykeyeff PYTHON для инженеров Книга для широкого круга читателей, от любознательных школьников до неунывающих пенсионеров.  ПРЕДИСЛОВИЕ. Зачем инженеру две змеи? Здравствуй уважаемый читатель. Надеюсь, эта книга станет для тебя источником полезных знаний и ты, вслед за мной, ощутишь радость избавления от изнуряющей, отупляющей рутины. Идея написания этой книги витала вокруг меня последние пару лет, но не находилось катализатора. И вот, в одном из разговоров с моим коллегой и другом, Вадимом, им была высказана мысль написания мной книги о Питоне для инженеров. Мысль прижилась, за что я выражаю Вадиму особую благодарность. Книг о Питоне сегодня написано множество, некоторые из них переведены на русский язык, но это почти все учебники по языку, я же хотел написать не учебник по языку программирования, а руководство, как применить программирование там, где его либо вовсе не применяли, либо применяли крайне редко. Программирование вошло в нашу жизнь давно и
Поход за модулями. Как я уже писал выше, сегодня в свободном доступе имеются сотни тысяч модулей Питон. Среди них мы можем обнаружить полезные для нашей работы, это математические и геометрические модули, модули для анализа данных и построения трехмерных тел, dxf, pdf, docx, xlsx файлов и т. д. Список крайне обширен. Основным местом хранения модулей является сайт Pypi.org, на нем хранится около 150 тыс. различных проектов, мы тоже будем пользоваться этим сайтом, но прежде немного поговорим о дистрибутивах Питона и средах разработки. Питон, который мы установили, имеет минимальный набор модулей. Однако есть другие дистрибутивы, например Anaconda, совершенно безвозмездно поддерживаемый и постоянно обновляемый мировым научным сообществом. Анаконда устанавливается с сотнями модулей, необходимых для научно-исследовательской деятельности, кроме того устанавливаются дополнительные инструменты, как Спайдер, интерактивный Питон и Юпитер Ноутбук, они делают программирование гораздо удобным и