Полная версия
Python 3, полезные программы
Введение.
Книга первая..
Инженер конструктор отдела гл.механика Механического завода Гаврилов Сергей Федорович написал эту книгу для начинающих программистов, желающих начать программировать на языке Python 3. Книга будет полезна для студентов механиков и для цеховых конструкторов механиков. Предлагаемые в книге расчеты существенно экономят время.
Язык программирования Python хорошо подходит для быстрого решения задач типа
определения оптимальных размеров, методом расчета множества вариантов решения. Программы на Python хорошо подходят для быстрого решения типовых задач.
Программирование на Python требует меньше времени чем на других языках.
Небольшие программы можно комплектовать в библиотеки или включать их в объединяющую программу. В объединяющую программу можно просто перекопировать текст небольших программ уже готовых и проверенных, или можно просто указать ссылки на эти программы и все будет работать.
Конструкторам в цеху часто приходится быстро выполнять разнообразные расчеты – библиотека
небольших программ позволяет значительно экономить время и уменьшить вероятность ошибок. Данная книга – сборник листингов рабочих программ. Все программы, в разное время, разработаны самим автором, при возникновении необходимости данных расчетов. Все программы проверены и постоянно используются в работе конструктора – механика .
Листинги программ снабжены пояснениями. Листинги удобно использовать в качестве готовых блоков для вновь разрабатываемых программ.
Python высокоуровневый интерпретирующий язык программирования.
– язык программирования, разработанный для быстроты и удобства использования программистом. Команда на высокоуровневом языке легко запоминается человеком. При интерпретации, внутри ЭВМ, команда высокого уровня разворачивается в целый пакет команд на машинном коде которые очень длинны и сложны для непосредственного понимания. Высокоуровневые языки программирования были разработаны также для платформенной независимости ( независимости от марки ЭВМ и операционной системы ).
Приспособление к платформе перекладывается на инструментальные программы – трансляторы, компилирующие текст, написанный на языке высокого уровня, в элементарные машинные команды (инструкции) или на интерпретаторы (например, Python ).
Python интерпретирующий язык. При запуске программы Python читает первую строку, переводит прочитанную команду высокого уровня в пакет машинных кодов, затем выполняет команды пакета машинных кодов, после выполнения читает следующую строку и так до конца программы. При этом каждая команда высокого уровня интерпретируется в пакет машинных кодов – затем пакет машинных кодов исполняется.
Для практического применения листингов программ в первую очередь проверьте – установлен ли на вашем компьютере Python 3.4. или более старшая версия Python 3.8..
Python 3.4 распространяется свободно и бесплатно -
например на сайте https://soft-file.ru/python/
При установке проверьте 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 , то за таким оператором следуют строки одного или нескольких блоков. Блоки выполняются программой,
или пропускаются без исполнения, в зависимости от условия в логическом операторе.
Блоки отделяются от основной программы пробелами в начале строки. Обычно в начале строки блока ставят четыре пробела. Число пробелов в начале строки – важная величина.
Если в компьютере Python 3.4 установлен правильно, то при двойном клике мышью на файле с расширением “.py ”. программа начнет исполнятся. Если программа стопорится или вылетает – Запускаем файл редактора программы « IDLE( Python GUI) » в этом редакторе щелкаем левой кнопкой мыши на – File – затем Open. В выпавшем меню находим свой файл, выделяем его – щелкаем – Открыть. На экран выводится листинг вашего файла с выделением цветом элементов команд. Находим колонку – Run щелкнув – открываем ее и щелкаем на
– Run Module F5 – Ваша программа начинает выполняться и останавливается на месте ошибки. Иногда она останавливается на следующей за ошибкой команде. Выводится комментарий к ошибке на английском. Программа редактор « IDLE( Python GUI) » идет в комплекте с программой Python 3.4.. и служит для нахождения ошибок в разрабатываемой программе.
При верстке книги « умные программы » что-то убирают, а что-то добавляют, искажая оригинал.
К примеру при верстке удаляются все « лишние» пробелы, поэтому перед знаком # надо добавить два пробела. В блоках- там, где блок выделяется пробелами, в начале строки пишем:
# Далее Cдвиг – четыре пробела в начале каждой строки. И в листинг ставим четыре пробела. Там, где блок закончился, пишем: # Далее Конец Cдвига – четыре пробела в начале каждой строки – и строки начинаются без пробелов в начале строки.
Если при копировании программа не работает: обращайтесь gsf4610@yandex.ru к автору.
Фрагменты программ для справок
Математические функции
u=" Математические функции ( блоки для вставки в программы ) "
uu=" "
print (uu)
print (uu)
print (u)
u=" ...... ...... ...... ...... ...... ...... ..... ...... "
print (uu)
print (u)
print (" Демонстрация № 1 работа с математическими операторами ")
print (uu)
print (" Ввести число дробью с двумя десятичными знаками ")
Kt=11.11 # Предварительно задаем – что такое Kt ( это число )
Kt=input( ) # Вводим число Kt
aus=str(Kt) # Преобразуем число в строку
print (" = "+aus)
Kt=8.64 # Задано значение Kt
xs=str(Kt) # Преобразуем число в строку
print (xs)
K=float(xs) # Принудительно в вещественное число
print (K)
Kb=math.ceil(K) # Kt округлим до ближайшего большего целого.
Km=math.floor(K) # Kt округлим до ближайшего меньшего целого.
print (Kb)
print (Km)
E=-1 # Присвоили Е значение минус один.
K=K*E # Теперь К – отрицательное число
print (K)
Ee=abs(K) # Выводим абсолютное значение K в переменную Ee.
print (Ee) # Ее – положительное число.
print (" Демонстрация № 1 закончена ")
input( ) # Ожидание нажима Ентер
print (uu)
# ............... ...................... ..................... ..............................
# K=float(Kt) # Принудительно Kt в вещественное число K
# aus=str(au) # Преобразуем число au – в строку aus.
# Kt=8.64 # Задано значение Kt
# Kb=math.ceil(K) # Kt округлим до ближайшего большего целого.
# Km=math.floor(K) # Kt округлим до ближайшего меньшего целого.
# Ee=round(Nt,6) # Выводим только 6 знаков после запятой числа Nt ..
# Ee=abs(Nt) # Выводим абсолютное значение Nt в переменную Ee.
# y=math.cos(C) # COS угла С в радианах
# z=math.sin(A) # Sin угла A в радианах
# ur=math.tan(X) # Тангенс от Х
# aur=math.acos(X) # Угол aur в радианах от значения косинуса X
# A=aur*180/Pii # Угол А в градусах, aur в радианах.
# ur=math.atan(X) # Аркс тангенс от Х, ur в радианах.
# ur=math.asin(X) # Аркс синус от X
# z=math.sqrt(D) # Корень квадратный из D
# X=math.log(K) # X – Натуральный логарифм от числа " К "
# K=math.exp(X) # K – экспонента от числа X
Файловые функции
# f = open('Rezult.txt', 'a') # Открыли файл для дополнения записи
# f = open('Rezult.txt', 'w') # Открыли файл для записи ( прежнее удаляем ).
# f = open('Rezult.txt', 'r') # Открыли файл для чтения
# f.close() # закрыли файл Rezult.txt
# f = open('Rezult.txt', 'r') # Открыли файл для чтения
# t=f.read() # Выводит все оставшиеся строки файла на экран
# print(open('Fa.txt').readline()) # Выводит 1 строку файла на экран
# t=f.readline() # Выводит следующую строку файла в переменную и на экран
# e=" Прочитали 3 = "
# k=e+t
# print (k)
# t=f.read() # Выводит оставшиеся строки файла в переменную и на экран
# e=" Прочитали = = "
# k=e+t
# print (k)
# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......
# fv = open('Rezult.txt', 'r') # Открыли файл Rezult.txt для чтения
# Читаем записанное в файл число в текстовом виде.
# ct=fv.read()
# fv.close() # закрыли файл Rezult.txt
# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......
# f = open('Rezult.txt', 'r') # Открыли файл для чтения
# t=f.read() # Выводит все оставшиеся строки файла на экран
# print(open('Fa.txt').readline()) # Выводит 1 строку файла на экран
# t=f.readline() # Выводит следующую строку файла в переменную и на экран
# e=" Прочитали 3 = "
# k=e+t
# print (k)
# t=f.read() # Выводит оставшиеся строки файла в переменную и на экран
# e=" Прочитали = = "
# k=e+t
# print (k)
Подключение библиотек
# import sys # Подключили основные библиотеки
# import shutil # Подключили модуль копирования файлов
# import math # Подключили математич модуль
# import time # Подключили модуль времени
Функции времени
# x=time.time() # Нашли число секунд из системы компьютера
# x=float(x) # Принудительно в вещественное число
# xtk=int(x) # Преобразуем секунды к целому числу
# xtmk=int(x/60) # Преобразуем минуты к целому числу
# xtck=int(x/3600) # Преобразуем часы к целому числу
# utck=str(xtck) # Преобразуем число часов в строку
# xtdk=int(xtck/24) # Преобразуем дни к целому числу
# utdk=str(xtdk) # Преобразуем число дней в строк
# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......
# ....... ....... Демонстрация № 2 ........ ....... .........
# u=" Пишем слово, извлекаем из слова буквы и пишем их "
# print (u)
# Sl="Python"
# print (Sl)
# print (Sl[0])
# y=Sl[1]
# print (y)
# u1=" Число символов в строке = "
# x=len(Sl)
# xl=str(x) # Преобразуем число в строку
# u=u1+xl
# print (u)
# u1=" Выведем код третьего символа в строке = "
# y=Sl[2] # Первый символ строки имеет порядковый номер ноль.
# x2=str(y) # Преобразуем число в строку
# z=ord(y) # Y – Код ( число ) символа – возвращает символ
# x3=str(z) # Преобразуем число в строку
# u=u1+x2+" = "+x3 # Сложим символы в новую строку..
# print (u)
# print (uu)
# input( ) # Ожидание нажима Ентер
# .......... Конец демонстрационной программы № 2 ........
Общая геометрия
Линейная интерполяция
Листинг программы.
# -*– 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)
# Pii=math.pi # Вытащили число " Пи "
input( ) # Ожидание нажима Ентер
# Далее делаем еще один расчет на тех же исходных данных и выводим результаты.
Pii=math.pi # Вытащили число " Пи "
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) # Угол А в радианах через арс тангенс
au=aur*180/Pii # Угол А в градусах
aus=str(au) # Преобразуем число в строку
u=" Угол линии x1;y1 – x2;y2 с осью Х = "+aus+" градус "
print (uu)
print (u)
print (uu)
print (uu)
input( ) # Ожидание нажима Ентер
# ..... ..... ..... Конец листинга программы ..... ....
Система уравнений
Листинг программы:
# -*– coding: cp1251 -*-
import sys # Подключили основные библиотеки
import math # Подключили математич модуль
uu=" "
print (uu)
print (uu)
print (uu)
u=" Расчет системы уравнений первой степени "
print (u)
u=" c тремя неизвестными "
print (u)
print (uu)
u=" .... .... ..... .... ..... ..... ..... ..... ..... ..... "
print (u)
print (uu)
u=" Первое уравнение "
print (u)
print (uu)
u=" A*X + B*Y + C*Z = D "
print (u)
print (uu)
A=0.0000
u=" Введите Коэф А "
print (u)
A=input( )
A=float(A) # Принудительно в вещественное число
B=0.0000
u=" Введите Коэф B "
print (u)
B=input( )
B=float(B) # Принудительно в вещественное число
C=0.0000
u=" Введите Коэф C "
print (u)
C=input( )
C=float(C) # Принудительно в вещественное число
D=0.0000
u=" Введите Коэф D "
print (u)
D=input( )
D=float(D) # Принудительно в вещественное число
print (uu)
u=" Второе уравнение "
print (u)
print (uu)
u=" M*X + N*Y + F*Z = T "
print (u)
print (uu)
M=0.0000
u=" Введите Коэф M "
print (u)
M=input( )
M=float(M) # Принудительно в вещественное число
N=0.0000
u=" Введите Коэф N "
print (u)
N=input( )
N=float(N) # Принудительно в вещественное число
F=0.0000
u=" Введите Коэф F "
print (u)
F=input( )
F=float(F) # Принудительно в вещественное число
T=0.0000
u=" Введите Коэф F "
print (u)
T=input( )
T=float(T) # Принудительно в вещественное число
print (uu)
u=" Третье уравнение "
print (u)
print (uu)
u=" Q*X + K*Y + E*Z = V "
print (u)
print (uu)
Q=0.0000
u=" Введите Коэф Q "
print (u)
Q=input( )
Q=float(Q) # Принудительно в вещественное число
K=0.0000
u=" Введите Коэф K "
print (u)
K=input( )
K=float(K) # Принудительно в вещественное число
E=0.0000
u=" Введите Коэф E "
print (u)
E=input( )
E=float(E) # Принудительно в вещественное число
V=0.0000
u=" Введите Коэф V "
print (u)
V=input( )
V=float(V) # Принудительно в вещественное число
aa=str(A) # Преобразуем число в строку
bb=str(B) # Преобразуем число в строку
cc=str(C)
dd=str(D)
nn=str(N)
mm=str(M)
ff=str(F) # Преобразуем число в строку
tt=str(T) # Преобразуем число в строку
qq=str(Q)
kk=str(K)
ee=str(E)
vv=str(V)
print (uu)
u=" .... .... ..... .... ..... ..... ..... ..... ..... ..... "
print (u)
print (uu)
print (uu)
u=" "+aa+" * X + "+bb+" * Y + "+cc+" * Z = "+dd
print (u)
print (uu)
print (uu)
u=" "+mm+" * X + "+nn+" * Y + "+ff+" * Z = "+tt
print (u)
print (uu)
print (uu)
u=" "+qq+" * X + "+kk+" * Y + "+ee+" * Z = "+vv
print (u)
print (uu)
print (uu)
u=" .... .... ..... .... ..... ..... ..... ..... ..... ..... "
print (u)
print (uu)
j=((A*N*E+B*F*Q+C*M*K-C*N*Q)-A*F*K)-B*M*E
jx=((D*N*E+B*F*V+C*T*K-C*N*V)-D*F*K)-B*T*E
jy=((A*T*E+D*F*Q+C*M*V-C*T*Q)-A*F*V)-D*M*E
jz=((A*N*V+B*T*Q+D*M*K-D*N*Q)-A*T*K)-B*M*V
if j ==0:
# Далее Cдвиг – четыре пробела в начале каждой строки
print (uu)
u=" Уравнение не имеет решений "
print (u)
print (uu)
# Далее Конец Cдвига – четыре пробела в начале каждой строки
else:
# Далее Cдвиг – четыре пробела в начале каждой строки
X=jx/j
Y=jy/j
Z=jz/j
xx=str(X) # Преобразуем число в строку
yy=str(Y) # Преобразуем число в строку
zz=str(Z) # Преобразуем число в строку
print (uu)
u=" X = "+xx
print (u)
print (uu)
u=" Y = "+yy
print (u)
print (uu)
u=" Z = "+zz
print (u)
print (uu)
# Далее Конец Cдвига – четыре пробела в начале каждой строки
input( ) # Ожидание нажима Ентер
# ..... ..... ..... ..... ....
print (uu)
print (uu)
# ..... ..... ..... ..... ....
# ..... ..... ..... Конец листинга программы ..... ....
Квадратное уравнение
Листинг программы:
# -*– coding: cp1251 -*-
import sys # Подключили основные библиотеки
import math # Подключили математич модуль
uu=" "
print (uu)
print (uu)
print (uu)
u=" Расчет Квадратного уравнения "
print (u)
print (uu)
u=" .... .... ..... .... ..... ..... ..... ..... ..... ..... "
print (u)
print (uu)
u=" A*X*X + B*X + C = O "
print (u)
print (uu)
A=0.0000
u=" Введите Коэф А "
print (u)
A=input( )
A=float(A) # Принудительно в вещественное число
B=0.0000
u=" Введите Коэф B "
print (u)
B=input( )
B=float(B) # Принудительно в вещественное число
C=0.0000
u=" Введите Коэф C "
print (u)
C=input( )
C=float(C) # Принудительно в вещественное число
aa=str(A) # Преобразуем число в строку
bb=str(B) # Преобразуем число в строку
cc=str(C)
print (uu)
u=" .... .... ..... .... ..... ..... ..... ..... ..... ..... "
print (u)
print (uu)
print (uu)
u=" "+aa+" * X * X + "+bb+" * X + "+cc+" = O "
print (u)
print (uu)
print (uu)
u=" .... .... ..... .... ..... ..... ..... ..... ..... ..... "
print (u)
print (uu)
input( ) # Ожидание нажима Ентер
D=(B*B)-(4*A*C)
xx=str(D) # Преобразуем число в строку
print (uu)
u=" Дискриминант = "+xx
print (u)
print (uu)
if D<0:
# Далее Cдвиг – четыре пробела в начале каждой строки
print (uu)
u=" Уравнение не имеет решений "
print (u)
print (uu)
# Далее Конец Cдвига – четыре пробела в начале каждой строки
if D==0:
# Далее Cдвиг – четыре пробела в начале каждой строки
x=(-1)*B/(2*A)
xx=str(x) # Преобразуем число в строку
print (uu)
u=" Уравнение имеет один корень = "+xx
print (u)
print (uu)
# Далее Конец Cдвига – четыре пробела в начале каждой строки
if D>0:
# Далее Cдвиг – четыре пробела в начале каждой строки
z=math.sqrt(D)
x=(-1)*B+z/(2*A)
x1=(-1)*B-z/(2*A)
xx=str(x) # Преобразуем число в строку
xx1=str(x1) # Преобразуем число в строку
print (uu)
u=" Уравнение имеет первый корень = "+xx
print (u)
print (uu)
u=" Уравнение имеет второй корень = "+xx1
print (u)
print (uu)
print (uu)
# Далее Конец Cдвига – четыре пробела в начале каждой строки
u=" .... .... ..... .... ..... ..... ..... ..... ..... ..... "
print (u)
print (uu)
input( ) # Ожидание нажима Ентер
# ..... ..... ..... ..... ....
print (uu)
print (uu)
# ..... ..... ..... Конец листинга программы ..... ....
Координаты точек на радиусной кривой
Программа бывает необходима при построении сегмента с радиусом
большой величины – который построить непосредственной разметкой
сложно или невозможно из за мешающих препятствий.
Результаты расчета записываются в файл '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