小学生心算CAI系统

一、问题描述:
本系统可以用来进行单独的的加、减、乘、除心算练习,也可综合心算的正确率进行测试。当用户在进行简单的四则运算的正确率较高时,可以进入四则混合运算,借此来进一步提高自己的心算能力。
二、功能描述:
1.用户可以通过两种方法来选择功能,既可以按相应的数字键进入相应的心算练习,也可以按光标键来选择功能项。
2.计算机自动出题,用户进入每项练习时,屏幕上会显示用户所做的相应的题数,如果不想继续可以随时退出,如果不想继续可以输入任意字母或空格退出。
3.设计的系统完全适合用户,比如除法时考虑到小学生的水平问题,只允许出现整除情况。
4.用户输入的答案不对时,计算机会显示用户输入的结果错误;如果连续两次不对,计算机会自动给出正确答案,供用户参考。
5.界面设计友好。
三、算法提示:
1.用简单的程序设计方法
2.一定的窗口设计技巧
3.简单的数据类型
四、测试数据:
计算机随机产生
五、其它:
对该系统有兴趣的同学可在实现系统基本功能后完善系统其它功能。

from random import *
def menu():
    print('菜单'.center(32, '*'))
    print(" *** 欢迎进入小学生CAI数学学习乐园 ***")
    print(" ** 1. [+]加法运算 2. [-]减法运算 **")
    print(" ** 3. [X]乘法运算 4. [/]除法运算 **")
    print(" ** 5. [&]混合运算 6. [0]退出系统 **")
    print('*' * 33)
