Читать книгу «Python 3. Расчет веса детали» онлайн полностью📖 — Сергея Фёдоровича Гаврилова — MyBook.

Написание чисел с дробной десятичной частью.

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

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

Написание комментариев.

Значок # предваряет начало комментариев. То, что следует за значком программа просто пропускает, переходя на следующую строку. Комментарий программист пишет себе для справки,чтобы потом ему или другому программисту было легче разобраться в работе программы.

Листинги программ:

Для расчета веса детали – деталь мысленно разобъем на ряд типовых элементов: на цилиндры, конуса, трубы и т.д. У элементов запишем все размеры с чертежа и длинны элементов. Затем запускаем программу Ves_G.py

Программа выведет меню из 17 пунктов. Меню примитивное – на мышь меню не реагирует. Для выполнения какого либо пункта меню – вводим число – номер пункта меню и Enter.. Программа закольцована, при исполнении следующего пункта меню – результат расчета веса суммируется с ранее найденным результатом – в итоге мы постоянно имеем суммарный вес уже просчитанных элементов. Проограмма – Ves_G.py…головная – в зависимости от выбранного пункта меню – программа автоматически подключает к работе одну из 17 подпрограмм . Главное: Головная программа и детальные программы ( подпрограммы ) должны располагаться в папке Ves..

Примечание: Python 3.4 имеет особенность – когда головная программа вызывает подпрограммы, то как обычно, подпрограмма забирает исходные данные, расчитывает результат и отдает его головной программы. Но вот мы повторно вызваем подпрограмму для расчета по изменившимся исходным данным – Python 3.4 игнорирует, то что данные изменились и выдает нам предыдущий результат. Чтобы не попасть на такую ошибку, приходится вести учет применения подпрограмм – при первом применении считаем как обычно,

import Krug # Подключили модуль расчета круглого сечения

при втором и последующем применении подпрограмму вызываем функцией:

from imp import reload

reload (Krug) # Вызываем на повторный расчет подпрограмму (Krug)…

Только так получаем верные результаты.. ( В других языках программирования я такого не встречал !! )..

Программа Ves_G.py

# -*– coding: cp1251 -*-

# Программа расчета веса и других параметров

# объемных геометрических элементов..

# Результаты расчета элемента смотри в файле Rezul.txt

# ===============================================

import sys # Подключили основные библиотеки

import shutil # Подключили модуль копирования файлов

import math # Подключили математич модуль

import time # Подключили модуль времени

import datetime # Подключили модуль даты

Pii=math.pi # Вытащили число " Пи "

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......

# time.strftime("%d.%m.%Y") # Работа с датой и временем

# a = datetime.datetime.today().strftime("%Y%m%d")

# print(a) # '20170405'

today = datetime.datetime.today()

# print( today.strftime("%m/%d/%Y") ) # '04/05/2017'

# print( today.strftime("%Y-%m-%d-%H.%M.%S") ) # 2017-04-05-00.18.00

Ddd=( today.strftime("%Y-%m-%d-//-%H.%M.%S") )

# Gsf = 461030/2725231222..

print(" ")

Dds=" "+Ddd+" Расчет веса элементов детали "

print(Dds)

# input( ) # Ожидание нажима Ентер

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......

fv = open('Vn.txt', 'r') # Открыли файл для чтения

# Читаем записанные число часов в текстовом виде

ct=fv.read()

fv.close() # закрыли файл

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......

uu=" "

# print (uu)

# print (uu)

u=" Забрали из файла число часов ( строкой ) = "+ct

# print (u)

xt=float(ct) # Принудительно в вещественное число

xtc=int(xt) # Целое число часов из файла

# print (uu)

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......

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) # Преобразуем число дней в строку

uk=" Забрали из системы компьютера число часов = "+utck

# print (uk)

# print (uu)

y=int(xtck-xtc) # Разность часов из компа и из файла

uy=str(y) # Преобразуем число в строку

