PSP四则运算升级

 

 

代码:

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()

 

运行结果:

 

posted @ 2021-09-27 22:07  。61  阅读(56)  评论(0)    收藏  举报