本篇教程由作者设定未经允许禁止转载。

我随便写了个计算涡轮全部结构的发电数据及材料需要。

# -*- coding:utf-8 -*-
import math;
import os;
import xlsxwriter as xw;

# 本工具用于V10以下
# 默认值
i = 2 # 从第二行开始写数据


def xw_toExcel(data, i):  # xlsxwriter库储存数据到excel
    insertData = [data["1"], data["2"], data["3"], data["4"], data["5"], data["6"], data["7"], data["8"], data["9"], data["10"], data["11"], data["12"], data["13"], data["14"], data["15"], data["16"], data["17"], data["18"], data["19"]]
    row = 'A' + str(i)
    worksheet1.write_row(row, insertData, bold)
    i += 1
    return i
   
# 计算
def Calculation(width, high, Split_laer):
    turbine_size = str(width)+" * "+str(high)+" * "+str(width)                                                # 涡轮大小
    turbine_casing = str(high*4+(width-2)*8+(width-2)**2)                                                  # 涡轮外壳
    structural_glass = str((Split_laer-2)*((width-2)*4))                                                             # 结构方块
    turbine_casing_whole = str((high*4+(width-2)*8+(width-2)**2)+((Split_laer-2)*((width-2)*4))) # 涡轮外壳(全)
    pressure_disperser = str((width-2)**2-1)                                                                           # 分压元件
    turbine_vent = str(((width-2)**2)+(high-Split_laer)*((width-2)*4))                                   # 涡轮排气口
    turbine_rotor = str(Split_laer-2)                                                                                        # 涡轮转子
    turbine_blade = str((Split_laer-2)*2)                                                                                 # 涡轮叶片
    rotational_complex = 1                                                                                                    # 复杂旋钮装置
    electromagnetic_coil = str(math.ceil(((Split_laer-2)*2)/4))                                               # 电磁线圈
    saturating_condenser = str((width-2)**2*(high-Split_laer-1)-math.ceil(((Split_laer-2)*2)/4)) # 饱和冷凝器
    tank_volume = str((Split_laer-2)*(width**2))                                                                    # 储罐容积(蒸汽层容积)
                                                                                                                                             # 最大流量(mB/t)
    if ((width-2)**2)+(high-Split_laer)*((width-2)*4)*16000 <= (width**2)*(Split_laer-2)*((width-2)**2-1)*640:
        max_flow = ((width-2)**2)+(high-Split_laer)*((width-2)*4)*16000
    else:
        max_flow = (width**2)*(Split_laer-2)*((width-2)**2-1)*640
    max_capacity = str((max_flow*((Split_laer-2)*2)*(25/7))*2.0/5.0/1000000.0)                   # 最大产能(MRF/t)
    steam_buffer = str(((width-2)**2)*(Split_laer-2)*64000)                                                   # 蒸汽缓存量(mB)
    energy_cache = str((width**2)*high*16000*2/5/1000000)                                               # 最大能量缓存量(GRF)
    max_return_water = str((((width-2)**2)+(high-Split_laer)*((width-2)*4))*16000)             # 最大回水量(mB/t)
    date_list = [turbine_size,Split_laer, turbine_casing, structural_glass, turbine_casing_whole,# 数据列表化
                pressure_disperser, turbine_vent, turbine_rotor, turbine_blade,
                rotational_complex,electromagnetic_coil, saturating_condenser, "", tank_volume,
                max_flow, max_capacity, steam_buffer, energy_cache, max_return_water]
    num_list = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19'] # 19种数据
    date_dict = dict(zip(num_list,date_list))                                                    # 压缩为字典
    return date_dict

# 删除文件
try:
    if os.path.exists('数据.xlsx') != False:
        os.remove('数据.xlsx')
except PermissionError:
    print("另一个程序正在使用此文件,进程无法访问。: \'数据.xlsx\'")

workbook = xw.Workbook('数据.xlsx')  # 创建工作簿
worksheet1 = workbook.add_worksheet("sheet1")  # 创建子表
worksheet1.activate()  # 激活表
bold = workbook.add_format({'border':2})
title = ['涡轮大小', '分压元件高度位置', '涡轮外壳', '结构方块', '涡轮外壳(全)', '分压元件', '涡轮排气口', '涡轮转子', '涡轮叶片', '复杂旋钮装置', '电磁线圈', '饱和冷凝器', '', '储罐容积', '最大流量(mB/t)', '最大产能(MRF/t)', '蒸汽缓存量(mB)', '能量缓存量(GRF)', '最大回水量(mB/t)']  # 设置表头
worksheet1.write_row('A1', title, bold)  # 从A1单元格写入表头

input_ = input("选择自动写入全部数据填1,自己输入大小数据填2: ")
if input_ == "1":
    # 自动写入所以可能
    for width in range(5,18):
        for high in range(5,19):
            for Split_laer in range(3,high-1):
                # 将文件写入Excel
                testData = Calculation(width, high, Split_laer)
                fileName = '数据.xlsx'
                i = xw_toExcel(testData, i)
                print("写入完成: "+str(i-2))
    workbook.close()  # 关闭表


if input_ == "2":
    # 输入结构大小
    width = input("涡轮的大小(宽):")
    high = input("涡轮的大小(高):")
    Split_laer = input("涡轮分压元件的高度位置(上部分的高度必须大于2层,下部分的高度必须大于0层):")
    # 转换
    width = int(math.floor(float(width)))
    high = int(math.floor(float(high)))
    Split_laer = int(math.floor(float(Split_laer)))
    # 判断结构大小是否合法
    if Split_laer <= high-2 and Split_laer >= 3:
        pass
    else:
        print("分压元件的高度必须在3~"+str(high-2)+"的区间内")
    if width < 5 or width > 17:
        print("宽需要大于等于5或小于等于17")
    if high < 5 or high > 18:
        print("高需要大于等于5或小于等于18")

    # 将文件写入Excel
    if high >= 5 and high <= 18 and width >= 5 and width <= 17 and Split_laer <= high-2 and Split_laer >= 1:
        testData = Calculation(width, high, Split_laer)
        fileName = '数据.xlsx'
        xw_toExcel(testData, i)
    print("写入完成")
    workbook.close()  # 关闭表

if input_ != "1" and input_ != "2":
    print("想啥呢,就俩选择")