一、问题描述:
本系统可以用来进行单独的的加、减、乘、除心算练习,也可综合心算的正确率进行测试。当用户在进行简单的四则运算的正确率较高时,可以进入四则混合运算,借此来进一步提高自己的心算能力。
二、功能描述:
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()
自己学习编写的代码,欢迎交流学习!