四则运算
Posted kriswang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四则运算相关的知识,希望对你有一定的参考价值。
代码地址:https://github.com/kriswang10/kriswang10.github.io/blob/master/calculate.py
首先拿到题目的思路比较乱,整理了一下分成两大块,一块用于随机生成一道随机计算题,另一块则由用户自己要求题目数量,由系统随机生成。
由于是给小学生的题目,将生成函数分为两类,一类为生成整数型的四则运算为newint()函数,另一类则是分数型的为newfra()函数。其中整数型的数字范围在0-20,分数型则在
0-10取分数,而且所有运算都先通过比较大小来避免产生负数。
主函数则先由用户选择进行哪块来达成需求,为降低难度,产生的随机题目会尽量出现更多的整数型计算,也由随机数来决定,用户可以在输入0000后退出程序。
以下为源代码
import time def newint(): sym=[‘+‘,‘-‘,‘ב,‘÷‘] fh=random.randint(0,3) n1=random.randint(1,20) n2=random.randint(1,20) result=0 if fh == 0: result=n1+n2 elif fh == 1: n1,n2=max(n1,n2),min(n1,n2) result=n1-n2 elif fh == 2: result=n1*n2 elif fh == 3: n1,n2=max(n1,n2),min(n1,n2) while n1%n2 !=0: n1=random.randint(1,10) n2=random.randint(1,10) n1,n2=max(n1,n2),min(n1,n2) result=int(n1/n2) print(n1,sym[fh],n2,‘=‘,end=‘ ‘) return result def newfra(): sym=[‘+‘,‘-‘,‘ב,‘÷‘] fh=random.randint(0,3) t1=random.randint(1,10) t2=random.randint(t1,10) n1=Fraction(t1,t2) t1=random.randint(1,10) t2=random.randint(t1,10) n2=Fraction(t1,t2) result=0 if fh == 0: result=n1+n2 elif fh == 1: n1,n2=max(n1,n2),min(n1,n2) result=n1-n2 elif fh == 2: result=n1*n2 elif fh == 3: n1,n2=max(n1,n2),min(n1,n2) result=n1/n2 print(n1,sym[fh],n2,‘=‘,end=‘ ‘) return result def newtest(): sym=[‘+‘,‘-‘,‘ב,‘÷‘] n=int(input()) result=[] m=0 while m<=(n-1): fh = random.randint(0,4) if fh ==0: print(m+1,end=‘、‘) result.append(newfra()) print(‘ ‘) else: print(m+1,end=‘、‘) result.append(newint()) print(‘ ‘) m = m + 1 m=0 print(‘答案:‘) while m <=(n-1): print(m+1,‘、‘,result[m]) m = m + 1 def main(): print(‘1、四则运算‘) print(‘2、制作题库‘) n=int(input()) if n == 1: print(‘input"0000"to Quit‘) while True: fh = random.randint(0,4) if fh == 0: result=newfra() jg=input() if jg == ‘0000‘: break; ans = Fraction(jg) if ans == result: print(‘right‘) else: print(‘error,the right answer is‘,result) else: result= newint() jg = input() if jg == ‘0000‘: break; ans = Fraction(jg) if ans == result: print(‘right‘) else: print(‘error,the right answer is‘,result) if n==2: print(‘需要制作多少道题目:‘) newtest() if __name__==‘__main__‘: main()
程序测试:
以上为程序的简单测试,未出现明显BUG或错误,以下为我用python自带的cProfile函数做的效能分析
当程序作出10000道题目时也迅速给出了结果,程序中的算法可能还有待提升,但基本满足要求且迅速。
PSP:
|
以上是关于四则运算的主要内容,如果未能解决你的问题,请参考以下文章
获取 badarith,[erlang,'+',[error,0],[],同时使用 Erlang 片段在 TSUNG 中执行算术运算