# -*- coding: utf-8 -*-
"""
Created on Sat Sep 11 08:47:35 2021
@author: Lysim
"""
import random
from fractions import Fraction
#主干函数
def main():
print("此软件能计算的类型有: \n1)两个整数之间加减运算 \n2)带有两位小数的两个数之间加减运算 \n3)两个分数之间加减运算")
print("4)两个整数之间乘除法运算 \n5)两个分数之间的加减运算")
Type=int(input("请输入要生成的题目类型代号(1,2,3,4,5,6)中的其中一个:"))
Num=int(input("请输入要生成的题目个数:"))
level=input("请输入你想计算的四则题目的等级(初级,中级,或高级):")
if level=="初级":
level=20
elif level=="中级":
level=50
else:
level=300
count=0
while count< Num:
if Type==1:
count=count+1
print("第"+str(count)+"道题目")
intAddSub(level)
elif Type==2:
count=count+1
print("第"+str(count)+"道题目")
decAddSub(level)
elif Type==3:
count=count+1
print("第"+str(count)+"道题目")
proFraAddSub(level)
elif Type==4:
count=count+1
print("第"+str(count)+"道题目")
intMulDiv(level)
elif Type==5:
count=count+1
print("第"+str(count)+"道题目")
proFraMulDiv(level)
else:
Type=input("没有该题目类型,输入错误,请重新输入:")
def intAddSub(level):
typeR=random.randint(0,1)
num1=random.randint(0,level)
num2=random.randint(0,level)
if typeR==0:
print(str(num1)+"+"+str(num2)+"= ?")
answer=input("请输入你的答案:")
if(answer==str(num1+num2)):
print("恭喜你!答对了!")
else:
print("很抱歉,答错了,正确答案是:",str(num1+num2))
else:
if num1<num2:
mid=num1
num1=num2
num2= mid
print(str(num1)+"-"+str(num2)+" = ?")
answer=input("请输入你的答案:")
if(answer==str(num1-num2)):
print("恭喜你!答对了!")
else:
print("正确答案是:",str(num1-num2))
def decAddSub(level):
typeR=random.randint(0,1)
num1 = random.uniform(0, level)
num1=round(num1, 2)
num2 = random.uniform(0, level)
num2=round(num2, 2)
if typeR==0:
print(str(num1)+"+"+str(num2)+"= ?")
answer=input("请输入你的答案:")
if(answer==format(num1+num2)):
print("恭喜你!答对了!")
else:
print("正确答案是:{:.2f}".format(num1+num2))
else:
if num1< num2:
mid=num1
num1=num2
num2= mid
print(str(num1)+"-"+str(num2)+" = ?")
answer=input("请输入你的答案:")
if(answer==format(num1-num2)):
print("恭喜你!答对了!")
else:
print("很遗憾,答错了,正确答案是:{:.2f}".format(num1-num2))
def proFraAddSub(level):
typeR=random.randint(0,1)
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)
if typeR==0:
print(str(left)+"+"+str(right)+"= ?")
answer=input("请输入你的答案:")
if(answer==str(Fraction(left+right))):
print("恭喜你!答对了!")
else:
print("很遗憾,答错了,正确答案是:",str(Fraction(left+right)))
else:
if left< right:
middleVariable=left
left=right
right= middleVariable
print(str(left)+"-"+str(right)+" = ?")
answer=input("请输入你的答案:")
if(answer==str(Fraction(left-right))):
print("恭喜你!答对了!")
else:
print("很遗憾,答错了,正确答案是:",str(Fraction(left-right)))
def intMulDiv(level):
typeR=random.randint(0,1)
if typeR==0:
num1=random.randint(0,level)
num2=random.randint(0,level)
print(str(num1)+"*"+str(num2)+"= ?")
answer=input("请输入你的答案:")
if(answer==str(num1*num2)):
print("恭喜你!答对了!")
else:
print("很遗憾,答错了,正确答案是:",str(num1*num2))
else:
if level<300:
num2=random.randint(1,level)
num1=num2*random.randint(0,4)
else:
num1=random.randint(1,level)
num2=random.randint(1,level)
print(str(num1)+"÷"+str(num2)+" = ?")
answer=input("请输入你的答案:")
if num1%num2==0:
if(answer==str(int(num1/num2))):
print("恭喜你!答对了!")
else:
print("很遗憾,答错了,正确答案是:",str(int(num1/num2)))
else:
if(answer==str(Fraction(num1,num2))):
print("恭喜你!答对了!")
else:
print("很遗憾,答错了,正确答案是:",str(Fraction(num1,num2)))
def proFraMulDiv(level):
typeR=random.randint(0,1)
number1=random.randint(0,level)
number11=random.randint(1,level)
left=Fraction(number1,number11 )
if typeR==0:
number2=random.randint(0,level)
number22=random.randint(1,level)
right=Fraction(number2,number22)
print(str(left)+"*"+str(right)+"= ?")
answer=input("请输入你的答案:")
if(answer==str(left*right)):
print("恭喜你!答对了!")
else:
print("正确答案是:",str(left*right))
else:
number2=random.randint(1,level)
number22=random.randint(1,level)
right=Fraction(number2,number22)
print(str(left)+"÷"+str(right)+" = ?")
answer==input("请输入你的答案:")
if(answer==str(Fraction(left,right))):
print("恭喜你!答对了!")
else:
print("很遗憾,答错了,正确答案是:",str(Fraction(left,right)))
main()