Полная версия
Полезные программы Python-3. Книга третья
Введение
Книга третья.
Инженер конструктор отдела гл.механика Гаврилов Сергей Фёдорович написал эту книгу для начинающих программистов, желающих начать программировать на языке Python 3. Книга будет полезна для студентов механиков и для конструкторов механиков. Данная книга содержит листинги – набор небольших рабочих программ облегчающих расчеты встречающиеся в практической работе цехового конструктора. Листинги выполнены как есть, без сокращений, и после копирования готовы к работе. Предлагаемые в книге расчеты существенно экономят время и уменьшают вероятность ошибок. Все программы проверены и постоянно используются в работе конструктора механика. Листинги программ снабжены пояснениями. Листинги удобно использовать в качестве готовых блоков для вновь разрабатываемых программ. Для практического применения листингов программ проверьте – установлен ли на вашем компьютере Python 3.4. или более старшая версия Python 3.8..Python 3.4 распространяется свободно и бесплатно – например на сайте https://soft-file.ru/python/ Перед скачиванием исходника Python 3.4 проверьте разрядность вашей ЭВМ. Посмотрите вкладку – Компьютер – Свойства системы. Бывают 32 разрядные и 64 разрядные системы. Для каждой системы свой Python 3.4..
Примечание
Программы написаны для Python 3.4 и более новых версий. На Python 2 программы работать не будут, так как в Python 3.4 написание команд отличается от Python 2.
В программе на любом языке очень важен синтаксис – порядок написания символов в строке.
Малейшая ошибка, которую человек даже не заметит, – ЭВМ замечает и отказывается исполнять программу. Поэтому проще копировать блоки уже работающих программ в свою программу, при необходимости, подправить готовые блоки легче, чем писать блок заново – так будет меньше ошибок в программе и экономится время.
Программа в Python состоит из строк, написанных в простом текстовом редакторе.
Текстовый редактор должен быть именно простым, к примеру Блокнот. Редактор Microsoft Word не годится потому, что он вставляет в строку невидимые служебные символы, которые, искажают команды Python и программа отказывается работать. Если листинг программы вы скачали в формате «.doc » или подобном – следует создать пустой текстовый файл в программе « Блокнот » – выделить и скопировать листинг из файла «.doc » и вставить в пустой текстовый файл « Блокнота » с расширением «.txt » и сохранить его с именем программы. Затем открыть этот файл и сохранить уже с расширением «.py ». Вам будут нужны оба этих файла.
Важно, строки программы должны начинаться без пробела точно с начала строки.
Если в программе имеются логические операторы, например while или for, то за таким оператором следуют строки одного или нескольких блоков. Блоки выполняются программой, или пропускаются без исполнения, в зависимости от условия в логическом операторе.
Блоки отделяются от основной программы пробелами в начале строки. Обычно в начале строки блока ставят четыре пробела. Число пробелов в начале строки – важная величина.
Сама программа начинается со стороки « # -*– coding: cp1251 -*– » и заканчивается строкой « # .... Конец листинга программы ..... ». Копируя листинг в файл .txt – надо копировать только программу, любой текст до тела программы и после тела программы даст сбой в работе.
Если в компьютере Python 3.4 установлен правильно, то при двойном клике мышью на файле с расширением “.py ”. программа начнет исполнятся. Если программа стопорится или вылетает – Запускаем файл редактора программы « IDLE( Python GUI) » в этом редакторе щелкаем левой кнопкой мыши на – File – затем Open. В выпавшем меню находим свой файл, выделяем его – щелкаем – Открыть. На экран выводится листинг вашего файла с выделением цветом элементов команд. Находим колонку – Run- щелкнув – открываем выпадающее меню и щелкаем на – Run Module F5 – Ваша программа начинает выполняться и останавливается на месте ошибки. Иногда она останавливается на следующей за ошибкой команде. Выводится комментарий к ошибке на английском.
В некоторых случаях помогает удаление строки в начале программы
« # -*– coding: cp1251 -*– » и программа заработает. Иногда помогает удалить конфликтную строку и забить ее вновь в текстовом редакторе.
« Программа редактор « IDLE( Python GUI) » идет в комплекте с программой Python 3.4.. и служит для нахождения ошибок в разрабатываемой программе.
При верстке книги к печати « умные программы » что-то убирают, а что-то добавляют, искажая оригинал. Для программы маленькие буквы и большие буквы – это разные буквы, а « умные программы » при верстке в начале строки бывает, что заменяют маленькую букву большой или меняет форму ковычек – программа вылетает.
К примеру при верстке удаляются все « лишние» пробелы. Скопировав листинг программы в «Блокноте» в формате «.txt» необходимо восстановить утраченные пробелы. Перед знаком # расположенным после команды надо добавить два пробела. Строка коментариев после значка # не должна переносится на следующую строку. В блоках- там, где блок выделяется пробелами, перед строками блока будет написана фраза: # Далее Cдвиг – четыре пробела в начале каждой строки. Соответственно в листинг ставим четыре пробела в начало каждой строки. Там, где блок закончился, написано: # Далее Конец Cдвига – четыре пробела в начале каждой строки – и строки начинаются без пробелов в начале строки. Иногда меняется вид ковычек – это тоже не дает работать программе – искать такие ошибки лучше в «IDLE( Python GUI)». Часть програм из книги первой и из книги второй в этой книге повторяются – это программы, часто применяемые в работе.
Написание чисел с дробной десятичной частью.
При вводе числа с дробной частью, необходимо отделять дробную часть от целой части числа точкой. Если части числа разделить запятой – программа вылетает без предупреждения.
Величины углов для расчета в программе необходимо задавать в радианах. Если программа в результат расчета выводит величину угла – то он выводится в радианах. Для человека ответ на экран удобнее выводить в градусах – при выводе на экран радианы програмно переводят в градусы. При вводе угловых величин- их обычно вводят в градусах и, перед подачей в расчетную часть программы, переводят програмно в радианы.
Написание комментариев.
Значок # предваряет начало комментариев. То, что следует за значком программа просто пропускает, переходя на следующую строку. Комментарий программист пишет себе для справки,чтобы потом ему или другому программисту было легче разобраться в работе программы.
Листинги программ
:
Линейная интерполяция
Линейную интерполяцию применяем для определения значения коэффициента находящегося между двемя табличными значениями.
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математич модуль
# Эти первые две строки листинга определяют таблицу кодировки символов
# и подключают библиотеку для математических расчетов.
# Эти две строки, точно без изменения, применяют во всех листингах программ.
uu=” “ # Далее идет вывод на экран заголовка программы.
print (uu)
print (uu)
u=" Расчет линейной интерполяции "
print (u)
print (uu)
# Далее вводим в программу исходные данные для расчета.
print (uu)
u=" Введите X1 "
print (u)
print (uu)
x1=0.00000000
x1=input( ) # Вводим число
x1=float(x1) # Принудительно в вещественное число
print (uu)
u=" Введите X2 "
print (u)
print (uu)
x2=0.00000000
x2=input( ) # Вводим число
x2=float(x2) # Принудительно в вещественное число
print (uu)
u=" Введите Xx "
print (u)
print (uu)
xx=0.00000000
xx=input( ) # Вводим число
xx=float(xx) # Принудительно в вещественное число
print (uu)
u=" ........................................................................ "
print (u)
print (uu)
u=" Введите Y1 "
print (u)
print (uu)
y1=0.00000000
y1=input( ) # Вводим число
y1=float(y1) # Принудительно в вещественное число
print (uu)
u=" Введите Y2 "
print (u)
print (uu)
y2=0.00000000
y2=input( ) # Вводим число
y2=float(y2) # Принудительно в вещественное число
# Далее идет расчет по формуле..
yx=(((y2-y1)*(xx-x1))/(x2-x1))+y1
# Далее выводится на экран результат расчета
u=" ........................................................................ "
print (u)
print (u)
print (uu)
print (uu)
u=" X1 = ", x1," Y1 = ",y1," "
print (u)
print (uu)
u=" X2 = ", x2," Y2 = ",y2," "
print (u)
print (uu)
u=" Xx = ", xx," Yx = ",yx," "
print (u)
print (uu)
u=" ..... ..... ..... ..... ..... ...... ...... "
print (u)
print (u)
print (uu)
print (uu)
input( ) # Ожидание нажима Ентер
# Далее делаем еще один расчет на тех же исходных данных и выводим результаты.
Pii=math.pi # Вытащили число " Пи " и поместили в переменную Pii …
cc=((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))
c=math.sqrt(cc) # Квадратный корень из " cc "
cs=str(c) # Преобразуем число в строку
u=" Длина линии x1;y1 – x2;y2 = "+cs
print (uu)
print (u)
a=(y2-y1)/(x2-x1)
aur=math.atan(a) # Угол aur в радианах через арс тангенс
au=aur*180/Pii # Угол au в градусах ( переводим ).
aus=str(au) # Преобразуем число в строку
u=" Угол линии x1;y1 – x2;y2 с осью Х = "+aus+" градус "
print (uu) # Выводим пустую строку
print (u) # Выводим результат – угол в градусах
print (uu)
print (uu)
input( ) # Ожидание нажима Ентер что бы можно было прочитать результаты.
# ..... ..... ..... Конец листинга программы ..... ....
Координаты точек на радиусной кривой
Программа бывает необходима при построении сегмента с радиусом
большой величины – который построить непосредственной разметкой
сложно или невозможно из за мешающих препятствий.
Результаты расчета записываются в файл 'Rezult.txt'.
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
import sys # Подключили основные библиотеки
# ....... ....... ....... ...... ...... ....... ....... ......
Pii=math.pi # Вытащили число " Пи "
f = open('Rezult.txt', 'w') # Открыли файл для записи результатов
# Записываем числа в текстовом виде
uu=" "
u=uu+"\n" # Добавим код перевода строки
f.write(u)
u1=" Расчет координат точек на радиусной кривой "
u=u1+"\n"
f.write(u)
uu=" "+"\n"
f.write(uu)
uuu=" ,,,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,, "+"\n"
f.write(uuu)
f.write(uu)
print (uu)
u=" Построение большого радиуса методом подьема "
print (u)
print (uu)
u=" Размер по горизонтали отсчитывается от центра хорды "
print (u)
u=" от точки Х2 на хорде проводим перпендикуляр Нм расчитанной величины. "
print (u)
u=" При вводе размера по горизонту = нулю – выход из программы "
print (u)
print (uu)
input( ) # Ожидание нажима Ентер
print (uu)
a=0.00000000
y=0.00000000
ug=0.00000000
ugg=0.00000000
R=0.00000000
hm=0.00000000
ht= 0.0000000
u=" Введите радиус "
print (u)
print (uu)
R=input( ) # Вводим число
R=float(R) # Принудительно в вещественное число
u=" Радиус заданной кривой = "
ss=str(R) # Преобразуем число в строку
Rad=u+ss
u=Rad+"\n"
f.write(u)
u=" Введите Хорду L "
print (u)
print (uu)
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Хорда максимальная заданная L = "
ss=str(a) # Преобразуем число в строку
Xord=u+ss
u=Xord+"\n"
f.write(u)
# Находим значения максимального прогиба при X2 = 0....
x=((R*R)-(a*a/4))
b=R-(math.sqrt(x)) # Квадратный корень из " x "
# b – максимальный прогиб…
u=" Подъем максимальный в центре хорды = "
ss=str(b) # Преобразуем число в строку
Progi=u+ss
u=Progi+"\n"
f.write(u)
x=(a/2)/R
y=math.asin(x)
v=math.cos(y)
aur=2*y
au=aur*180/Pii # Угол А в градусах
Lx= 0.0000001 # <Начальное значение>
while Lx>0: # Далее идет циклический расчет
# Далее Cдвиг – четыре пробела в начале каждой строки
print (uu)
u=" Введите растояние от центра хорды до перпендикуляра X2 "
print (u)
print (uu)
Lx=input( ) # Вводим число
Lx=float(Lx)
u=" От центра хорды до точки X2 по оси Х-Х = "
ss=str(Lx) # Преобразуем число в строку
Xord=u+ss
u=Xord+"\n"
f.write(uu)
f.write(u)
x=(R*R)-(Lx*Lx)
z=math.sqrt(x)
y=R-z # Прогиб при хорде = Lx*2
ht=b-y # Расчитали величину подьема
Gsf = 461030/2725231222..
u=" На растоянии от центра = "
ss=str(Lx) # Преобразуем число в строку
u=u+ss
print (u)
print (uu)
u=" Величина подьема ( перпендикуляра ) Hm = "
ss=str(ht) # Преобразуем число в строку
u=u+ss
print (u)
f.write(u)
f.write(uu)
print (uu)
u=" =================================== "
print (u)
f.write(u)
print (uu)
input( ) # Ожидание нажима Ентер
# Далее Конец Cдвига – четыре пробела в начале каждой строки
print (uu)
input( ) # Ожидание нажима Ентер
print (uu)
# ....... ....... ....... ...... ...... ....... ....... ......
f.write(uu)
f.write(uuu)
f.close() # закрыли файл
# ....... ....... ....... ...... ...... ....... ....... ....... ........ ........ ........
u=" ...... ...... ...... Конец программы ...... ...... ...... "
print (u)
print (uu)
input( ) # Ожидание нажима Ентер –
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
Хорда – Прогиб – Радиус
В этом разделе объединены двенадцать небольших программ. Производится расчет при разном наборе исходных данных.
Расчет по Хорде – Радиусу
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=” ”
print (uu)
print (uu)
u=" Расчет по Хорде – Радиусу "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите Радиус "
print (u)
print (uu)
R=0.00000000
R=input( ) # Вводим число
R=float(R) # Принудительно в вещественное число
x=0.00000000
y=0.00000000
v=0.00000000
Sk=0.0000000
St=0.00000000
S=0.000000000
x=((R*R)-(a*a/4))
b=R-(math.sqrt(x)) # Квадратный корень из " x "
x=(a/2)/R
y=math.asin(x)
v=math.cos(y)
aur=2*y
au=aur*180/Pii # Угол А в градусах
#
Вывод по Хорде Прогиб Радиус
# Этот вывод без изменений будет во всех программах
# « Хорда прогиб радиус » – поэтому в дальнейшем мы повторяться
# не будем – ограничимся только заголовком.
D=R+R
Sk=Pii*D*D*au/(4*360) # Площадь сектора круга с углом aur
St=(a/2)*(R-b) # Площадь треугольника в секторе
S = Sk-St # Площадь горбушки
L=Pii*D*au/360 # Длина дуги
print (uu)
u=" ,,,, ,,,, ,,,, ,,,,, ,,,,, ,,,, "
print (u)
print (uu)
print (uu)
u=" Хорда = "
ss=str(a) # Преобразуем число в строку
u=u+ss
print (u)
Xord=u
print (uu)
u=" Стрела прогиба = "
ss=str(b) # Преобразуем число в строку
u=u+ss
print (u)
Progi=u
print (uu)
u=" Радиус = "
ss=str(R) # Преобразуем число в строку
u=u+ss
print (u)
Rad=u
print (uu)
u=" Диаметр = "
ss=str(D) # Преобразуем число в строку
u=u+ss
print (u)
Diam=u
print (uu)
u=" Угол раствора хорды = "
ss=str(au) # Преобразуем число в строку
u=u+ss
print (u)
UgSe=u
print (uu)
u=" Длина дуги над хордой = "
ss=str(L) # Преобразуем число в строку
u=u+ss
print (u)
Dug=u
print (uu)
u=" Площадь сектора = "
ss=str(Sk) # Преобразуем число в строку
u=u+ss
print (u)
PlSe=u
print (uu)
u=" Площадь треугольника под горбушкой = "
ss=str(St) # Преобразуем число в строку
u=u+ss
print (u)
PlTr=u
print (uu)
u=" Площадь горбушки = "
ss=str(S) # Преобразуем число в строку
u=u+ss
print (u)
PlGo=u
print (uu)
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
Расчет по Хорде и углу раствора
Угол раствора это угол между двумя радиусами идущими к концам хорды.
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
print (uu)
u=" Расчет по Хорде и углу раствора "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите Угол раствора в градусах "
print (u)
print (uu)
au=0.00000000
au=input( ) # Вводим число
au=float(au) # Принудительно в вещественное число
x=0.00000000
aur=0.00000000
v=0.00000000
y=0.00000000
Sk=0.0000000
St=0.00000000
S=0.000000000
aur=au*Pii/180
x=math.sin(aur/2)
R=(a/2)/x # Нашли радиус
y=(R*R)-(a*a/4)
v=math.sqrt(y) # Квадратный корень из " y "
b=R-v # Нашли прогиб
# ...... ....... ....... ....... ....... ........ .......
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
Расчет по Хорде и длине Дуги
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
print (uu)
u=" Расчет по Хорде и длине Дуги "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите длину Дуги "
print (u)
print (uu)
L=0.00000000
L=input( ) # Вводим число
L=float(L) # Принудительно в вещественное число
R=0.00000000
dx=a/200000
rt=(a/2)+dx # Начальный радиус расчета
aa=a/2 # Половина хорды
dl=Pii*rt
while dl>L: # Расчет по Хорде и длине Дуги
# Далее Cдвиг – четыре пробела в начале каждой строки
rt=rt+dx # Текущий радиус
x=aa/rt
y=2*(math.asin(x)) # Угол А в радианах через арс синус
dl=rt*y # Текущая длина дуги
# Далее Cдвига нет
yg=y*180/Pii # Угол " y " в градусах
au=yg
R=rt # Нашли радиус
y=(R*R)-(aa*aa)
v=math.sqrt(y) # Квадратный корень из " y "
b=R-v # Нашли прогиб
D=R+R
Sk=Pii*D*D*yg/(4*360) # Площадь сектора круга с углом aur
St=aa*v # Площадь треугольника в секторе
S = Sk-St # Площадь горбушки
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
# ...... ...... ....... ...... ......
Расчет по Хорде – Прогибу
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
u=" Расчет по Хорде – Прогибу "
print (u)
print (uu)
u=" ...... ...... ...... ...... ...... "
print (u)
print (uu)
u=" Введите Хорду "
print (u)
print (uu)
a=0.00000000
a=input( ) # Вводим число
a=float(a) # Принудительно в вещественное число
u=" Введите Стрелу Прогиба "
print (uu)
print (u)
print (uu)
b=0.00000000
b=input( ) # Вводим число
b=float(b) # Принудительно в вещественное число
x=0.00000000
y=0.00000000
v=0.00000000
R=0.00000000
Sk=0.0000000
St=0.00000000
S=0.000000000
Ex=1.000000
k=a/2
Rt=k+(k/100000)
Rd= k/100000
t=k/100000000
# Уточнение шаговым подбором
while Ex >t:
# Далее Cдвиг – четыре пробела в начале каждой строки
Rt=Rt+Rd
x=((Rt*Rt)-(k*k))
c=math.sqrt(x) # Квадратный корень из " x "
Ex=(Rt-c)-b
# E=math.abs(x)
# Конец подбора .......
# Далее Cдвига нет …
R=Rt
D=R+R
x=k/Rt
sur=math.asin(x) # Угол А в радианах
su=sur*180/Pii # Угол А в градусах
au=2*su
yg=au
L=(R+R)*Pii*au/360
# ....... ....... .......
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
# ...... ...... ....... ...... ......
Расчет по Радиусу и Прогибу
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
u=" Расчет по Радиусу и Прогибу "
print (u)
print (uu)
u=" ...... ...... ...... ....."
print (u)
print (uu)
u=" Введите Радиус "
print (u)
print (uu)
R=0.00000000
R=input( ) # Вводим число
R=float(R) # Принудительно в вещественное число
u=" Введите Прогиб "
print (uu)
print (u)
print (uu)
b=0.00000000
b=input( ) # Вводим число
b=float(b) # Принудительно в вещественное число
k=R-b
x=(R*R)-(k*k)
a=(math.sqrt(x))*2
x=(a/2)/k
aur = (math.atan(x))*2
au=aur*180/Pii
yg = au
# Вывод по Хорде Прогиб Радиус
# Далее следует блок вывода результата ( смотри выше ).
input( ) # Ожидание нажима Ентер
# Позволяет рассмотреть результаты расчета
# ..... Конец листинга программы ..... ..
# ...... ...... ....... ...... ......
Расчет по Прогибу и длине Дуги
Листинг программы.
# -*– coding: cp1251 -*-
import math # Подключили математический модуль
Pii=math.pi # Вытащили число " Пи "
uu=" "
print (uu)
u=" Расчет по Прогибу и длине Дуги "
print (u)
print (uu)
u=" ...... ...... ...... ...... "
print (u)
print (uu)
u=" Введите стрелу Прогиба "
print (u)
print (uu)
b=0.00000000
b=input( ) # Вводим число
b=float(b) # Принудительно в вещественное число
print (uu)
u=" Введите длину Дуги "
print (u)
print (uu)
L=0.00000000
L=input( ) # Вводим число
L=float(L) # Принудительно в вещественное число
print (uu)
u=" Подождите – идет расчет "
print (u)
print (uu)
bb=0.000000 # Текущий прогиб
Rt=L/Pii # Начальный Текущий радиус