Add scoring system with JSON configuration and point calculation logic
This commit is contained in:
65
main.py
65
main.py
@@ -0,0 +1,65 @@
|
||||
from jsonpath_ng.ext import parse
|
||||
import json
|
||||
|
||||
# 파일 경로 설정
|
||||
project_json_path = '/Users/waterdrw/Works/KAIT/Entry-Scoring/sample/제2410회 코딩활용능력 2급 B형 정답/project.json'
|
||||
scoring_json_path = '/Users/waterdrw/Works/KAIT/Entry-Scoring/scoring.json'
|
||||
|
||||
# JSON 파일 읽기
|
||||
def read_json(file_path):
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
return json.load(file)
|
||||
|
||||
# 요소 탐색 함수
|
||||
def find_element(project_data, jsonpath_expr):
|
||||
jsonpath_expr = parse(jsonpath_expr)
|
||||
return [match.value for match in jsonpath_expr.find(project_data)]
|
||||
|
||||
# 요소 탐색 함수
|
||||
def find_script_element(project_data, jsonpath_expr):
|
||||
jsonpath_expr = parse(jsonpath_expr)
|
||||
match = jsonpath_expr.find(project_data)
|
||||
|
||||
return match[0].value
|
||||
|
||||
|
||||
|
||||
|
||||
# main 함수
|
||||
def main():
|
||||
project_data = read_json(project_json_path)
|
||||
scoring_data = read_json(scoring_json_path)
|
||||
|
||||
total_points = 0
|
||||
|
||||
for key, value in scoring_data.items():
|
||||
ele = value.get('ele')
|
||||
type = value.get('type')
|
||||
blocks = value.get('blocks')
|
||||
|
||||
if type == "scene":
|
||||
exists = find_element(project_data, ele)
|
||||
if exists:
|
||||
# print(f"No elements found for {ele}")
|
||||
total_points += value.get('points')
|
||||
# else:
|
||||
# print(f"Element '{ele}' exists in project.json: {exists}")
|
||||
|
||||
if type == "script":
|
||||
exists = find_script_element(project_data, ele)
|
||||
temp = json.loads(exists)
|
||||
for block in blocks:
|
||||
block_exists = find_element(temp, block.get('ele'))
|
||||
|
||||
# 블록에 따라 params 값이나 statements 값이 있는 경우 처리 추가 필요
|
||||
|
||||
if block_exists:
|
||||
total_points += block.get('points')
|
||||
# else:
|
||||
# print(f"No elements found for {block.get('ele')}")
|
||||
|
||||
print(f"Total Points: {total_points}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user