u=" Разность в часах с временем из файла = "+uy

# print (u)

# print (uu)

t1="."

t2="Ф"

t3="в"

t4="о"

t5="р"

t6="П"

t7="С"

t8="г"

t9="а"

t10="."

t11="Г"

t12="м"

t13="и"

t14="л"

t15="т"

t16="с"

t17="2"

t18="0"

t19="т"

t20="1"

t21=" "

ufp=t6+t5+t4+t8+t5+t9+t12+t12+t13+t16+t15

ufa=t11+t9+t3+t5+t13+t14+t4+t3+t1+t21+t7+t1+t2+t1

ufg=t17+t18+t20+t17+t21+t8+t1

if y>10:

# Далее все строки пишем с отступом в четыре пробела от начала строки…

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......

fv = open('Vn.txt', 'w') # Открыли файл для записи

# Записываем число часов в текстовом виде

fv.write(utck)

u=" Записали число часов в Файл "

print (u)

print (uu)

fv.close() # закрыли файл

x=xtk/14

y=int(xtk/14)

if y==x:

# Далее все строки пишем с отступом в восемь пробелов от начала строки…

    print (uu)

    print (" "+ufp)

    print (uu)

    print (" "+ufa)

    print (uu)

    print (" "+ufg)

    print (uu)

    print (" ==================== ")

    print (uu)

    print (uu)

    input( ) # Ожидание нажима Ентер

# Далее все строки пишем с отступом в четыре пробела от начала строки…

print (uu)

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... ....... # Далее все строки пишем без отступа…

u=" Работа с временем "

# print (u)

# print (uu)

# input( ) # Ожидание нажима Ентер

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......

# ..... ..... ..... ..... .... ...... ...... ....... ...... ...... ...... .......

f = open('Rezult.txt', 'w') # Открыли файл для записи ( старое удалим )

# Записываем числа в текстовом виде

u=uu+"\n" # Добавим код перевода строки

f.write(u)

u=Dds+"\n" # Добавим код перевода строки

f.write(u)

u=utdk+"\n" # Добавим код перевода строки

f.write(u) # Запишем – сколько дней прошло от даты Х

u=uu+"\n" # Добавим код перевода строки

f.write(u)

u=" ==================================== "

u=u+"\n" # Добавим код перевода строки

f.write(u) # записали в файл

f.close() # закрыли файл

# ..... ..... ..... .....

# ..... ..... ..... .....

print (uu)

print (uu)

print (uu)

u=" РАСЧЕТ ВЕСА ДЕТАЛИ "+"\n"

print (u)

print (uu)

u=" Программа расчитывает вес элементарного фрагмента детали "+"\n"

print (u)

u=" выводит вес фрагмента на экран, затем суммирует с весом "+"\n"

print (u)

u=" уже расчитанных фрагментов. Если фрагмент представляет "+"\n"

print (u)

u=" собой полость ( пустоту ), то его длина вводится со знаком "+"\n"

print (u)

u=" минус – вес пустого фрагмента будет вычитаться из суммарного "+"\n"

print (u)

u=" веса детали. "+"\n"

print (u)

u=" Одновременно с расчетом веса фрагмента – программа "+"\n"

print (u)

u=" расчитывает геометрические характеристики сечения фрагмента "+"\n"

print (u)

u=" необходимые для расчетов на прочность и других расчетов "+"\n"

print (u)

u=" На экран эти результаты не выводятся, а записываются "+"\n"

print (u)

u=" в файл Rezult.txt – который можно посмотреть после "+"\n"

print (u)

u=" окончания расчета веса детали. "+"\n"

print (u)

print (uu)

u=" Гаврилов С.Ф. ноябрь 2012 г. "+"\n"

print (u)

print (uu)

u=" ================ "+"\n"

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# – – – –

global Kodis # Обьявили глобальную переменную

global Ves # Обьявили глобальную переменную

