标签:结果 amp 代码规范 ESS sig ror 错误 开发 测试
代码地址: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:
|
标签:结果 amp 代码规范 ESS sig ror 错误 开发 测试
原文地址:https://www.cnblogs.com/kriswang/p/10571495.html