このジョブは、参照してください必要があります。https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629
gitのリンクします。https://e.coding.net/kangzhe/size.git
ツイニングパートナー:冬の澤
各機能のための請求項1に、最初のテストは、次に符号化機能が与えられます。テストケースは、テストを完了するために、機能要件の指標として考えられますのでご注意ください。(40点)
機能と2つのテストケースの機能:
3つのテストケースの特長:
TDDテストフレームワークのテストケース:
すべてのテストケースの必要なブログのレポートで2事実(またはテストケースに合格するためにコードを変更しない)を報告し、プロセス全体を渡すために失敗し、収穫。最初のフレームに加えて、使い捨てテストパスの存在を確実にし、また、ワンタイムレポートを介して、機能を達成するために、このコードのような大部分を与えます。その双晶のパートナーを示し、仕事に提出ブログで2人の学生投稿者;ジョブ内の別の参照このブログを、その双晶パートナーを示しています。(40点)
テストケース2
次のような結果の実装は次のようになります。
失敗:出力に次の行ジョブの要件に合わせて、答えは解答を入力するために、同じ行に機能するはずですが、実行には?。
コードを変更します。
印刷(" ?"、終了= "" )
結果の実装後にコードを変更します。
3テストケース
次のような結果の実装は次のようになります。
テストケース4
次のような結果の実装は次のようになります。
キーコードの4つの以上の試験部分:
def function1(): right = 0 i = 0 while i in range(20): i = i + 1 equation = create_formula() re_equation = reverse_polish(equation) result = calculate(re_equation) answer0 = result if result is False or result is None or len(str(result)) > 12: i = i - 1 continue str_equation = " ".join('%s' % id for id in equation) print(str_equation + "=") print("?", end="") answer = float(input()) if abs(result - int(result)) < 1.0e-16: result = int(result) if answer == answer0: print("答对啦,你真是个天才!") right = right + 1 else: print("再想想吧,答案似乎是" + repr(result) + "喔!") print("你一共答对" + repr(right) + "道题,共20道题。")
测试用例5
执行效果如下:
测试用例6:
执行效果如下:
测试用例7
执行效果如下:
fail:虽然测试用例7的可以完成执行,但是对于输出还有点欠缺,在文本中的表达式后面需要有一个不等式,但是执行以后并没有出现。
修改代码:
equation.append('=\t\t')
修改代码后运行效果:
以上3个测试用例的部分代码:
def function3(n): n = int(n) i = 0 while i in range(n): i = i+1 equation = create_formula() re_equation = reverse_polish(equation) result = calculate(re_equation) if result is False or result is None or len(str(result)) > 12: i = i-1 continue if i is 1: if os.path.exists('result.txt'): os.remove('result.txt') write_file(equation, result)
测试用例8:
执行效果如下:
生成表达式部分代码:
def create_formula(): equation = [] for i in range(3): equation.append(random.randint(0, 10)) equation.append(operator[random.randint(0, 3)]) equation.append(random.randint(0, 10)) p = random.randint(1, 5) if p is 1: equation.insert(0, "(") equation.insert(4, ")") elif p is 2: equation.insert(0, "(") equation.insert(6, ")") elif p is 3: equation.insert(2, "(") equation.insert(6, ")") elif p is 4: equation.insert(2, "(") equation.append(")") elif p is 5: equation.insert(4, "(") equation.append(")") return equation
生成速记公式测试代码:
def test01_create_formula(self): print("create_formula函数单元测试开始:") self.assertIsNotNone(create_formula()) print("OK") print("create_formula函数单元测试结束。\n")
测试用例9:
执行效果如下:
前缀表达式转成后缀表达式部分代码:
def reverse_polish(equation): result = [] c = [] slist = [i for i in equation] for item in slist: if item in range(0, 100): result.append(item) elif not c and item in operator_dic.keys(): c.append(item) continue elif c and item in operator_dic.keys(): for x in range(c.__len__()): z = c[-1] temp = operator_dic[z] if z in operator_dic else cal1[z] if temp >= operator_dic[item]: result.append(c.pop()) else: c.append(item) break if not c: c.append(item) elif item is ")": for x in range(c.__len__()): if c[-1] == "(": c.pop() break else: result.append(c.pop()) elif item is "(": c.append(item) for x in range(c.__len__()): result.append(c.pop()) return result
前缀转后缀表达式测试代码:
def test02_reverse_polish(self): eq = [] print("reverse_polish函数单元测试开始:") equation = input("输入一个四则运算(括号请使用英文版的括号):") _eq_ans = input("输入正确的后缀表达式:") # 输入的表达式是str类型,该函数处理的是含有整型和字符型的list类型 list(equation) for temp in equation: if '0' <= temp <= '9': eq.append(int(temp)) else: eq.append(temp) re_equation = reverse_polish(eq) str_equation = "".join('%s' % id for id in re_equation) self.assertEqual(_eq_ans, str_equation) print("OK") print("reverse_polish函数单元测试结束。\n")
测试用例10:
执行效果如下:
计算后缀表达式部分代码:
def calculate(re_equation): stack = Stack() sumEnd = 0 if len(re_equation) is 0: return sumEnd for i in re_equation: if i in range(0, 100): stack.push(float(i)) elif '+' is i: a = stack.pop() b = stack.pop() stack.push(b + a) elif '-' is i: a = stack.pop() b = stack.pop() stack.push(b - a) elif '*' is i: a = stack.pop() b = stack.pop() stack.push(b * a) elif '÷' is i: a = stack.pop() b = stack.pop() if a == 0: return False else: stack.push(b / a) return stack.pop()
计算后缀表达式测试代码:
def test03_calculate(self): eq = [] print("calculate函数单元测试开始:") equation = input("输入一个可计算的后缀表达式:") _eq_ans = input("输入该表达式的正确结果:") list(equation) for temp in equation: if '0' <= temp <= '9': eq.append(int(temp)) else: eq.append(temp) result = calculate(eq) self.assertEqual(float(_eq_ans), result) print("OK") print("calculate函数单元测试结束。\n")