小学数学口算题生成器,小学生口算题自动生成程序

生活百科 2023-04-28 13:48生活百科www.xingbingw.cn

  编程写代码是脑力劳动,软件开发看似是做虚拟东西的工作,但电脑程序大多有明确的用途,好的程序很实用。

  学习python也注重学以致用。越快越好。我们现在用python编写一个实用程序,不仅可以自己重用,还可以送给别人生成小学生口算题。

  ,让我们将目标变得更加具体和清晰——确定需求

  一次生成100道加减口算题,连续给出10道题供用户练习,一题一题;如有错题,打印出来给用户看。按照自学Python高级的方式——把代码变成程序和软件,我们会把实现这些功能的所有代码放在一个文件里mathExam.py写完之后,你可以反复运行这个文件,多次使用,或者发给同学朋友。

  为了提高编程题的效果,我们期望每一次的题型都有很大的变化——这在编程中常被称为“随机”。这个函数可以使用python基础库中的随机库,我们只是使用其中的randint函数随机生成一个整数。

  这里我们提到了编程中的一个新概念函数。Python程序代码中的函数和数学书上的不同,但功能非常相似。定义Python的函数格式如下3360

   Def NAME (P1,P2,P3) :函数体返回结果其中Def是python的关键字,这意味着我们要开始定义一个函数,后面的functionName就是函数名——你可以自己为这部分想一个名字,后面的括号和逗号分隔的部分就是函数的参数——可以在使用函数的时候临时提供,这样下面的代码就可以重用和灵活更改,这就是函数的强大和魅力。

   Python代码

  函数是所有现代编程语言中最基本、最重要的代码组织和代码重用形式,几乎无处不在所有软件代码中。上面提到的随机库提供了很多随机生成数据的函数,下面我们将使用其中的randint函数。

  函数的functionBody部分是我们编码实现函数的地方,最终的返回结果是将我们工作的结果返回给使用我们函数的人。

  就像python本身的基本库中有很多函数一样,我们也可以在我们的mathExam.py中编写多个函数,并用它们来组织我们的代码。

  ,我们定义一个函数来解决需求1的部分

   #随机生成心算题的函数及其正确结果DEF GENONEEXECUTE(): opt=random . randint(0,1) #如果opt==1:则取0到1之间的随机值#如果随机结果为1,我们将生成加法心算题a=random.randint(1,99) #注意这里是99 b=random.randint(1,100-a) #这是保证一百以内加法的地方。Result=a b return a,opt,B,result else 3360 #如果随机结果为0,我们将生成减法问题A=random.randint (1,100) B=random.randint (1,100)如果A B : Result=A-B return A,opt,B,Result else: result=b-a #这里是避免还原不充分的地方。返回b,opt,a,result我们函数第一行的定义括号是空的,也就是说使用的时候不需要提供参数。每次使用这个函数,据程序员说,都会生成一个符合上述要求1的结果。里面的randint(start,end)函数,调用它得到一个数,这个数是从A开头(含A)到B结尾(含B)的范围内随机选取的。

  心算的题目和结果存储在一个元组中,用1和0分别表示加减运算。我们不能把-符号放在变量中,因为这两个符号是python语言中的特殊类型符号,不同于数字或者字符串数据。,当随机加减运算被记录并存储在变量中时,我们对它们进行转换。类似地,下面的输出提示也应该进行相应的转换。

  下面看看需求2里的代码长什么样

   def做题(次):随机。种子(时间。时间())#为了保障随机效果,每次运行时给随机系统一个变化的种子error list=[]I=0 while I乘以 x,op,y,RES=genOneExercise()if op==1: tip=str(x) str(y)= else : tip=str(x)- str(y)= ret=int(input(ti

  p)) # 注意把输入的字符串类型转换成数学计算的整型 if ret != res: # 只有口算结果错了时才记录 record = (x, op, y, res, ret) # 把一次口算错误的信息组织成一个元组 errorList.append( record ) i = i + 1 return errorList

  注意这个函数的定义我们指定了参数变量 times – 做口算题的次数,这样我们在调用的地方就可以方便地规定一次做多少道口算题目了。这里我们把口算的题目的提示转换成字符串的日常数学式子后,放在python内部自带的函数 input里当作参数输出到屏幕上,并等待你输一个数字给程序。

  我们把回答不对的口算题记录在一个列表变量里,做完后就是把这个变量里的记录信息输出来查看 – 完成需求3的功能

  # 打印口算结果def printErrors(errors): if len(errors) > 0: print("口算错误的题目:") for error in errors: a, op, b, result, yourInput = error if op == 1: tip = str(a) + + + str(b) + = + str(result) + ", 你的错误答案:" + str(yourInput) else: tip = str(a) + - + str(b) + = + str(result) + ", 你的错误答案:" + str(yourInput) print(tip) else: print("恭喜你全部答对!")

  可以看到,这个函数末尾没有return语句 – 我们不期望从它获取什么返回数据,让它把信息直接输出在屏幕上给我们看到即可。

  到此我们把需求的3个功能都做完了,离可用起来还差一点还必须把它们组织保持到文件里, 并在文件的执行入口里调用(还记得 自学Python进阶-把代码变成程序,软件 说明的地方么?)。

  下面是代码完整地放到文件里的样子

  #!/usr/bin/env python3importtime#这行代码让我们能够使用python基础库的time库里函数importrandom#这行代码让我们能够使用python生成随机数的函数# 随机生成一个口算题及其正确结果的函数def genOneExercise(): opt = random.randint(0, 1) # 在0和1中随机取一个值 if opt == 1: # 如果随机得到的是 1,我们就生成加法口算题 a = random.randint(1, 99) # 注意这里是 99 b = random.randint(1, 100-a) # 这是保证百以内加法的地方 result = a + b return a, opt, b, result else: # 如果随机得到的是 0,我们就生成减法口算题 a = random.randint(1, 100) b = random.randint(1, 100) if a > b: result = a - b return a, opt, b, result else: result = b - a # 这里是避免出现减数不够的地方 return b, opt, a, result# 做口算练习, 做的题目个数通过函数参数指定def doExercises(times): random.seed(time.time()) # 为了保障随机效果,每次运行时给随机系统一个变化的种子 errorList = [] i = 0 while i < times: x, op, y, res = genOneExercise() if op == 1: tip = str(x) + + + str(y) + = else: tip = str(x) + - + str(y) + = ret = int(input(tip)) # 注意把输入的字符串类型转换成数学计算的整型 if ret != res: # 只有口算结果错了时才记录 record = (x, op, y, res, ret) # 把一次口算错误的信息组织成一个元组 errorList.append( record ) i = i + 1 return errorList# 打印口算结果def printErrors(errors): if len(errors) > 0: print("口算错误的题目:") for error in errors: a, op, b, result, yourInput = error if op == 1: tip = str(a) + + + str(b) + = + str(result) + ", 你的错误答案:" + str(yourInput) else: tip = str(a) + - + str(b) + = + str(result) + ", 你的错误答案:" + str(yourInput) print(tip) else: print("恭喜你全部答对!")# 本文件执行时的入口 - 运行时从这里开始if __name__ == __main__: errors=doExercises(10)#来10个口算题练练吧:) printErrors(errors) # 告诉我口算结果如何...

  试试把它用起来,你会遇到什么问题么?欢迎留言,下次一起来解决你的问题,完善我们的口算出题器。

Copyright@2015-2025 www.xingbingw.cn 性病网版板所有