python正交表运用
程序员文章站
2024-03-22 16:48:28
...
1.首先制作一个简单的可视化界面,使用python自带库tkinter,代码如下
from tkinter.scrolledtext import ScrolledText
from tkinter import *
import tkinter as tk
import os
window = Tk()
window.title("正交表") # title() 定义这个窗口的标题
window.geometry("700x600") # geometry() 定义窗口的大小
Label(window, text="--输入数据--",font=("隶书", 14)).place(x=270, y=1)
scr = scrolledtext.ScrolledText(window, width=80, height=15, font=("隶书", 12)) # 滚动文本框(宽,高(这里的高应该是以行数为单位),字体样式)
scr.place(x=15, y=25) # 滚动文本框在页面的位置
Label(window, text="--输出结果为--",font=("隶书", 14)).place(x=265, y=270)
scr1 = scrolledtext.ScrolledText(window, width=80, height=15, font=("隶书", 12)) # 滚动文本框(宽,高(这里的高应该是以行数为单位),字体样式)
scr1.place(x=15, y=300) # 滚动文本框在页面的位置
button2 = Button(window, text="运 行",bg="green",font=("隶书", 20), command=yunxin) #按键
button2.place(x=540, y=560, width=80, height=30) #按键位置
button1 = Button(window, text="删 除",bg="red", font=("隶书", 20), command=cancelMsg) #anjian
button1.place(x=40, y=560, width=80, height=30) #按键位置
window.mainloop()
2.按键功能实现
def cancelMsg(): #删除功能
scr.delete('0.0', END)
scr1.delete('0.0', END)
def yunxin(): #运行
dop = [] #保存最终数据
doon = [] #保存正交表
don = [] #输入数据处理
counts = dict() # 字典类型
if scr.get('0.0', END) != "": #判定是否为空
di = scr.get('0.0', END).split("\n") #进行行分割
'''
for jox in di:
if jox!='':
w_x=w_x+1
'''
#print(di)
for i in di: #进行列分割
if i !="":
d=i.split(":")
dm=d[1].split(" ")
don.append(dm)
counts[len(dm)] = counts.get(len(dm), 0) + 1 #字典类型保存
print(don) #测试结果输出
print(counts) #测试结果输出
print(len(counts)) #测试结果输出
#print(counts.keys())
fo = open("G:\\python\\zhen.txt", "r", encoding='UTF-8') #打开正交表文件
m = 0 #开关按钮
for line in fo.readlines(): #按行输入
if m==1 and line!="\n":
doon.append(line.split("\n")[0]) #保存正交表
if m == 1 and line == "\n": #正交表存入完后跳出循环
break
if str(w_y)+"^"+str(w_x) in line and "n="+str(w_y*w_y) in line:
m=1 #开关按钮
if m==0: #寻找合适正交表
for no in counts.keys():
#print(str(no)+'^'+str(counts[no]))
if str(no)+'^'+str(counts[no]) in line:
print(str(no) + '^' + str(counts[no]))
m=1 #开关按钮
else:
m=0 #开关按钮
break #关闭内部for循环
print(doon) #测试结果输出
for fo in doon: #将结果输出到输出框
np=0
dp=[]
for jo in fo:
dp.append(don[np][eval(jo)])
np=np+1
dop.append(dp)
print(dop)
scr1.delete('0.0', END)
#scr1.insert(END, txtMsg1.get('0.0', END))
for jj in dop:
scr1.insert(END,jj)
scr1.insert(END, "\n")
运行结果如下。
本人新手,如有bug,还望提醒,我好进一步改良代码,谢谢。
推荐阅读
-
python正交表运用
-
如何用python 把一个excel表中的某行数据写入另外一个excel表中的某行
-
python操作mysql数据库读取一个数据库的表写入另一个数据库
-
生成Excel表-python
-
使用Python操作注册表 博客分类: python PythonMicrosoftAccess
-
用顺序表实现栈 --python描述
-
python运用深度学习生活垃圾分类,acc达到94以上
-
python pandas 判断表是不是有空的元素 isna()方法 isnull() 方法 区别 删除空值 插值空值 填充空值 处理
-
举例分析Python中设计模式之外观模式的运用
-
Python SQLAlchemy 操作数据库已有数据表