软件工程第一次作业——小学四则运算
GitHub项目地址:https://github.com/boker11/-/blob/master/%E5%9B%9B%E5%88%99%E8%BF%90%E7%AE%97%E4%B9%9E%E4%B8%90%E7%89%88.py

解题思路描述:在网上寻找相似代码的时候发现,他们写的代码都比较复杂,函数众多看起来比较吃力,所以参考了一个比较简单的代码略加改进。
我改进的代码是三个数字的加减乘除运算,计算过程中不会出现负数,假分数。要求保留两位小数。
主要代码:
import random
def Farithmetic(m):
print("小学四则运算测试(共%d道,答案保留两位小数):" % m)
ysf = ['+', '-', '*', '/']
i = 1 #题号
n = 0 #记录答题正确个数
while i <= m:
add1 = random.randint(1, 100) #数
add2 = random.randint(1, 100)
add3 = random.randint(1, 100)
op1 = random.randint(0, 3) #随机运算符
op2 = random.randint(0, 3)
eq = str(add1)+ysf[op1]+str(add2)+ysf[op2]+str(add3) #算式
eq1 = str(add1)+ysf[op1]+str(add2)
eq2 = str(add2)+ysf[op2]+str(add3)
val1 = eval(eq1)
val2 = eval(eq2)
val = eval(eq) # 算式答案
if ysf[3] in eq: #判断是否出现真分数
if ysf[3] in eq1:
if val1 > 1:
tmp = add1
add1 = add2
add2 = tmp
if val1 == 1:
continue
else:
if val2 > 1:
tmp = add2
add2 = add3
add3 = tmp
if val2 == 1:
continue
eq = str(add1)+ysf[op1]+str(add2)+ysf[op2]+str(add3) #算式重置
val = eval(eq)
if val1 < 0 or val2 < 0 or val < 0: #判断答案是否为负数
continue
if val > 1000: # 限制答案在合理范围
continue
print("题目%d:%s=" % (i, eq))
ans = input("用户回答:")
if val == int(ans):
print("Congratulation,you are right!")
n += 1
else:
print("Sorry,your answer is error.The right answer is %.2f" % val)
if i == m: # 退出循环
y = n / (i - 1)
print("本次答题结束,答题正确率是:%.2f" % y)
i += 1
m = int(input('输入需要出的题目数:'))
Farithmetic(m)
测试运行:

用时分析:


浙公网安备 33010602011771号