今日实现:使用python生成小学四则运算卷与答案
环境:VScode,python3.7.6
首先在创立的文件夹中新建文件,此时文件名默认untitle,VScode并不知道我们将要的编写的是python文件,从而不会有字符高亮,自动缩进等,需首先保存文件(快捷键cmd+s)并命名为.py后缀即可。
今日的目标内容:
- 0~100以内的四则运算,被除数不出现0
- 试卷以20行*5题的形式排列
- 生成试卷同时生成答案卷
接下来开始正式编写程序
第一步我们需要创建两个txt文件:
q = open('quiz.txt','w')
qa = open('quizans.txt','w')
open函数会打开文件,若不存在则创建文档。’w‘ 是写入模式,清空之前文档内容重新写入,其他模式可以参考菜鸟教程的Python 文件I/O。
第二步生成题目并写入文件
import random
op=['+','-','*','/']
要想生成随机数,我们需要使用到random包,而四则运算我们选择手动创立并在后续随机生成0~3数字的方式进行随机选择。
程序主体是两个嵌套的for循环:
for l in range(20):
for c in range(5):
opn=random.randint(0,3)
if opn != 3:
#3对应op中除号位置,若非除法运算则在0~100间随机生成数字,不然则选择1~100
num1=random.randint(0,100)
num2=random.randint(0,100)
else:
num1=random.randint(1,100)
num2=random.randint(1,100)
eq=str(num1)+op[opn]+str(num2)
ans=eval(eq)
#eval函数可以自动运算表示式,但不清楚如何保留小数或固定位数小数
qa.write("%3d %s %3d = %-10d"%(num1,op[opn],num2,ans))
q.write("%3d %s %3d = %-10s"%(num1,op[opn],num2,''))
# 为了整齐考虑,每个数字分配3个字节,最后结果分配10个字节,并且%-10d使用’-‘以实现左对齐
qa.write('\n')
q.write('\n')
#每行五道题出完后换行
qa.close()
q.close()
关于生成运算符部分也看到有使用以下方法实现
ops = random.choice(op)
但这样的方式会使得判断除法较为不方便。
今天还顺便将简书设置为markdown书写模式,一边书写一边预览的方式很舒服,就像最近通过latex+sublimetext+skim写论文的感觉。明天计划探索一下直接在VScode内上传github是怎么样的机制,是否方便,并且赶一下论文进度,待在家里一拖再拖,现在按照计划于应该已经写完初稿了,希望明天可以开始继续下笔!
网友评论