Основы python в бизнесе

от автора

Господа, приветствую! Решил описать результаты изучения абсолютно бесплатных курсов и статей по языку программирования python, любые комментарии с одобрениями/осуждениями/пожеланиями приветствуются.

Итак, дело было вечером — делать было нечего…. Бесплатный (пробный) курс на Я.Практикуме подтолкнул зафиксировать полученные знания хоть как-нибудь, так родилась идея создания Калькулятора Лазерной Резки (далее КЛР), аплодисменты в студию!! Видео на ютубе «Учим python за 7 часов! Уроки Python Полный курс обучения программированию на python с нуля» канала Python Hub Studio придало уверенность.

Вот что получилось по коду:

while True:          length = int(input('Длинна мм = '))           # в миллиметрах       длинна     width = int(input('Ширина мм = '))           # в миллиметрах       ширина     t = int(input('Толщина мм = '))                # в миллиметрах       толщина     number_of_pieces = int(input('Кол-во деталей шт = '))   # кол-во деталей шт     rezka = int(input('Длинна резки м/п = '))                                     # в метрах            резка длинна     vstavki = int(input('Кол-во вставок шт = '))             # кол-во вставок при резке     gibov = int(input('Кол-во гибов шт = '))                # кол-во шт           гибов      metal_square= (length* width *0.000001)*number_of_pieces     print(f'Площадь металла:{metal_square} м^2')      metal_massa= length * width * t * number_of_pieces * 0.0000078     print(f'Масса маталла: {metal_massa} кг')      metal_money = metal_massa * 350     print(f'Стоимость металла: {int(metal_money)} рублей')      t_list=[ 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 20]     price_list_100=[27, 36, 57, 64, 76, 87, 111, 154, 191, 224, 360, 519]     price_list_101=[20, 28, 43, 50, 58, 68, 84, 125, 144, 186, 298, 432]     for i in range(len(t_list)):         if t == t_list[i] and rezka <= 100:             rezka_price= price_list_100[i]         elif t == t_list[i] and rezka >100:             rezka_price= price_list_101[i]      rezka_money = rezka * rezka_price     if rezka_money < 5000:         rezka_money = 5000     print(f'Стоимость лазерной резки: {rezka_money} рублей')      vstavki_money = vstavki * 10     print(f'Стоимость вставок: {vstavki_money} рублей')           if gibov <20:         gibov_price = 200     else:         gibov_price = 100        gibov_money = gibov * gibov_price     print(f'Стоимость гибки: {gibov_money} рублей')         print(f'ЕСЛИ МЕТАЛЛ НАШ: {metal_money + rezka_money + vstavki_money + gibov_money}')     print(f'ЕСЛИ МЕТАЛЛ СВОЙ: {rezka_money + vstavki_money + gibov_money}')  

Вот что получилось по выводу:

Заказы на нашем производстве стали просчитываться в 3 раза быстрее!! но пересмотрев курс на ютубе и на Я.Практикуме, пришло понимание что надо осваивать функции и похоже что мой КЛР ждет v2.0

На этот раз вот что получилось по коду:

t_list=[ 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 20]  price_list_100=[27, 36, 57, 64, 76, 87, 111, 154, 191, 224, 360, 519]  price_list_101=[20, 28, 43, 50, 58, 68, 84, 125, 144, 186, 298, 432]  def metal_params():     global metal_cost     length = int(input('Длинна мм = '))     width = int(input('Ширина мм = '))     global t     t = int(input('Толщина мм = '))     number_of_pieces = int(input('Кол-во деталей шт = '))     global metal_cost     metal_cost = length * width * t * number_of_pieces * 0.0000078 * 350     return f'Площадь металла: {(length* width *0.000001)*number_of_pieces} м^2 \nМасса маталла:{length * width * t * number_of_pieces * 0.0000078} кг \nСтоимость металла:{metal_cost} рублей'  def cutting_cost():     cutting_length = int(input('Длинна резки м/п = '))     for i in range(len(t_list)):         if t == t_list[i] and cutting_length <= 100:             cutting_price= price_list_100[i]         elif t == t_list[i] and cutting_length >100:             cutting_price= price_list_101[i]     global cutting_money     cutting_money = cutting_length * cutting_price     if cutting_money < 5000:         cutting_money = 5000     return f'Стоимость лазерной резки: {cutting_money} рублей'  def insert_cost():     global insert_money     insert_money = int(input('Кол-во вставок шт = ')) * 10     return f'Стоимость вставок: {insert_money} рублей'  def bending_cost():     bending_count = int(input('Кол-во гибов шт = '))     if bending_count <20:         bending_price = 200     else:         bending_price = 100     global bending_money     bending_money = bending_count * bending_price     return f'Стоимость гибки: {bending_money} рублей'     def cost_out():     metal = metal_params()     cutting = cutting_cost()     insert = insert_cost()     bending = bending_cost()     print (f'{metal}\n{cutting}\n{insert}\n{bending}')     print (f'Если металл наш:{metal_cost + cutting_money + insert_money + bending_money} \nЕсли метал НЕ наш: {cutting_money + insert_money + bending_money}')  while True:     cost_out() 