global VesS # Обьявили глобальную переменную

global VesT # Обьявили глобальную переменную

VesS=0.000000

VesT=0.000000

# Gsf = 461030/2725231222..

# Pii=math.pi # Вытащили число " Пи "

Kodis=1

Kodp1=0

Kodp2=0

Kodp3=0

Kodp4=0

Kodp5=0

Kodp6=0

Kodp7=0

Kodp8=0

Kodp9=0

Kodp10=0

Kodp11=0

Kodp12=0

Kodp13=0

Kodp14=0

Kodp15=0

Kodp16=0

Kodp17=0

Kodp18=0

Kodp19=0

Kodp20=0

Kodim=0

Kodimp=1

uu=" "

import math # Подключили математич модуль

# – – – – – – – – – –

while Kodis>0:

# Далее все строки пишем с отступом в четыре пробела от начала строки…

uu=" =================================== "

print (uu)

uu=" "

print (uu)

print (uu)

u=" Расчет веса сечений с суммированием ,"

print (u)

print (uu)

print (uu)

u=" 1 – Цилиндр "

print (u)

u=" 2 – Труба D и d "

print (u)

u=" 3 – Труба D и S "

print (u)

u=" 4 – Шестигранник "

print (u)

u=" 5 – Пластина "

print (u)

u=" 6 – Треугольник прямоугольный "

print (u)

u=" 7 – Треугольник по стронам "

print (u)

u=" 8 – Трапеция "

print (u)

u=" 9 – Косынка "

print (u)

u=" 10 – Усеченный конус "

print (u)

u=" 11 – Усеченная пирамида "

print (u)

u=" 12 – Горбушка "

print (u)

u=" 13 – Кольцо ( в сечении трапеция ) "

print (u)

u=" 14 – Канавка под клиновой ремень "

print (u)

u=" 15 – Добавить обьем в куб. мм. "

print (u)

u=" 16 – Пересчет на другой материал "

print (u)

u=" 17 – Обнулить вес "

print (u)

print (uu)

u=" 0 – Выход из программы ( ноль ) "

print (u)

print (uu)

print (uu)

u=" Размеры вводим в в мм. Плотность стали 7,85; "

print (u)

print (uu)

Kodis=input( )

Kodis=float(Kodis) # Принудительно в вещественное число

# ..... ..... ..... ..... ..... ..... ..... .... ..... .... .... .....

# ..... ..... ..... ..... ..... ..... ..... .... ..... .... .... .....

if Kodis ==1: # Выбор расчета вида сечения ( круг )

# Далее все строки пишем с отступом в восемь пробелов от начала строки…

if Kodp1 ==0:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

import Krug # Подключили модуль расчета круглого сечения

VesT=Krug.px # Извлекаем из модуля значение переменной

u=" Вес цилиндрического элемента = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

Kodp1=1 # Первое применение произошло

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# Далее все строки пишем с отступом в восемь пробел от начала строки…

else:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

from imp import reload

reload (Krug)

VesT=Krug.px # Извлекаем из модуля значение переменной

u=" Вес цилиндрического элемента = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,,,

# Gsf = 461030/2725231222..

# Далее все строки пишем с отступом в четыре пробела от начала строки…

if Kodis ==2: # Выбор расчета вида сечения ( Труба D,d )

# Далее все строки пишем с отступом в восемь пробел от начала строки…

if Kodp2 ==0:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

import Truba # Подключили модуль расчета Труба D,d

VesT=Truba.px # Извлекаем из модуля значение переменной

u=" Вес трубного элемента = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

Kodp2=1 # Первое применение произошло

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# Далее все строки пишем с отступом в восемь пробел от начала строки…

else:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

from imp import reload

reload (Truba)

VesT=Truba.px # Извлекаем из модуля значение переменной

u=" Вес трубного элемента = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,,,

# Далее все строки пишем с отступом в четыре пробела от начала строки…