def main():
    menu()
    y = eval(input("请输入您想要做的题目个数:"))
    x = eval(input("请输入选择的菜单项目:"))
    while 1:
        if x == 1:
            p = 0
            o = 0
            c = 0
            while(y!=0):
                a = randint(0, 100)
                b = randint(0, 100)
                print("{}+{}=?".format(a,b))
                c = a + b
                d = input("请输入计算结果(退出请输入空格或任意字母):")
                if d == ' ' or 'a' <= d <= 'z' or 'A' <= d <= 'Z':
                    break
                else:
                    d = eval(d)
                    if (c == d):
                        p = p + 1
                        o = o + 1
                        y = y - 1
                        print("恭喜您答对了!!!继续加油")
                        print("当前总共答数为:{},答对题的个数为:{}".format(p,o))
                    else:
                        print("您答错了!!!还有一次机会")
                        e = input("请输入计算结果(退出请输入空格或任意字母):")
                        if e == ' ' or 'a' <= e <= 'z' or 'A' <= e <= 'Z':
                            break
                        else:
                            e = eval(e)
                            if (c == e):
                                p = p + 1
                                o = o + 1
                                y = y - 1
                                print("恭喜您答对了!!!继续加油")
                                print("当前总共答数为:{},答对题的个数为:{}".format(p,o))
                            else:
                                p = p + 1
                                y = y - 1
                                print("sorry,你已经答错了两次")
                                print("正确答案:{}".format(c))
                                print("当前总共答数为:{},答对题的个数为:{}".format(p,o))
        elif x == 2:
            l = 0
            k = 0
            c = 0
            while (y != 0):
                a = randint(0, 100)
                b = randint(a, 100)
                print("{}-{}=?".format(b,a))
                c = b - a
                d = input("请输入计算结果(退出请输入空格或任意字母):")
                if d == ' ' or 'a' <= d <= 'z' or 'A' <= d <= 'Z':
                    break
                else:
                    d = eval(d)
                    if (c == d):
                        l = l + 1
                        k = k + 1
                        y = y - 1
                        print("恭喜您答对了!!!继续加油")
                        print("当前总共答数为:{},答对题的个数为:{}".format(l, k))
                    else:
                        print("您答错了!!!还有一次机会")
                        e = input("请输入计算结果(退出请输入空格或任意字母):")
                        if e == ' ' or 'a' <= e <= 'z' or 'A' <= e <= 'Z':
                            break
                        else:
                            e = eval(e)
                            if (c == e):
                                l = l + 1
                                k = k + 1
                                y = y - 1
                                print("恭喜您答对了!!!继续加油")
                                print("当前总共答数为:{},答对题的个数为:{}".format(l, k))
                            else:
                                l = l + 1
                                y = y - 1
                                print("sorry,你已经答错了两次")
                                print("正确答案:{}".format(c))
                                print("当前总共答数为:{},答对题的个数为:{}".format(l, k))
        elif x == 3:
            j = 0
            h = 0
            c = 0
            while (y != 0):
                a = randint(0, 100)
                b = randint(0, 100)
                print("{}*{}=?".format(a,b))
                c = a * b
                d = input("请输入计算结果(退出请输入空格或任意字母):")
                if d == ' ' or 'a' <= d <= 'z' or 'A' <= d <= 'Z':
                    break
                else:
                    d = eval(d)
                    if (c == d):
                        j = j + 1
                        h = h + 1
                        y = y - 1
                        print("恭喜您答对了!!!继续加油")
                        print("当前总共答数为:{},答对题的个数为:{}".format(j, h))
                    else:
                        print("您答错了!!!还有一次机会")
                        e = input("请输入计算结果(退出请输入空格或任意字母):")
                        if e == ' ' or 'a' <= e <= 'z' or 'A' <= e <= 'Z':
                            break
                        else:
                            e = eval(e)
                            if (c == e):
                                j = j + 1
                                h = h + 1
                                y = y - 1
                                print("恭喜您答对了!!!继续加油")
                                print("当前总共答数为:{},答对题的个数为:{}".format(j, h))
                            else:
                                j = j + 1
                                y = y - 1
                                print("sorry,你已经答错了两次")
                                print("正确答案:{}".format(c))
                                print("当前总共答数为:{},答对题的个数为:{}".format(j, h))
        elif x == 4:
            g = 0
            f = 0
            c = 0
            while (y != 0):
                a = randrange(0,100,2)
                b = 2
                print("{}/{}=?".format(a,b))
                c = a / b
                d = input("请输入计算结果(退出请输入空格或任意字母):")
                if d == ' ' or 'a' <= d <= 'z' or 'A' <= d <= 'Z':
                    break
                else:
                    d = eval(d)
                    if (c == d):
                        g = g + 1
                        f = f + 1
                        y = y - 1
                        print("恭喜您答对了!!!继续加油")
                        print("当前总共答数为:{},答对题的个数为:{}".format(g, f))
                    else:
                        print("您答错了!!!还有一次机会")
                        e = input("请输入计算结果(退出请输入空格或任意字母):")
                        if e == ' ' or 'a' <= e <= 'z' or 'A' <= e <= 'Z':
                            break
                        else:
                            e = eval(e)
                            if (c == e):
                                g = g + 1
                                f = f + 1
                                y = y - 1
                                print("恭喜您答对了!!!继续加油")
                                print("当前总共答数为:{},答对题的个数为:{}".format(g, f))
                            else:
                                g = g + 1
                                y = y - 1
                                print("sorry,你已经答错了两次")
                                print("正确答案:{}".format(c))
                                print("当前总共答数为:{},答对题的个数为:{}".format(g, f))
            pp = 100 * (o+k+h+f) / (p+l+j+g)
            if (pp > 80):
                print("GOOD!你的正确率高达{}%,可以尝试混合运算啦".format(pp))
            else:
                print("你的正确率为{}%,还需要继续练习基础运算哦,加油!".format(pp))
        elif x == 5:
            sum = 0
            r = 0
            c = 0
            op = ['+', '-', '*', '/']
            while y != 0:
                a = randint(0, 100)
                b = randint(0, 100)
                m = randint(0, 100)
                s1 = choice(op)
                s2 = choice(op)
                print("{}{}{}{}{}=?".format(a, s1, b, s2, m))
                d = input("请输入计算结果(退出请输入空格或任意字母):")
                if d == ' ' or 'a' <= d <= 'z' or 'A' <= d <= 'Z':
                    break
                else:
                    d = eval(d)
                    if s1 == '+' and s2 == '+':
                        c = a + b + m
                    elif s1 == '+' and s2 == '-':
                        c = a + b - m
                    elif s1 == '+' and s2 == '*':
                        c = a + (b * m)
                    elif s1 == '+' and s2 == '/':
                        c = a + (b / m)
                    elif s1 == '-' and s2 == '+':
                        c = a - b + m
                    elif s1 == '-' and s2 == '-':
                        c = a - b - m
                    elif s1 == '-' and s2 == '*':
                        c = a - (b * m)
                    elif s1 == '-' and s2 == '/':
                        c = a - (b / m)
                    elif s1 == '*' and s2 == '+':
                        c = (a * b) + m
                    elif s1 == '*' and s2 == '-':
                        c = (a * b) - m
                    elif s1 == '*' and s2 == '*':
                        c = (a * b) * m
                    elif s1 == '*' and s2 == '/':
                        c = (a * b) / m
                    elif s1 == '/' and s2 == '+':
                        c = (a / b) + m
                    elif s1 == '/' and s2 == '-':
                        c = (a / b) - m
                    elif s1 == '/' and s2 == '*':
                        c = (a / b) * m
                    elif s1 == '/' and s2 == '/':
                        c = (a / b) / m
                    if int(c) == d:
                        sum = sum + 1
                        r = r + 1
                        y = y - 1
                        print("恭喜您答对了!!!继续加油")
                        print("当前总共答数为:{},答对题的个数为:{}".format(sum, r))
                    else:
                        print("您答错了!!!还有一次机会")
                        e = input("请输入计算结果(退出请输入空格或任意字母):")
                        if e == ' ' or 'a' <= e <= 'z' or 'A' <= e <= 'Z':
                            break
                        else:
                            e = eval(e)
                            if int(c) == e:
                                sum = sum + 1
                                r = r + 1
                                y = y - 1
                                print("恭喜您答对了!!!继续加油")
                                print("当前总共答数为:{},答对题的个数为:{}".format(sum, r))
                            else:
                                sum = sum + 1
                                y = y - 1
                                print("sorry,你已经答错了两次")
                                print("正确答案:{}".format(int(c)))
                                print("当前总共答数为:{},答对题的个数为:{}".format(sum, r))
        elif x == 6:
            print('运行结束,退出菜单操作')
            print("本次答题已结束,您总共做题数:{},正确答题数为:{}".format(p+l+j+g+sum,o+k+h+f+r))
            break
        menu()
        y = eval(input("请输入您想要做的题目个数:"))
        x = eval(input("请输入选择的菜单项目:"))
main()

自己学习编写的代码,欢迎交流学习!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值