美文网首页
2020-04-04

2020-04-04

作者: Steve_Lv | 来源:发表于2020-04-04 22:41 被阅读0次

    今日实现:使用python生成小学四则运算卷与答案

    环境:VScode,python3.7.6

    首先在创立的文件夹中新建文件,此时文件名默认untitle,VScode并不知道我们将要的编写的是python文件,从而不会有字符高亮,自动缩进等,需首先保存文件(快捷键cmd+s)并命名为.py后缀即可。

    今日的目标内容:

    1. 0~100以内的四则运算,被除数不出现0
    2. 试卷以20行*5题的形式排列
    3. 生成试卷同时生成答案卷

    接下来开始正式编写程序

    第一步我们需要创建两个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是怎么样的机制,是否方便,并且赶一下论文进度,待在家里一拖再拖,现在按照计划于应该已经写完初稿了,希望明天可以开始继续下笔!

    相关文章

      网友评论

          本文标题:2020-04-04

          本文链接:https://www.haomeiwen.com/subject/tcasphtx.html