当前位置:   article > 正文

2019.07.一年级暑假——自动随机生成100以内加减法算术题的python实现_100以内加减法自动生成

100以内加减法自动生成

原新浪博客(http://blog.sina.com.cn/billsona)搬迁至此。

前言

暑假开始了,作为一个学渣的老爹,内心自然是崩溃的。
一年级数学老师布置的一项暑假作业是,小朋友每天完成20道口算和5道两位数的竖式计算。
作为一个资深IT民工,立马想到了用代码自动生成题目,这么有规律的要求,人怎么可能比得过机器的速度和精准度?说干就干,一个小时后,出现了如下的代码,运行环境是python3。


import random

string = ""
for day in range(1, 61):
    string = string + "\nThis is day " + str(day) + "\n"
    # 用来记录每天的题目个数
    k = 0
    # 用来记录每行算术题的个数
    num = 0
    # 取999999是为了保证能够每天生成20道符合要求的题目
    for i in range(0, 999999):
        if k < 20:
            flag = random.choice([" + ", " - "])
            exp = ""
            # 如果是加号,保证两个数都不超过50,目前学的都是100以内的数
            if flag == " + ":
                a = str(random.randint(1, 50)).ljust(2, " ")
                b = str(random.randint(1, 50)).ljust(2, " ")
                exp = a + flag + b + " ="
            # 如果是减号,保证被减数和减数都小于100即可
            else:
                a = random.randint(1, 100)
                b = random.randint(1, 100)
                # 保证较大的数作为被减数
                if a < b:
                    tmp = a
                    a = b
                    b = tmp
                a = str(a).ljust(2, " ")
                b = str(b).ljust(2, " ")
                exp = a + flag + b + " ="
            if num < 3:
                string = string + exp + "        "
                num = num + 1
            # 达到4个题目,换行
            else:
                string = string + exp + "\n"
                num = 0
            k = k + 1
        # 用来记录每天的题目个数
    k = 0
    # 定义一个列表,用来存放竖式计算的题目,列表当中的元素是一个长度为2的列表,第一个元素是数啊,第二个元素是符号(+/-)和b
    # 例如list=[[11, + 22], [33, + 44]]
    list = []
    # 取999999是为了保证能够每天生成20道符合要求的题目
    for i in range(0, 999999):
        # 每行放置5道竖式计算题,保证竖式计算中的两个数都是两位数,并且加法的时候,两个数都不超过50
        if k < 5:
            flag = random.choice(["+ ", "- "])
            if flag == " + ":
                a = "   " + str(random.randint(10, 50)) + "   " + "        "
                b = " " + flag + str(random.randint(10, 50)) + "  " + "        "
            else:
                a = random.randint(10, 99)
                b = random.randint(10, 99)
                if a < b:
                    tmp = a
                    a = b
                    b = tmp
                # 设置特定数量的空格或者tab,是为了保证竖式是对齐的,美观的,可读的
                a = "   " + str(a) + "   " + "       "
                b = " " + flag + str(b) + "  " + "        "
            list.append([a, b])
            k = k + 1
    # 因为是逐行打印,所以将5道竖式题目中的a,组成单独的一行打印
    line1 = list[0][0] + list[1][0] + list[2][0] + list[3][0] + list[4][0] + "\n"
    # 因为是逐行打印,所以将5道竖式题目中的+/-号和b,组成单独的一行打印
    line2 = list[0][1] + list[1][1] + list[2][1] + list[3][1] + list[4][1] + "\n"
    # 因为是逐行打印,所以将5道竖式题目中的横线,组成单独的一行打印
    ttt = "--------       "
    line3 = ttt + ttt + ttt + ttt + ttt + "\n\n"  # 打印完横线后,空一行便于孩子写结果
    string = string + line1 + line2 + line3
    print(string)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

运行结果如下:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/294558
推荐阅读
相关标签
  

闽ICP备14008679号