Вывод результатов остался таким же. Да, согласен — ничего не поменялось, но сие творение получило возможность неограниченного расширения функционала, например оценка стоимости сварного шва, резки не только лазером (болгарка, ленточный станок), покраски, доставки и т.д. Мыслей было много, программа работала и использовалась почти каждый день.

Постепенно образовалась проблема следующего характера — никто не мог пользоваться этой программой, кроме меня. И заморачиваться установкой Python-а на комп ради одного калькулятора — так себе затея. Было решено — калькулятор в массы!! В этом оч помог краткий курс от https://python-scripts.com/ и тот же курс с канала Python Hub Studio прекрасно дополнил это дело по библиотекам TKINTER + pyinstaller, которые могут сделать из простого кода полноценное, самостоятельное приложение с расширением .exe! То есть, да, оно работает на любом компьютере как обыная прога.

Вот так пришло время КЛР V 3.0, код стал таким:

import tkinter as tk  # вводные данные из таблицы по стоимости лазерной резки t_list = [1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 20] price_list_100 = [27, 36, 57, 64, 76, 87, 111, 154, 191, 224, 360, 519] price_list_101 = [20, 28, 43, 50, 58, 68, 84, 125, 144, 186, 298, 432]   # функция по просчету площади, массы, стоимости металла def metal_params():     metal_square = (int(ent_length.get()) * int(ent_width.get())                     * 0.000001) * int(ent_number_of_pieces.get())     lbl_metal_square["text"] = f"Площадь металла: {metal_square} m^2"     metal_massa = int(ent_length.get()) * int(ent_width.get()) * \                   int(ent_t.get()) * int(ent_number_of_pieces.get()) * 0.0000078     lbl_metal_massa["text"] = f"Масса маталла: {metal_massa} кг"     global metal_money     metal_money = metal_massa * 100     lbl_metal_money["text"] = f'Стоимость металла: {int(metal_money)} рублей'   # функция по просчету стоимости резки  def cutting_cost():     cutting_length = int(ent_rezka.get())     for i in range(len(t_list)):         if int(ent_t.get()) == t_list[i] and cutting_length <= 100:             cutting_price = price_list_100[i]         elif int(ent_t.get()) == t_list[i] and cutting_length > 100:             cutting_price = price_list_101[i]     global cutting_money     cutting_money = cutting_length * cutting_price     if cutting_money < 5000:         cutting_money = 5000     lbl_cutting_money["text"] = f'Стоимость лазерной резки: {cutting_money} рублей'   # функция по просчету стоимости вставок def insert_cost():     global insert_money     insert_money = int(ent_vstavki.get()) * 5     lbl_insert_money["text"] = f'Стоимость вставок: {insert_money} рублей'   # функция по просчету стоимости гибки  def bending_cost():     bending_count = int(ent_gibov.get())     if bending_count < 20:         bending_price = 200     else:         bending_price = 100     global bending_money     bending_money = bending_count * bending_price     lbl_bending_money["text"] = f'Стоимость гибки: {bending_money} рублей'   # функция вызывает другие функции и считает итоговую стоимость, это команда для кнопки в приложении  def cost_out():     metal_params()     cutting_cost()     insert_cost()     bending_cost()     lbl_out_cost["text"] = f'Если металл наш: {metal_money + cutting_money + insert_money + bending_money}'     lbl_out_cost2["text"] = f'Если метал НЕ наш: {cutting_money + insert_money + bending_money}'   # создали окно и название окна window = tk.Tk() window.title('Калькулятор заказов в мастерской') window.resizable(width=False, height=False)  # создали рамку frm_data в которой разместили ярлыки и поля ввода frm_data = tk.Frame(master=window) lbl_length = tk.Label(master=frm_data, text='Длинна мм = ') lbl_width = tk.Label(master=frm_data, text='Ширина мм = ') lbl_t = tk.Label(master=frm_data, text='Толщина мм = ') lbl_number_of_pieces = tk.Label(master=frm_data, text='Кол-во деталей шт = ') lbl_rezka = tk.Label(master=frm_data, text='Длинна резки м/п = ') lbl_vstavki = tk.Label(master=frm_data, text='Кол-во вставок шт = ') lbl_gibov = tk.Label(master=frm_data, text='Кол-во гибов шт = ')  # поля ввода для каждого ярлыка ent_length = tk.Entry(master=frm_data, width=10) ent_width = tk.Entry(master=frm_data, width=10) ent_t = tk.Entry(master=frm_data, width=10) ent_number_of_pieces = tk.Entry(master=frm_data, width=10) ent_rezka = tk.Entry(master=frm_data, width=10) ent_vstavki = tk.Entry(master=frm_data, width=10) ent_gibov = tk.Entry(master=frm_data, width=10)  # указываем положение ярлыков в рамке lbl_length.grid(row=0, column=0, sticky="e") lbl_width.grid(row=1, column=0, sticky="e") lbl_t.grid(row=2, column=0, sticky="e") lbl_number_of_pieces.grid(row=3, column=0, sticky="e") lbl_rezka.grid(row=4, column=0, sticky="e") lbl_vstavki.grid(row=5, column=0, sticky="e") lbl_gibov.grid(row=6, column=0, sticky="e")  # указываем положение полей ввода в рамке ent_length.grid(row=0, column=1, sticky="w") ent_width.grid(row=1, column=1, sticky="w") ent_t.grid(row=2, column=1, sticky="w") ent_number_of_pieces.grid(row=3, column=1, sticky="w") ent_rezka.grid(row=4, column=1, sticky="w") ent_vstavki.grid(row=5, column=1, sticky="w") ent_gibov.grid(row=6, column=1, sticky="w")  # обьявляем кнопку btn_go = tk.Button(master=window, text='Посчитать', command=cost_out)  # рамка с результатами вычислений frm_result = tk.Frame(master=window, width=1000) # ярлыки в которых результаты вычислений lbl_metal_square = tk.Label(master=frm_result, text='Площадь металла: ') lbl_metal_massa = tk.Label(master=frm_result, text='Масса маталла: ') lbl_metal_money = tk.Label(master=frm_result, text='Стоимость металла: ') lbl_cutting_money = tk.Label(     master=frm_result, text='Стоимость лазерной резки: ') lbl_insert_money = tk.Label(master=frm_result, text='Стоимость вставок: ') lbl_bending_money = tk.Label(master=frm_result, text='Стоимость гибки: ') lbl_out_cost = tk.Label(master=frm_result, text='Если металл наш: ') lbl_out_cost2 = tk.Label(master=frm_result, text='Если металл НЕ наш: ') # указываем положение результатов в рамке результатов lbl_metal_square.grid(row=0, column=0) lbl_metal_massa.grid(row=1, column=0) lbl_metal_money.grid(row=2, column=0) lbl_cutting_money.grid(row=3, column=0) lbl_insert_money.grid(row=4, column=0) lbl_bending_money.grid(row=5, column=0) lbl_out_cost.grid(row=6, column=0) lbl_out_cost2.grid(row=7, column=0)  # указываем положение рамки и кнопки в общем окне frm_data.grid(row=0, column=0, padx=10) btn_go.grid(row=0, column=1, padx=10) frm_result.grid(row=0, column=2, padx=10)  # шоб все заработало window.mainloop() 

ввод и вывод стал выглядеть так:

+ если меняется один параметр , появилась возможность поменять его значение "на лету", а не вбивать все данные заново

+ если меняется один параметр , появилась возможность поменять его значение «на лету», а не вбивать все данные заново

Сейчас учу тему по ООП, хз делать V 4.0 или что то более масштабное сообразить?… Кто дочитал до конца — красавчик.

Респект автору канала Python Hub Studio, Я.Практикуму и всем кто выкладывает образовательные материалы по программированию. Земной поклон вам, сделаю вам скидку при просчете заказа 🙂


ссылка на оригинал статьи https://habr.com/ru/post/723218/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *