1 import random
2 import os
3 import tkinter
4 import tkinter.ttk
5 from docx import Document
6 columnsNumber = 4
7 def main(rowsNumbers=20,grade=4):
8 if grade < 3:
9 operators = '+-'
10 biggest = 20
11 elif grade <= 4:
12 operators = '+-×÷'
13 biggest = 100
14 elif grade == 5:
15 operators = '+-×÷('
16 biggest = 100
17
18 document = Document()
19 table = document.add_table(rows=rowsNumbers,cols=columnsNumber)
20 table.style.font.name = '宋体'
21 for row in range(rowsNumbers):
22 for col in range(columnsNumber):
23 first = random.randint(1,biggest)
24 second = random.randint(1,biggest)
25 operator = random.choice(operators)
26
27 if operator != '(':
28 if operator == '-':
29 if first < second:
30 first,second = second,first
31 r = str(first).ljust(2,' ')+' ' + operator + str(second).ljust(2,' ') + '='
32 else:
33 third = random.randint(1,100)
34 while True:
35 o1 = random.choice(operators)
36 o2 = random.choice(operators)
37 if o1 != '(' and o2 !='(':
38 break
39 rr = random.randint(1,100)
40 if rr > 50:
41 if o2 == '-':
42 if second < third:
43 second,third = third,second
44 r = str(first).ljust(2,' ') + o1 +'('+str(second).ljust(2,' ')+o2+str(third).ljust(2,' ')+')='
45 else:
46 if o1 == '-':
47 if first < second:
48 first,second = second,first
49 r = '(' + str(first).ljust(2,' ') + o1 +str(second).ljust(2,' ')+')'+o2+str(third).ljust(2,' ')+'='
50 cell = table.cell(row,col)
51 cell.text = r
52 document.save('kousuan.docx')
53
54 if __name__ == '__main__':
55 app = tkinter.Tk()
56 app.title('KouSuan.zWrite')
57 app['width'] = 300
58 app['height'] = 150
59 lableNumber = tkinter.Label(app,text='Number:',justify=tkinter.RIGHT,width=50)
60 lableNumber.place(x=10,y=40,width=50,height=20)
61 comboNumber = tkinter.ttk.Combobox(app,values=(100,200,300,400,500),width=50)
62 comboNumber.place(x=70,y=40,width=50,height=20)
63
64 labelGrade = tkinter.Label(app,text='Grade:',justify=tkinter.RIGHT,width=50)
65 labelGrade.place(x=130,y=40,width=50,height=20)
66 comboGrade = tkinter.ttk.Combobox(app,values=(1,2,3,4,5),width=50)
67 comboGrade.place(x=200,y=40,width=50,height=20)
68
69 def generate():
70 number = int(comboNumber.get())
71 grade = int(comboGrade.get())
72 main(number,grade)
73 buttonGenerate = tkinter.Button(app,text='=',width=40,command=generate)
74 buttonGenerate.place(x=130,y=90,width=40,height=30)
75
76 app.mainloop()