结对编程——自定义四则运算测试

发布时间 2023-04-11 10:14:24作者: 苏打猫

本次结对编程由本人和2152814陈嘉盛使用python共同完成。

程序代码:

import random
import operator

def main():
    global t
    ops = {'+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.truediv}
    num1 = random.randint(1, 100)
    num2 = random.randint(1, 100)
    num3 = random.randint(1, 100)
    op1 = random.choice(list(ops.keys()))
    op2 = random.choice(list(ops.keys()))

    result = ops[op2](ops[op1](num1, num2), num3)

    while result > 100 or result < 0:
        num1 = random.randint(1, 100)
        num2 = random.randint(1, 100)
        num3 = random.randint(1, 100)
        op1 = random.choice(list(ops.keys()))
        op2 = random.choice(list(ops.keys()))
        result = ops[op2](ops[op1](num1, num2), num3)

    print(f'{num1} {op1} {num2} {op2} {num3} ')
    res = int(input("请输入你的答案(整数部分)"))
    if res == int(result):
        print("回答正确")
        t += 1
    else:
        print("回答错误")
        result = round(result)
        print(f"正确答案为{result}")

all = int(input("请输入您想要回答题目的数量:"))
t = 0
for i in range(1,all+1):
    main()
ans = t*100//all
print(f"您最终的正确率为{ans}%!")

 

 

运行结果:

 

 step1:输入此次测试需要回答题目的数量,程序自动生成相应数量的题目

 

step2:做题界面,如果遇到不可整除的题目可以输入整数部分解答

 

 step3:

答题完毕显示准确率并退出

心得体会:

我们的此次编程追求代码的简洁,因此选择了python作为我们的语言,在编程进行到生成题目的时候,队友与我讨论了如何面对生成的题目答案含有小数,虽然可以使用round暴力四舍五入(还是会有一定问题),但陈嘉盛认为小学左右的水平已经可以理解非整除除法中的整数部分,因此选择了输入答案的整数部分来测试学生的数学能力。

由于是面对面的编程形式且代码规模较小,我们精简了编写注释的过程,且有2次发现了代码中的错误,找出错误原因的效率大大提升。