if Kodis ==3: # Выбор расчета вида сечения ( Труба D,S )

# Далее все строки пишем с отступом в восемь пробел от начала строки…

if Kodp3 ==0:

# Далее все строки пишем с отступом вдвенадцать пробел от начала строки…

import TrubaS # Подключили модуль расчета Труба D,S

VesT=TrubaS.px # Извлекаем из модуля значение переменной

u=" Вес трубного элемента S = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

Kodp3=1 # Первое применение произошло

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# Далее все строки пишем с отступом в восемь пробел от начала строки…

else:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

from imp import reload

reload (TrubaS)

VesT=TrubaS.px # Извлекаем из модуля значение переменной

u=" Вес трубного элемента S = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,,,

# Далее все строки пишем с отступом в четыре пробела от начала строки…

if Kodis ==4: # Выбор расчета вида сечения ( Шестигранник )

# Далее все строки пишем с отступом в восемь пробел от начала строки…

if Kodp4 ==0:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

import Sestig # Подключили модуль расчета Sestig_2

VesT=Sestig.px # Извлекаем из модуля значение переменной

u=" Вес шестигранника = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

Kodp4=1 # Первое применение произошло

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# Далее все строки пишем с отступом в восемь пробел от начала строки…

else:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

from imp import reload

reload (Sestig)

VesT=Sestig.px # Извлекаем из модуля значение переменной

u=" Вес шестигранного элемента = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,,,

# Далее все строки пишем с отступом в четыре пробела от начала строки…

if Kodis ==5: # Выбор расчета вида сечения ( Пластина )

# Далее все строки пишем с отступом в восемь пробел от начала строки…

if Kodp5 ==0:

# Далее все строки пишем с отступом в двенаддцать пробел от начала строки…

import Prug # Подключили модуль расчета Prug_2

VesT=Prug.px # Извлекаем из модуля значение переменной

u=" Вес пластины = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

Kodp5=1 # Первое применение произошло

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# Далее все строки пишем с отступом в восемь пробел от начала строки…

else:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

from imp import reload

reload (Prug)

VesT=Prug.px # Извлекаем из модуля значение переменной

u=" Вес прямоугольного элемента = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,,,

# Далее все строки пишем с отступом в четыре пробела от начала строки…

if Kodis ==6: # Выбор расчета вида ( Прямоуг. треугольник )

# Далее все строки пишем с отступом в восемь пробел от начала строки…

if Kodp6 ==0:

# Далее все строки пишем с отступом в двенадцать пробел от начала

# строки…

import Treu # Подключили модуль расчета Treu_2

VesT=Treu.px # Извлекаем из модуля значение переменной

u=" Вес Прямоуг. треугольникa = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

Kodp6=1 # Первое применение произошло

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# Далее все строки пишем с отступом в восемь пробел от начала строки…

else:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

from imp import reload

reload (Treu)

VesT=Treu.px # Извлекаем из модуля значение переменной

u=" Вес Прямоуг. треугольникa = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

VesS=VesS+VesT # Суммарный вес

u=" Суммарный вес = "

t=str(VesS) # Преобразуем число в строку

u=u+t # сложим строки

print (uu)

print (u)

u=" ============================== "

print (uu)

print (u)

print (uu)

input( ) # Ожидание нажима Ентер

# ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,, ,,,,,,,

# Gsf = 461030/2725231222..

# Далее все строки пишем с отступом в четыре пробела от начала строки…

if Kodis ==7: # Выбор расчета вида сечения ( Tреугольник )

# Далее все строки пишем с отступом в восемь пробел от начала строки…

if Kodp7 ==0:

# Далее все строки пишем с отступом в двенадцать пробел от начала строки…

import Treu3 # Подключили модуль расчета Treu3

VesT=Treu3.px # Извлекаем из модуля значение переменной

u=" Вес Треугольного элемента = "

t=str(VesT) # Преобразуем число в строку

u=u+t # сложим строки