我有以下PHP代码,它使用某些给定的代码创建一个python文件,使用一些测试用例执行它,并根据它传递的测试用例数对代码进行分级。请注意,每个代码示例都是一个python函数,用于一些简单的计算。
<?php
if ($_POST["request_type"] === "release_grades") {
$_POST["request_type"] = "get_answers";
$answers = json_decode(very_simple_post_curl($back_address), TRUE);
$_POST["request_type"] = "get_quiz";
$questions = json_decode(very_simple_post_curl($back_address), TRUE);
foreach ($answers as $index => $answer) {
$answers[$index]["testcases"] = array();
$answers[$index]["constraints"] = array();
$data_original = $answer["AnswerText"];
$question = $questions[$answer["TestQuestionID"]];
$func_name = $question["QuestionFuncName"];
$testcases = $question["testcases"];
$answers[$index]["grade"] = $max_unscaled_grade = count($question["testcases"]);
foreach ($testcases as $key => $value) {
$data = $data_original . "\nprint(" . $func_name . $value["QuestionTestcaseArgs"] . ")";
$fh = file_put_contents('test.py', $data);
if ($fh === false)
die();
$output = trim(shell_exec("python test.py"));
if ($output === $value["QuestionTestcaseReturn"]) {
$answers[$index]["testcases"][$value["QuestionTestcaseID"]] = "PASSED";
} else {
$answers[$index]["testcases"][$value["QuestionTestcaseID"]] = "FAILED";
$answers[$index]["grade"] --;
}
}
$answers[$index]["grade"] /= $max_unscaled_grade;
$answers[$index]["grade"] *= intval($question["TestQuestionPoints"]);
}
}
哪些迭代将一些执行的Python代码的结果与以下json中提取的测试用例进行比较:
{"1":{"QuestionID":"1","QuestionDifficulty":"medium","QuestionText":"Write a function \"fibonacci\" that takes 1 integer parameter, n, which computes the fibonacci value for n.","QuestionFuncName":"fibonacci","testcases":[{"QuestionTestcaseID":"1","QuestionID":"1","QuestionTestcaseArgs":"(10, 10)","QuestionTestcaseReturn":"20"},{"QuestionTestcaseID":"2","QuestionID":"1","QuestionTestcaseArgs":"(3, 1)","QuestionTestcaseReturn":"4"},{"QuestionTestcaseID":"5","QuestionID":"1","QuestionTestcaseArgs":"(5)","QuestionTestcaseReturn":"5"},{"QuestionTestcaseID":"6","QuestionID":"1","QuestionTestcaseArgs":"(10)","QuestionTestcaseReturn":"55"}],"constraints":[{"QuestionConstraintID":"1","QuestionID":"1","QuestionConstraint":""}]}
但是,我还为每个执行的代码输入都有一个函数名,在进行测试用例评分之前,我想查看函数名是否对齐,并相应地修改等级。我如何从$data
收集函数名称,以便将其与$func_name
进行比较?
编辑:
$data
看起来像:
def add(a, b):
return a+b