import random from fractions import Fraction #主干函数 def useAnsult(): print("\033[1;31m此软件能计算的类型有:1)两个整数之间加减运算 2)带有两位小数的两个数之间加减运算 3)两个分数之间加减运算\033[0m") print("\033[1;31m 4)两个整数之间乘除法运算 5)两个分数之间的加减运算\033[0m") homeworkType=int(input("请输入要生成的题目类型代号(1,2,3,4,5,6)中的其中一个:")) homeworkCount=int(input("请输入要生成的题目个数:")) level=input("\033[1;35m请输入你想计算的四则题目的等级(初级,中级,或高级):") if level=="初级": level=20 elif level=="中级": level=50 else: level=300 count=0 while count< homeworkCount: if homeworkType==1: count=count+1 print("第"+str(count)+"道题目") intAddSub(level) elif homeworkType==2: count=count+1 print("第"+str(count)+"道题目") decAddSub(level) elif homeworkType==3: count=count+1 print("第"+str(count)+"道题目") proFraAddSub(level) elif homeworkType==4: count=count+1 print("第"+str(count)+"道题目") intMulDiv(level) elif homeworkType==5: count=count+1 print("第"+str(count)+"道题目") proFraMulDiv(level) else: homeworkType=input("\033[1;35m没有该题目类型,输入错误,请重新输入:\033[0m") def intAddSub(level): typeCh=random.randint(0,1) #选择加减运算符 left=random.randint(0,level) #生成随机整数 right=random.randint(0,level) if typeCh==0: #加法运算 print(str(left)+"+"+str(right)+"= ?") input("请输入你的答案:") print("\033[1;35m正确答案是:\033[0m",str(left+right)) else: #减法运算 if left< right: #确保减法的结果不会出现负数 middleVariable=left left=right right= middleVariable print(str(left)+"-"+str(right)+" = ?") input("请输入你的答案:") print("\033[1;35m正确答案是:\033[0m",str(left-right)) def decAddSub(level): left = random.uniform(0, level) left=round(left, 2) #生成的随机数保留两位小数 right = random.uniform(0, level) right=round(right, 2) typeCh=random.randint(0,1) #选择加减运算符 if typeCh==0: #加法运算 print(str(left)+"+"+str(right)+"= ?") input("请输入你的答案:") print("\033[1;35m正确答案是:{:.2f}\033[0m".format(left+right)) else: #减法运算 if left< right: #确保减法的结果不会出现负数 middleVariable=left left=right right= middleVariable print(str(left)+"-"+str(right)+" = ?") input("请输入你的答案:") print("\033[1;35m正确答案是:{:.2f}\033[0m".format(left-right)) def proFraAddSub(level): number1=random.randint(0,level) number11=random.randint(1,level) left=Fraction(number1,number11 ) number2=random.randint(0,level) number22=random.randint(1,level) right=Fraction(number2,number22) typeCh=random.randint(0,1) #选择加减运算符 if typeCh==0: #加法运算 print(str(left)+"+"+str(right)+"= ?") input("请输入你的答案:") print("\033[1;35m正确答案是:\033[0m",str(Fraction(left+right))) else: #减法运算 if left< right: #确保减法的结果不会出现负数 middleVariable=left left=right right= middleVariable print(str(left)+"-"+str(right)+" = ?") input("请输入你的答案:") print("\033[1;35m正确答案是:\033[0m",str(Fraction(left-right))) #两个整数之间乘除运算 def intMulDiv(level): typeCh=random.randint(0,1) #选择运乘除算符 if typeCh==0: #乘法 left=random.randint(0,level) right=random.randint(0,level) print(str(left)+"*"+str(right)+"= ?") input("请输入你的答案:") print("\033[1;35m正确答案是:\033[0m",str(left*right)) else: #除法 if level<300: right=random.randint(1,level) left=right*random.randint(0,4) #此处考虑到用户如果选择初级或中级的除法计算,计算结果是整数比较好,故设除数是被除数的倍数 else: left=random.randint(1,level) right=random.randint(1,level) print(str(left)+"÷"+str(right)+" = ?") input("请输入你的答案:") if left%right==0: #判断是否能整除 print("\033[1;35m正确答案是:\033[0m",str(int(left/right))) else: print("\033[1;35m正确答案是:\033[0m",str(Fraction(left,right))) def proFraMulDiv(level): number1=random.randint(0,level) number11=random.randint(1,level) left=Fraction(number1,number11 ) typeCh=random.randint(0,1) #选择乘除运算符 if typeCh==0: #乘法运算 number2=random.randint(0,level) number22=random.randint(1,level) right=Fraction(number2,number22) print(str(left)+"*"+str(right)+"= ?") input("请输入你的答案:") print("\033[1;35m正确答案是:\033[0m",str(left*right)) else: #除法运算 number2=random.randint(1,level) number22=random.randint(1,level) right=Fraction(number2,number22) print(str(left)+"÷"+str(right)+" = ?") input("请输入你的答案:") print("\033[1;35m正确答案是:\033[0m",str(Fraction(left,right))) useAnsult()
PSP流程
|
PSP阶段 |
自己所花时间百分比 |
工程师所花时间百分比 |
|
计划 |
11 |
6 |
|
11 |
6 |
|
开发 |
83 |
88 |
|
6 |
10 |
|
5 |
6 |
|
4 |
6 |
|
5 |
3 |
|
9 |
12 |
|
38 |
21 |
|
4 |
9 |
|
11 |
21 |
|
报告 |
7 |
6 |
|
2 |
2 |
|
3 |
1 |
|
2 |
3 |
项目要求
- 能自动生成小学四则运算题目
解题思路
- 了解四则运算的基本法则
- 利用随机函数随机生成数字以及运算符
- 用户输入答案程序需要判断答案是否正确
设计实现及代码说明如上
运算结果:

浙公网安备 33010602011771号