用PY 写个计算电阻的均值的程序,并且保存到excel里面
用py 的模块pysimpleGUI做可视化窗口,
1. 需要样品号;
2.填写你有几个电阻值要计算, 比如:R1到R3共计3个;
3.点击计算Rave,得到Rave这个值在当前可视化窗口里,Ri是指R1到R3的填写的数值, Rave=(Ri)/3;
要想自己做新的计算公式可以在代码一开始的第五行(def calculate_values(values):)进行自己的计算公式填入;
4.点击计算Rimb时,得到Rimb的数值在当前可视化窗口里,Rimb = math.sqrt(Rave / 3);
5.以上所有的数值以及样品号都写入excel;
6.并命名为Resistance Imbalance_+样品号的表格;
import PySimpleGUI as sg
import math
import openpyxl
def calculate_values(values):
# 获取输入的R1到R3的数值
r_values = [float(values[f'-R{i}-']) for i in range(1, 4)]
# 计算Ri和Rave
ri = sum(r_values)
rave = ri / 3
# 计算Rimb
rx = sum(((ri - rave) / rave) ** 2 for ri in r_values)
rimb = math.sqrt(rx / 3)
return ri, rave, rimb
def write_to_excel(sample_number, ri, rave, rimb):
# 创建一个新的Excel文件
workbook = openpyxl.Workbook()
sheet = workbook.active
# 写入表头
sheet['A1'] = '样品号'
sheet['B1'] = 'Ri'
sheet['C1'] = 'Rave'
sheet['D1'] = 'Rimb'
# 写入数据
sheet.append([sample_number, ri, rave, rimb])
# 保存Excel文件
file_name = f'Resistance Imbalance_{sample_number}.xlsx'
workbook.save(file_name)
def main():
# 定义布局
layout = [
[sg.Text('样品号:'), sg.Input(key='-SAMPLE_NUMBER-')],
[sg.Text('R1:'), sg.Input(key='-R1-')],
[sg.Text('R2:'), sg.Input(key='-R2-')],
[sg.Text('R3:'), sg.Input(key='-R3-')],
[sg.Button('计算 Rave'), sg.Button('计算 Rimb')],
[sg.Output(size=(30, 5))]
]
# 创建窗口
window = sg.Window('Resistance ---Author : Dieter', layout)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
if event == '计算 Rave':
ri, rave, _ = calculate_values(values)
print(f'Rave: {rave}')
if event == '计算 Rimb':
_, _, rimb = calculate_values(values)
print(f'Rimb: {rimb}')
sample_number = values['-SAMPLE_NUMBER-']
write_to_excel(sample_number, ri, rave, rimb)
window.close()
if __name__ == '__main__':
main()