この仕事に必要な、参照してください:[ https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629 ]
ツイニングパートナー:漢ハオ
•テストケースを必要としています。
機能1
機能2
機能3
•2詳細なテストレポートが必要です
機能1
(A)実施例番号2、3を持ちます。
「?」?「?」「」最初の入力F4では、式の後に印刷ライン出力を変更する必要があり、その後、答えに式を入力し、次のように、いや、必要に応じて、その後、コードを変更してみてください。
印刷(発電機+ ' = \ nの?')
しかし、これは、このような別の出力に改行が続き、出力を作ります「?」:
出力はそれをラップしないようにする方法?調査のコードは、キーの変更です。
印刷(発電機+ ' = \ nの?'、終了= "" )
最後に、最適なソリューション
(II)実施例番号4を有します
原因式に、ホット焼き教師や学生をChaogangを受けて追加、と彼は答えを入力していないことに怒って、単にEnterを押し、結果はその後、どうなりますか?
私はそれを行う方法を、その後、我々はそのようなことが起こるようにしたい、彼はこれがもっと怒るだろう見て推測する、あるいはコンピュータを壊しましたか?それのポイント!
while i < num: mid_experison = Exp_Generator.Generator() generator = mid_experison.generate() print(generator + '=\n?', end="") suffix_expression = middle_to_after(generator) value = cal_suffix_exp_value(suffix_expression) answer = input() if answer.strip() == '': print('仿佛你拒绝回答了这道题,没关系,我们换一道,加油') continue if '?' in answer: answer = answer.replace('?', '') print_result(float(answer), value) i += 1
最后输出是这样的:
功能2
(一)用例编号7
表达式转换成逆波兰式功能测试成功:
TDD(UnitTest)关键代码:
# 表达式转换成逆波兰式功能测试 def test_middle_to_after(self): print("表达式转换成逆波兰式功能单元测试开始:") _eq = input("输入一个四则运算中缀表达式:") _eq_ans = input("输入此中缀表达式的后缀表达式:") self.assertEqual(_eq_ans, Test()._test_middle_to_after(eq=_eq)) print("表达式转换成逆波兰式功能单元测试结束。", end='\n\n') print("表达式求值功能测试完成", end='\n\n')
(二)用例编号8
不含括号表达式计算测试:
TDD(UnitTest)关键代码:
# 表达式求值功能测试(不含括号) def test_answer_nobra(self): print("表达式求值功能单元测试(不含括号)开始:") _eq = input("输入一个四则运算:") _eq_ans = input("输入一个正确的答案:") self.assertEqual(_eq_ans ,Test()._test_answer(eq = _eq)) print("表达式求值功能单元测试结束。", end='\n\n') print("表达式求值功能测试完成", end='\n\n')
(三)用例编号9
含括号表达式计算测试:
TDD(UnitTest)关键代码:
# 表达式求值功能测试(含括号) def test_answer_bra(self): print("表达式求值功能单元测试(含括号)开始:") _eq = input("输入一个四则运算:") _eq_ans = input("输入一个正确的答案:") self.assertEqual(_eq_ans, Test()._test_answer(eq=_eq)) print("表达式求值功能单元测试结束。", end='\n\n') print("表达式求值功能测试完成", end='\n\n')
整体单元测试:
功能3
(一)用例编号10、11、12
运行出错,是因为程序要根据用户输入的数字,来决定要输出的表达式的行数,而python默认从终端读进来的参数是str类型,所以需要将str类型的参数转换为int类型才可以利用到循环控制中。
# 功能三输出一行计算表达式及结果 def print_exp_result(num): i = 0 num = int(num) while i < num: generate = Exp_Generator.Generator() mid_experision = generate.generate() suffix_expression = middle_to_after(mid_experision) value = cal_suffix_exp_value(suffix_expression) mid_experision += '=' print('%-15s %-15s' % (mid_experision, value)) i += 1
修改成功后:
收获
接触python时间不长,第一次用python写如此规模的程序,感受到了python语法如此简洁且资源库如此强大带来的方便。不过在本次编程由fail到pass过程中,之所以fail的原因,大部分还是对语言本身理解掌握不够、需求分析不彻底不充分,最大的收获是,问题驱动下的学习方式,比单纯为了学技术而学技术,更实际可靠。
• 要求4 版本控制。