2602 수시 채점완료
This commit is contained in:
@@ -49,11 +49,17 @@ def copy_ent_files(source_root, target_root):
|
||||
|
||||
# source_directory = r"D:\project\data\CAS_제2510회 정기\제2510회 코딩활용능력 2급 정기 답안파일" # 원본 디렉토리 경로
|
||||
|
||||
# test_name = "2512_CAS_2_A"
|
||||
test_name = "2601_CAT_3_A"
|
||||
# test_name = "2602_2_CAS_2_A"
|
||||
# test_name = "2602_2_CAS_2_B"
|
||||
test_name = "2602_3_CAS_2_A"
|
||||
# test_name = "2602_6_CAS_2_B"
|
||||
|
||||
|
||||
# source_directory = r"D:\project\data\CAT_제2511회 정기\답안파일" # 원본 디렉토리 경로
|
||||
source_directory = r"D:\project\data\CAT_제2601회 정기\CAT_제2601회 정기\CAT_답안파일" # 원본 디렉토리 경로
|
||||
# source_directory = r"D:\project\data\제2602회 수시2_CAS(구미)\답안파일\A형" # 원본 디렉토리 경로
|
||||
# source_directory = r"D:\project\data\제2602회 수시2_CAS(구미)\답안파일\B형" # 원본 디렉토리 경로
|
||||
# source_directory = r"D:\project\data\제2602회 수시2_CAS(구미)\답안파일\B형" # 원본 디렉토리 경로
|
||||
source_directory = r"D:\project\data\제2602회 수시3_CAS(대구)\답안파일" # 원본 디렉토리 경로
|
||||
target_directory = rf".\ent\{test_name}" # 타겟 디렉토리 경로
|
||||
|
||||
copy_ent_files(source_directory, target_directory)
|
||||
|
||||
@@ -50,7 +50,7 @@ def process_ent_files(ent_dir, output_dir):
|
||||
|
||||
# 실행 예
|
||||
if __name__ == "__main__":
|
||||
test_names = ["2601_CAT_3_A"]
|
||||
test_names = ["2602_6_CAS_2_B"]
|
||||
# test_names = ["2512_CAS_2_A", "2512_CAS_2_B"]
|
||||
for test_name in test_names:
|
||||
ent_dir = f".\\ent\\{test_name}"
|
||||
|
||||
BIN
260129_2601_CAT_3_A_채점결과.xlsx
Normal file
BIN
260129_2601_CAT_3_A_채점결과.xlsx
Normal file
Binary file not shown.
BIN
260203_2602_2_CAS_2_A_채점결과.xlsx
Normal file
BIN
260203_2602_2_CAS_2_A_채점결과.xlsx
Normal file
Binary file not shown.
BIN
260203_2602_2_CAS_2_B_채점결과.xlsx
Normal file
BIN
260203_2602_2_CAS_2_B_채점결과.xlsx
Normal file
Binary file not shown.
BIN
260204_2602_2_CAS_2_A_채점결과.xlsx
Normal file
BIN
260204_2602_2_CAS_2_A_채점결과.xlsx
Normal file
Binary file not shown.
BIN
260204_2602_2_CAS_2_B_채점결과.xlsx
Normal file
BIN
260204_2602_2_CAS_2_B_채점결과.xlsx
Normal file
Binary file not shown.
BIN
260204_2602_3_CAS_2_A_채점결과.xlsx
Normal file
BIN
260204_2602_3_CAS_2_A_채점결과.xlsx
Normal file
Binary file not shown.
BIN
260204_2602_6_CAS_2_B_채점결과.xlsx
Normal file
BIN
260204_2602_6_CAS_2_B_채점결과.xlsx
Normal file
Binary file not shown.
743
correct/2602_2_CAS_2_A.json
Normal file
743
correct/2602_2_CAS_2_A.json
Normal file
@@ -0,0 +1,743 @@
|
||||
{
|
||||
"1-1": {
|
||||
"type": "scene",
|
||||
"ele": "$.[objects,scenes][?(@.name=='장면 1')]",
|
||||
"point": 1.7,
|
||||
"desc": "장면 1/[배경] 이름 설정 1/이름 변경 없음",
|
||||
"sort": 11
|
||||
},
|
||||
"1-2": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='나의 방')]",
|
||||
"point": 1.7,
|
||||
"desc": "장면 2/[배경] 이름 설정 2/이름을 ‘나의 방’으로 변경하기",
|
||||
"sort": 12
|
||||
},
|
||||
"1-3": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='놀이동산')]",
|
||||
"point": 1.7,
|
||||
"desc": "놀이동산(1)/[개체] 이름 설정 1/이름을 ‘놀이동산’으로 변경하기",
|
||||
"sort": 13
|
||||
},
|
||||
"1-4": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='학원')]",
|
||||
"point": 1.7,
|
||||
"desc": "건물(6)/[개체] 이름 설정 2/이름을 ‘학원’으로 변경하기",
|
||||
"sort": 14
|
||||
},
|
||||
"1-5": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=~'우리집')]",
|
||||
"point": 1.7,
|
||||
"desc": "예쁜집/[개체] 이름 설정 3/이름을 ‘우리집’으로 변경하기",
|
||||
"sort": 15
|
||||
},
|
||||
"1-6": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=~'어린이')]",
|
||||
"point": 1.7,
|
||||
"desc": "어린이(2)/[개체] 이름 설정 4/이름을 ‘어린이’로 변경하기",
|
||||
"sort": 16
|
||||
},
|
||||
"3-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'놀이동산')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "놀이동산/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "놀이동산/[시작]의 세부 동작 1/크기를 ‘100’ 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-25",
|
||||
"80"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "놀이동산/[시작]의 세부 동작 2/x: ‘-25’ y: ’80’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.56,
|
||||
"desc": "놀이동산/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].params[0]",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog_time",
|
||||
"놀이동산 입니다!",
|
||||
"1.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "놀이동산/[오브젝트]의 세부 동작/‘놀이동산 입니다!’ 를 ’1.5‘ 초 동안 ‘말하기’",
|
||||
"type": "list"
|
||||
}
|
||||
]
|
||||
},
|
||||
"4-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=='학원')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"80"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "[시작]의 세부 동작 1/크기를 ‘80’ 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"170",
|
||||
"-80"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "[시작]의 세부 동작 2/x: ‘170’ y: ’-80’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.56,
|
||||
"desc": "학원/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].params[0]",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog_time",
|
||||
"학원 입니다!",
|
||||
"1.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "학원/[오브젝트]의 세부 동작/‘학원 입니다!’ 를 ’1.5‘ 초 동안 ‘말하기’",
|
||||
"type": "list"
|
||||
}
|
||||
]
|
||||
},
|
||||
"13-0": {
|
||||
"ele": "$.messages[?(@.name=='놀이동산')]",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/신호/'놀이동산' 신호 만들기",
|
||||
"type": "scene"
|
||||
},
|
||||
"14-0": {
|
||||
"ele": "$.messages[?(@.name=='학원')]",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/신호/'학원' 신호 만들기",
|
||||
"type": "scene"
|
||||
},
|
||||
"5-0": {
|
||||
"type": "script",
|
||||
"ele": "$..objects[?(@.name=~'우리집')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "우리집/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"110"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/[시작]의 세부 동작 1/크기를 ‘110’ 으로 정하기 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-170",
|
||||
"-90"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/[시작]의 세부 동작 2/x: ‘-170’ y: ‘-90’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.56,
|
||||
"desc": "우리집/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"ask_and_wait",
|
||||
"첫 번째로 방문할 장소는?"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/[오브젝트]의 세부 동작 1/‘첫 번째로 방문할 장소는?’ 을 묻고 대답 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/[오브젝트]의 세부 동작 2/‘0.5’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[1]",
|
||||
"$[1][3].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"_if",
|
||||
"EQUAL",
|
||||
"놀이동산"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/만일 1/만일 ‘대답’ = ‘놀이동산’ 이라면 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].statements[0][0].type",
|
||||
"$[1][3].statements[0][0].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"message_cast",
|
||||
null
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/[만일 1]의 세부 동작/‘놀이동산’ 신호 보내기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][4].type",
|
||||
"$[1][4].params[0].params[1]",
|
||||
"$[1][4].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"_if",
|
||||
"EQUAL",
|
||||
"학원"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/만일 2/만일 ‘대답’ = ‘학원’ 이라면 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][4].statements[0][0].type",
|
||||
"$[1][4].statements[0][0].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"message_cast",
|
||||
null
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "우리집/[만일 2]의 세부 동작/‘학원’ 신호 보내기",
|
||||
"type": "list"
|
||||
}
|
||||
]
|
||||
},
|
||||
"6-0": {
|
||||
"type": "script",
|
||||
"ele": "$..objects[?(@.name=~'어린이')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "어린이/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"40"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[시작]의 세부 동작 1/크기를 ‘40’ 으로 정하기 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-170",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[시작]의 세부 동작 2/x: ‘-170’ y: ‘-100’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][3].type",
|
||||
"answer": "repeat_inf",
|
||||
"point": 1.56,
|
||||
"desc": "어린이/반복/계속 반복하기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][0].type",
|
||||
"$[0][3].statements[0][0].params[0].type",
|
||||
"$[0][3].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"_if",
|
||||
"is_press_some_key",
|
||||
"39"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/만일/만일 ’오른쪽 화살표’ 키가 눌러져 있는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][0].statements[0][0].type",
|
||||
"$[0][3].statements[0][0].statements[0][0].params[0].params[0]",
|
||||
"$[0][3].statements[0][0].statements[0][0].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-90",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[만일]의 세부 동작/x: ‘-90’ y: ‘-100’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_message_cast",
|
||||
"point": 1.56,
|
||||
"desc": "어린이/신호 1/‘놀이동산’ 신호를 받았을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].type",
|
||||
"$[1][1].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
"until"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/반복 1/‘놀이동산’ 에 닿았는가? ‘이 될 때까지’ 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].statements[0][0].type",
|
||||
"$[1][1].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 1]의 세부 동작 1/‘2’ 초 동안 ‘놀이동산’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].statements[0][1].type",
|
||||
"$[1][1].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 1]의 세부 동작 2/‘0.5’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].type",
|
||||
"$[1][2].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
"until"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/반복 1/‘학원’ 에 닿았는가? ‘이 될 때까지’ 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].statements[0][0].type",
|
||||
"$[1][2].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 1]의 세부 동작 1/‘2’ 초 동안 ‘학원’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].statements[0][1].type",
|
||||
"$[1][2].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"1"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 1]의 세부 동작 2/‘1’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]",
|
||||
"$[1][3].params[1].params[0]",
|
||||
"$[1][3].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy_time",
|
||||
"2",
|
||||
"-120",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[신호 1]의 세부 동작 1/’2‘ 초 동안 x: ‘-120’ y: ‘-100’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][4].params[0].params[0]",
|
||||
"$[1][4].params[1].params[0]",
|
||||
"$[1][4].params[2]"
|
||||
],
|
||||
"answer": [
|
||||
"집 도착!",
|
||||
"1",
|
||||
"speak"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[신호 1]의 세부 동작 2/‘집 도착!’ 을 ‘1’ 초 동안 ’말하기‘",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][5].type",
|
||||
"$[1][5].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"start_neighbor_scene",
|
||||
"next"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[신호 1]의 세부 동작 3/‘다음’ 장면 시작하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_message_cast",
|
||||
"point": 1.56,
|
||||
"desc": "어린이/신호 1/‘학원’ 신호를 받았을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][1].type",
|
||||
"$[2][1].params[0].type",
|
||||
"$[2][1].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
"until"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/반복 1/‘학원’ 에 닿았는가? ‘이 될 때까지’ 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][1].statements[0][0].type",
|
||||
"$[2][1].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 1]의 세부 동작 1/‘2’ 초 동안 ‘학원’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][1].statements[0][1].type",
|
||||
"$[2][1].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 1]의 세부 동작 2/‘0.5’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][2].type",
|
||||
"$[2][2].params[0].type",
|
||||
"$[2][2].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
"until"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/반복 2/‘놀이동산’ 에 닿았는가? ‘이 될 때까지’ 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][2].statements[0][0].type",
|
||||
"$[2][2].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 2]의 세부 동작 1/‘2’ 초 동안 ‘놀이동산’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][2].statements[0][1].type",
|
||||
"$[2][2].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"1"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[반복 2]의 세부 동작 2/‘1’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][3].type",
|
||||
"$[2][3].params[0].params[0]",
|
||||
"$[2][3].params[1].params[0]",
|
||||
"$[2][3].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy_time",
|
||||
"2",
|
||||
"-120",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[신호 1]의 세부 동작 1/’2’ 초 동안 x: ‘-120’ y: ‘-100’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][4].params[0].params[0]",
|
||||
"$[2][4].params[1].params[0]",
|
||||
"$[2][4].params[2]"
|
||||
],
|
||||
"answer": [
|
||||
"집 도착!",
|
||||
"1",
|
||||
"speak"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[신호 1]의 세부 동작 2/‘집 도착!’ 을 ‘1’ 초 동안 ’말하기‘",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][5].type",
|
||||
"$[2][5].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"start_neighbor_scene",
|
||||
"next"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "어린이/[신호 1]의 세부 동작 3/‘다음’ 장면 시작하기",
|
||||
"type": "list"
|
||||
}
|
||||
]
|
||||
},
|
||||
"2-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'나의 방')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_scene_start",
|
||||
"point": 1.56,
|
||||
"desc": "나의 방/장면/장면이 시작되었을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_visible_answer",
|
||||
"HIDE"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "나의 방/[장면]의 세부 동작 1/대답 ‘숨기기’",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog",
|
||||
"여기는 우리집이야!",
|
||||
"speak"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "나의 방/[장면]의 세부 동작 2/‘여기는 우리집이야!’ 를 ‘말하기’",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 2,
|
||||
"desc": "나의 방/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0]",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"add_effect_amount",
|
||||
"brightness",
|
||||
"10"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "나의 방/[오브젝트]의 세부 동작 1/‘밝기’ 효과를 ‘10’ 만큼 주기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].params[0]",
|
||||
"$[1][2].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog",
|
||||
"처음부터 다시 실행합니다.",
|
||||
"speak"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "나의 방/[오브젝트]의 세부 동작 2/‘처음부터 다시 실행합니다.’ 를 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"2"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "나의 방/[오브젝트]의 세부 동작 3/‘2’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][4].type",
|
||||
"answer": "restart_project",
|
||||
"point": 2,
|
||||
"desc": "나의 방/[오브젝트]의 세부 동작 4/처음부터 다시 실행하기"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
537
correct/2602_2_CAS_2_B.json
Normal file
537
correct/2602_2_CAS_2_B.json
Normal file
@@ -0,0 +1,537 @@
|
||||
{
|
||||
"1-1": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='우주')]",
|
||||
"point": 1.7,
|
||||
"desc": "장면 1/[배경] 이름 설정 1/이름을 ‘우주’로 변경하기",
|
||||
"sort": 11
|
||||
},
|
||||
"1-2": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='우주정거장')]",
|
||||
"point": 1.7,
|
||||
"desc": "장면 2/[배경] 이름 설정 2/이름을 ‘우주정거장’으로 변경하기",
|
||||
"sort": 12
|
||||
},
|
||||
"1-3": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='별')]",
|
||||
"point": 1.7,
|
||||
"desc": "큰별(노랑)/[개체] 이름 설정 1/이름을 ‘별’로 변경하기",
|
||||
"sort": 13
|
||||
},
|
||||
"1-4": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='운석')]",
|
||||
"point": 1.7,
|
||||
"desc": "돌덩이/[개체] 이름 설정 2/이름을 ‘운석’으로 변경하기",
|
||||
"sort": 14
|
||||
},
|
||||
"1-5": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='비행기')]",
|
||||
"point": 1.7,
|
||||
"desc": "파란 비행기/[개체] 이름 설정 3/이름 ‘비행기’로 변경하기",
|
||||
"sort": 15
|
||||
},
|
||||
"1-6": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='전투기')]",
|
||||
"point": 1.7,
|
||||
"desc": "전투기/[개체] 이름 설정 4/이름 변경 없음",
|
||||
"sort": 16
|
||||
},
|
||||
"1-7": {
|
||||
"type": "scene",
|
||||
"ele": "$..variables[?(@.name=='에너지')]",
|
||||
"point": 1.63,
|
||||
"desc": "별/변수/‘에너지’ 변수 만들기 (변수 기본값은 ‘0’, ‘모든 오브젝트에 사용’ 설정)",
|
||||
"sort": 17
|
||||
},
|
||||
"3-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'별')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.63,
|
||||
"desc": "별/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": ["$[0][1].type", "$[0][1].params[0].params[0]"],
|
||||
"answer": ["set_scale_size", "30"],
|
||||
"point": 1.63,
|
||||
"desc": "별/[시작]의 세부 동작 1/크기를 '30’ 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][2].type",
|
||||
"answer": "repeat_inf",
|
||||
"point": 1.63,
|
||||
"desc": "별/반복/계속 반복하기"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][2].statements[0][0].type",
|
||||
"answer": "hide",
|
||||
"point": 1.63,
|
||||
"desc": "별/[반복]의 세부 동작 1/모양 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][1].type",
|
||||
"$[0][2].statements[0][1].params[0].type",
|
||||
"$[0][2].statements[0][1].params[0].params[1].params[0]",
|
||||
"$[0][2].statements[0][1].params[0].params[3].params[0]",
|
||||
"$[0][2].statements[0][1].params[1].type",
|
||||
"$[0][2].statements[0][1].params[1].params[1].params[0]",
|
||||
"$[0][2].statements[0][1].params[1].params[3].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"calc_rand",
|
||||
"-210",
|
||||
"210",
|
||||
"calc_rand",
|
||||
"-120",
|
||||
"120"
|
||||
],
|
||||
"point": 1.63,
|
||||
"desc": "별/[반복]의 세부 동작 2/x: ‘-210 부터 210 사이의 무작위 수’ y: ‘-120 부터 120 사이의 무작위 수’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][2].type",
|
||||
"$[0][2].statements[0][2].params[0].type",
|
||||
"$[0][2].statements[0][2].params[0].params[1].params[0]",
|
||||
"$[0][2].statements[0][2].params[0].params[3].params[0]"
|
||||
],
|
||||
"answer": ["wait_second", "calc_rand", "0", "3"],
|
||||
"point": 1.63,
|
||||
"desc": "별/[반복]의 세부 동작 3/‘0 부터 3 사이의 무작위 수’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][2].statements[0][3].type",
|
||||
"answer": "show",
|
||||
"point": 1.63,
|
||||
"desc": "별/[반복]의 세부 동작 4/모양 보이기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][4].type",
|
||||
"$[0][2].statements[0][4].params[0].params[0]"
|
||||
],
|
||||
"answer": ["wait_second", "1.5"],
|
||||
"point": 1.63,
|
||||
"desc": "별/[반복]의 세부 동작 5/‘1.5‘ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][5].type",
|
||||
"$[0][2].statements[0][5].params[0].type"
|
||||
],
|
||||
"answer": ["_if", "reach_something"],
|
||||
"point": 1.63,
|
||||
"desc": "별/만일/만일 ’비행기‘ 에 닿았는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][5].statements[0][0].type",
|
||||
"$[0][2].statements[0][5].statements[0][0].params[1].params[0]"
|
||||
],
|
||||
"answer": ["change_variable", "30"],
|
||||
"point": 1.63,
|
||||
"desc": "별/[만일]의 세부 동작/에너지' 에 '30' 만큼 더하기",
|
||||
"type": "list"
|
||||
}
|
||||
]
|
||||
},
|
||||
"4-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=='운석')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.63,
|
||||
"desc": "시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": ["$[0][1].type", "$[0][1].params[0].params[0]"],
|
||||
"answer": ["set_scale_size", "30"],
|
||||
"point": 1.63,
|
||||
"desc": "운석/[시작]의 세부 동작 1/크기를 '30’ 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][2].type",
|
||||
"answer": "repeat_inf",
|
||||
"point": 1.63,
|
||||
"desc": "운석/반복/계속 반복하기"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][2].statements[0][0].type",
|
||||
"answer": "hide",
|
||||
"point": 1.63,
|
||||
"desc": "운석/[반복]의 세부 동작 1/모양 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][1].type",
|
||||
"$[0][2].statements[0][1].params[0].type",
|
||||
"$[0][2].statements[0][1].params[0].params[1].params[0]",
|
||||
"$[0][2].statements[0][1].params[0].params[3].params[0]",
|
||||
"$[0][2].statements[0][1].params[1].type",
|
||||
"$[0][2].statements[0][1].params[1].params[1].params[0]",
|
||||
"$[0][2].statements[0][1].params[1].params[3].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"calc_rand",
|
||||
"-210",
|
||||
"210",
|
||||
"calc_rand",
|
||||
"-120",
|
||||
"120"
|
||||
],
|
||||
"point": 1.63,
|
||||
"desc": "운석/[반복]의 세부 동작 2/x: ‘-210 부터 210 사이의 무작위 수’ y: ‘-120 부터 120 사이의 무작위 수’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][2].type",
|
||||
"$[0][2].statements[0][2].params[0].type",
|
||||
"$[0][2].statements[0][2].params[0].params[1].params[0]",
|
||||
"$[0][2].statements[0][2].params[0].params[3].params[0]"
|
||||
],
|
||||
"answer": ["wait_second", "calc_rand", "0", "3"],
|
||||
"point": 1.63,
|
||||
"desc": "운석/[반복]의 세부 동작 3/‘0 부터 3 사이의 무작위 수’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][2].statements[0][3].type",
|
||||
"answer": "show",
|
||||
"point": 1.63,
|
||||
"desc": "운석/[반복]의 세부 동작 4/모양 보이기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][4].type",
|
||||
"$[0][2].statements[0][4].params[0].params[0]"
|
||||
],
|
||||
"answer": ["wait_second", "1.5"],
|
||||
"point": 1.63,
|
||||
"desc": "운석/[반복]의 세부 동작 4/‘1.5‘ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][5].type",
|
||||
"$[0][2].statements[0][5].params[0].type"
|
||||
],
|
||||
"answer": ["_if", "reach_something"],
|
||||
"point": 1.63,
|
||||
"desc": "운석/만일/만일 ’비행기‘ 에 닿았는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].statements[0][5].statements[0][0].type",
|
||||
"$[0][2].statements[0][5].statements[0][0].params[1].params[0]"
|
||||
],
|
||||
"answer": ["change_variable", "-30"],
|
||||
"point": 1.63,
|
||||
"desc": "운석/[만일]의 세부 동작 1/에너지' 에 '-30' 만큼 더하기",
|
||||
"type": "list"
|
||||
}
|
||||
]
|
||||
},
|
||||
"15-0": {
|
||||
"ele": "$.messages[?(@.name=='업그레이드')]",
|
||||
"point": 1.63,
|
||||
"desc": "비행기/신호/‘업그레이드’ 신호 만들기",
|
||||
"type": "scene"
|
||||
},
|
||||
"5-0": {
|
||||
"type": "script",
|
||||
"ele": "$..objects[?(@.name=~'비행기')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.63,
|
||||
"desc": "비행기/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]",
|
||||
"$[0][1].params[1].params[0]"
|
||||
],
|
||||
"answer": ["locate_xy", "10", "10"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[시작]의 세부 동작 1/x: ‘10’ y: ‘10’ 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": ["$[0][2].type", "$[0][2].params[0].params[0]"],
|
||||
"answer": ["set_scale_size", "50"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[시작]의 세부 동작 2/크기를 ‘50’ 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][3].type",
|
||||
"answer": "repeat_inf",
|
||||
"point": 1.63,
|
||||
"desc": "비행기/반복/계속 반복하기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][0].type",
|
||||
"$[0][3].statements[0][0].params[0].type",
|
||||
"$[0][3].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": ["_if", "is_press_some_key", "37"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/만일 1/만일 ‘왼쪽 화살표’ 키가 키가 눌러져 있는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][0].statements[0][0].type",
|
||||
"$[0][3].statements[0][0].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": ["move_x", "-5"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[만일 1]의 세부 동작/x 좌표를 ‘-5’ 만큼 바꾸기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][1].type",
|
||||
"$[0][3].statements[0][1].params[0].type",
|
||||
"$[0][3].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": ["_if", "is_press_some_key", "39"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/만일 1/만일 ‘오른쪽 화살표’ 키가 키가 눌러져 있는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][1].statements[0][0].type",
|
||||
"$[0][3].statements[0][1].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": ["move_x", "5"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[만일 1]의 세부 동작/x 좌표를 ‘5’ 만큼 바꾸기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][2].type",
|
||||
"$[0][3].statements[0][2].params[0].type",
|
||||
"$[0][3].statements[0][2].params[0].params[0]"
|
||||
],
|
||||
"answer": ["_if", "is_press_some_key", "38"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/만일 1/만일 ‘위쪽 화살표’ 키가 키가 눌러져 있는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][2].statements[0][0].type",
|
||||
"$[0][3].statements[0][2].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": ["move_y", "5"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[만일 3]의 세부 동작/y 좌표를 ‘5’ 만큼 바꾸기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][3].type",
|
||||
"$[0][3].statements[0][3].params[0].type",
|
||||
"$[0][3].statements[0][3].params[0].params[0]"
|
||||
],
|
||||
"answer": ["_if", "is_press_some_key", "40"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/만일 4/만일 ‘아래쪽 화살표’ 키가 눌러져 있는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][3].statements[0][0].type",
|
||||
"$[0][3].statements[0][3].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": ["move_y", "-5"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[만일 4]의 세부 동작/y 좌표를 ‘-5’ 만큼 바꾸기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][4].type",
|
||||
"$[0][3].statements[0][4].params[0].params[1]",
|
||||
"$[0][3].statements[0][4].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": ["_if", "EQUAL", "120"],
|
||||
"point": 1.63,
|
||||
"desc": "비행기/만일 5/만일 ‘에너지’ 값 = ‘120’ 이라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][3].statements[0][4].statements[0][0].type",
|
||||
"answer": "hide",
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[만일 5]의 세부 동작 1/모양 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][3].statements[0][4].statements[0][1].type",
|
||||
"answer": "message_cast",
|
||||
"point": 1.63,
|
||||
"desc": "비행기/[만일 5]의 세부 동작 2/‘업그레이드’ 신호 보내기"
|
||||
}
|
||||
]
|
||||
},
|
||||
"6-0": {
|
||||
"type": "script",
|
||||
"ele": "$..objects[?(@.name=~'전투기')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.63,
|
||||
"desc": "전투기/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][1].type",
|
||||
"answer": "hide",
|
||||
"point": 1.63,
|
||||
"desc": "전투기/[시작]의 세부 동작/모양 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_message_cast",
|
||||
"point": 1.63,
|
||||
"desc": "전투기/신호/‘업그레이드’ 신호를 받았을 때"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][1].type",
|
||||
"answer": "locate",
|
||||
"point": 1.63,
|
||||
"desc": "전투기/[신호]의 세부 동작 1/‘비행기’ 위치로 이동하기"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].type",
|
||||
"answer": "show",
|
||||
"point": 1.63,
|
||||
"desc": "전투기/[신호]의 세부 동작 2/모양 보이기"
|
||||
},
|
||||
{
|
||||
"ele": ["$[1][3].params[0].params[0]", "$[1][3].params[1]"],
|
||||
"answer": ["변신!", "speak"],
|
||||
"point": 1.63,
|
||||
"desc": "전투기/[신호]의 세부 동작 3/‘변신!’ 을 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": ["$[1][4].type", "$[1][4].params[0]"],
|
||||
"answer": ["stop_object", "other_objects"],
|
||||
"point": 1.63,
|
||||
"desc": "전투기/[신호]의 세부 동작 4/‘다른 오브젝트의’ 코드 멈추기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": ["$[1][5].type", "$[1][5].params[0].params[0]"],
|
||||
"answer": ["wait_second", "2"],
|
||||
"point": 1.63,
|
||||
"desc": "전투기/[신호]의 세부 동작 5/‘2’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": ["$[1][6].type", "$[1][6].params[0]"],
|
||||
"answer": ["start_neighbor_scene", "next"],
|
||||
"point": 1.63,
|
||||
"desc": "전투기/[신호]의 세부 동작 6/‘다음’ 장면 시작하기",
|
||||
"type": "list"
|
||||
}
|
||||
]
|
||||
},
|
||||
"2-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=='우주정거장')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_scene_start",
|
||||
"point": 1.63,
|
||||
"desc": "우주정거장/장면 2/장면이 시작되었을 때"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][1].type",
|
||||
"answer": "hide_variable",
|
||||
"point": 1.63,
|
||||
"desc": "우주정거장/[장면 2]의 세부 동작 1/변수 ‘에너지’ 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": ["$[0][2].params[0].params[0]", "$[0][2].params[1]"],
|
||||
"answer": ["미션 성공!", "speak"],
|
||||
"point": 1.63,
|
||||
"desc": "우주정거장/[장면 2]의 세부 동작 2/‘미션 성공!’ 을 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 2,
|
||||
"desc": "우주정거장/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0]",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"add_effect_amount",
|
||||
"color",
|
||||
"35"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "우주정거장/[오브젝트]의 세부 동작 1/‘색깔’ 효과를 ‘35’ 만큼 주기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": ["$[1][2].params[0].params[0]", "$[1][2].params[1]"],
|
||||
"answer": ["처음부터 다시 실행합니다!", "speak"],
|
||||
"point": 2,
|
||||
"desc": "우주정거장/[오브젝트]의 세부 동작 2/‘처음부터 다시 실행합니다!’ 를 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]"
|
||||
],
|
||||
"answer": ["wait_second", "2"],
|
||||
"point": 2,
|
||||
"desc": "우주정거장/[오브젝트]의 세부 동작 3/‘2’ 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][4].type",
|
||||
"answer": "restart_project",
|
||||
"point": 2,
|
||||
"desc": "우주정거장/[오브젝트]의 세부 동작 4/처음부터 다시 실행하기"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
832
correct/2602_3_CAS_2_A.json
Normal file
832
correct/2602_3_CAS_2_A.json
Normal file
@@ -0,0 +1,832 @@
|
||||
{
|
||||
"1-1": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='작업실')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/장면 1/[배경] 이름 설정 1/이름을 '작업실'로 변경하기",
|
||||
"sort": 11
|
||||
},
|
||||
"1-2": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='로봇방')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/장면 2/[배경] 이름 설정 2/이름을 '로봇방'으로 변경하기",
|
||||
"sort": 12
|
||||
},
|
||||
"1-3": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='렌치')]",
|
||||
"point": 1.6,
|
||||
"desc": "문제 1/렌치/[개체] 이름 설정 1/이름 변경 없음",
|
||||
"sort": 13
|
||||
},
|
||||
"1-4": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='로봇')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/둥근로봇/[개체] 이름 설정 2/이름을 '로봇'으로 변경하기",
|
||||
"sort": 14
|
||||
},
|
||||
"1-5": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='망치')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/뿅망치(1)_1/[개체] 이름 설정 3/이름을 '망치'로 변경하기",
|
||||
"sort": 15
|
||||
},
|
||||
"1-6": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='로봇 팔')]",
|
||||
"point": 1.6,
|
||||
"desc": "문제 1/로봇 팔/[개체] 이름 설정 4/이름 변경 없음",
|
||||
"sort": 16
|
||||
},
|
||||
"1-0": {
|
||||
"ele": "$..variables[?(@.name=='고장 원인')]",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/변수/'고장 원인' 변수 만들기 (변수 기본값은 '0', '모든 오브젝트에 사용' 설정하기)",
|
||||
"type": "scene",
|
||||
"sort": 101
|
||||
},
|
||||
"2-0": {
|
||||
"ele": "$.messages[?(@.name=='수리 완료')]",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/신호/'수리 완료' 신호 만들기",
|
||||
"type": "scene",
|
||||
"sort": 102
|
||||
},
|
||||
"3-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'렌치')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]",
|
||||
"$[0][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-90",
|
||||
"-40"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[시작]의 세부 동작 1/x: '-90' y: '-40' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"rotate_absolute",
|
||||
"180"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[시작]의 세부 동작 2/방향을 '180°' 로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].type",
|
||||
"$[0][3].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"110"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[시작]의 세부 동작 3/크기를 '110' 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].params[0]",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"25",
|
||||
"10"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[오브젝트]의 세부 동작 1/x: '25' y: '10' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].type",
|
||||
"$[1][2].params[0].params[0].type",
|
||||
"$[1][2].params[0].params[1]",
|
||||
"$[1][2].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"if_else",
|
||||
"boolean_basic_operator",
|
||||
"get_variable",
|
||||
"EQUAL",
|
||||
"나사 조임"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/만일 / 아니면/만일 '고장 원인 값' = '나사 조임' 이라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].statements[0][0].params[*].params",
|
||||
"answer": [
|
||||
"로봇이 수리되었습니다.",
|
||||
"1"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[만일]의 세부 동작 1/'로봇이 수리되었습니다.' 를 '1' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].statements[0][1].type",
|
||||
"answer": "message_cast",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[만일]의 세부 동작 2/'수리 완료' 신호 보내기"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].statements[1][0].params[*].params",
|
||||
"answer": [
|
||||
"고장 원인을 다시 확인하세요.",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[아니면]의 세부 동작/'고장 원인을 다시 확인하세요.' 를 '2' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]",
|
||||
"$[1][3].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-90",
|
||||
"-40"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/렌치/[오브젝트]의 세부 동작 2/x: '-90' y: '-40' 위치로 이동하기",
|
||||
"type": "list"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 105
|
||||
},
|
||||
"14-0": {
|
||||
"ele": "$..variables[?(@.name=='수리된 로봇')]",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/변수/'수리된 로봇' 변수 만들기 (변수 기본값은 '0', '모든 오브젝트에 사용' 설정하기)",
|
||||
"type": "scene",
|
||||
"sort": 114
|
||||
},
|
||||
"15-0": {
|
||||
"ele": "$.messages[?(@.name=='로봇 이동')]",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/신호/'로봇 이동' 신호 만들기",
|
||||
"type": "scene",
|
||||
"sort": 115
|
||||
},
|
||||
"4-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=='로봇')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]",
|
||||
"$[0][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"95",
|
||||
"-30"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[시작]의 세부 동작 1/x: '95' y: '-30' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"120"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[시작]의 세부 동작 2/크기를 '120' 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_message_cast",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/수리 완료/'수리 완료' 신호를 받았을 때"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].params[*].params",
|
||||
"answer": [
|
||||
"수리되었습니다.",
|
||||
"1"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[수리 완료]의 세부 동작 2/'수리되었습니다.' 를 '1' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"change_variable",
|
||||
"1"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[수리 완료]의 세부 동작 1/'수리된 로봇'에 '1' 만큼 더하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].type",
|
||||
"$[1][3].params[0].params[0].type",
|
||||
"$[1][3].params[0].params[1]",
|
||||
"$[1][3].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"_if",
|
||||
"boolean_basic_operator",
|
||||
"get_variable",
|
||||
"EQUAL",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/만일/만일 '수리된 로봇 값' = '2' 이라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].statements[0][0].type",
|
||||
"$[1][3].statements[0][0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_visible_answer",
|
||||
"HIDE"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[만일]의 세부 동작 1/대답 '숨기기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][3].statements[0][1].params[*].params",
|
||||
"answer": [
|
||||
"모두 수리했습니다.",
|
||||
"1"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[만일]의 세부 동작 2/'모두 수리했습니다.' 를 '1' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][3].statements[0][2].type",
|
||||
"answer": "start_scene",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[만일]의 세부 동작 3/ '장면2' 시작하기"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][4].type",
|
||||
"answer": "message_cast",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[수리 완료]의 세부 동작 3/'로봇 이동' 신호 보내기"
|
||||
},
|
||||
{
|
||||
"ele": "$[2][0].type",
|
||||
"answer": "when_message_cast",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/로봇 이동/'로봇 이동' 신호를 받았을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][1].type",
|
||||
"$[2][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"move_x",
|
||||
"120"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 1/x 좌표를 '120' 만큼 바꾸기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[2][2].type",
|
||||
"answer": "hide",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 2/모양 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][3].type",
|
||||
"$[2][3].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 3/'0.2' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][4].type",
|
||||
"$[2][4].params[0].params[0]",
|
||||
"$[2][4].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"95",
|
||||
"-30"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 4/x: '95' y: '-30' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][5].type",
|
||||
"$[2][5].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 5/'0.2' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[2][6].type",
|
||||
"answer": "show",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 6/모양 보이기"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_message_cast",
|
||||
"when_message_cast"
|
||||
],
|
||||
"sort": 115
|
||||
},
|
||||
|
||||
"5-0": {
|
||||
"type": "script",
|
||||
"ele": "$..objects[?(@.name=~'^(망치|뿅망치)$')].script",
|
||||
"ele_tmp": "$.objects[?(@.name=~'망치')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/망치/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]",
|
||||
"$[0][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"180",
|
||||
"10"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/망치/[시작]의 세부 동작/x: '180' y: '10' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/망치/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"rotate_absolute",
|
||||
"320"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/망치/[오브젝트]의 세부 동작 1/방향을 '320°' 로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].params[*].params",
|
||||
"answer": [
|
||||
"더 고장났어요!",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/망치/[오브젝트]의 세부 동작 2/'더 고장났어요!' 를 '2' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"rotate_absolute",
|
||||
"0"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/망치/[오브젝트]의 세부 동작 3/방향을 '0°' 로 정하기",
|
||||
"type": "list"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 135
|
||||
},
|
||||
"6-0": {
|
||||
"type": "script",
|
||||
"ele": "$..objects[?(@.name=~'^(로봇 팔|단소)$')].script",
|
||||
"ele_tmp": "$.objects[?(@.name=~'로봇 팔')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]",
|
||||
"$[0][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"10",
|
||||
"15"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[시작]의 세부 동작 1/x: '10' y: '15' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"rotate_absolute",
|
||||
"180"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[시작]의 세부 동작 2/방향을 '180°' 로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].type",
|
||||
"$[0][3].params[0].params[0].params[3]",
|
||||
"$[0][3].params[0].params[1]",
|
||||
"$[0][3].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
null,
|
||||
"EQUAL",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/반복/'수리된 로봇 값' = '2' 이 될 때까지' 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][0].type",
|
||||
"$[0][3].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"1"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[반복]의 세부 동작 1/1' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][1].type",
|
||||
"$[0][3].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"ask_and_wait",
|
||||
"어디가 고장났나요?"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[반복]의 세부 동작 2/'어디가 고장났나요?' 를 묻고 대답 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][2].type",
|
||||
"$[0][3].statements[0][2].params[0].type",
|
||||
"$[0][3].statements[0][2].params[0].params[0].type",
|
||||
"$[0][3].statements[0][2].params[0].params[0].params[1]",
|
||||
"$[0][3].statements[0][2].params[0].params[0].params[2].params[0]",
|
||||
"$[0][3].statements[0][2].params[0].params[1]",
|
||||
"$[0][3].statements[0][2].params[0].params[2].type",
|
||||
"$[0][3].statements[0][2].params[0].params[2].params[1]",
|
||||
"$[0][3].statements[0][2].params[0].params[2].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"if_else",
|
||||
"boolean_and_or",
|
||||
"boolean_basic_operator",
|
||||
"EQUAL",
|
||||
"나사 조임",
|
||||
"OR",
|
||||
"boolean_basic_operator",
|
||||
"EQUAL",
|
||||
"부품 고장"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/만일 / 아니면/만일 '대답' = '나사 조임' 또는 '대답' = '부품 고장' 이라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][2].statements[0][0].type",
|
||||
"$[0][3].statements[0][2].statements[0][0].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_variable",
|
||||
null
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 1/'고장 원인' 을 '대답' 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][3].statements[0][2].statements[0][1].params[*].params",
|
||||
"answer": [
|
||||
"도구를 선택하세요.",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 2/'도구를 선택하세요' 를 '2' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][3].statements[0][2].statements[1][0].params[*].params",
|
||||
"answer": [
|
||||
"나사 조임, 부품 고장 중 무엇입니까?",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[아니면]의 세부 동작 1/'나사 조임, 부품 고장 중 무엇입니까?' 를 '2' 초 동안 말하기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][3].type",
|
||||
"$[0][3].statements[0][3].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[아니면]의 세부 동작 2/'2' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"rotate_absolute",
|
||||
"130"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[오브젝트]의 세부 동작 1/방향을 '130°' 로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].type",
|
||||
"$[1][2].params[0].params[0].type",
|
||||
"$[1][2].params[0].params[1]",
|
||||
"$[1][2].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"if_else",
|
||||
"boolean_basic_operator",
|
||||
"get_variable",
|
||||
"EQUAL",
|
||||
"부품 고장"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/만일 / 아니면/만일 '고장 원인' 값 = '부품 고장' 이라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].statements[0][0].params[*].params",
|
||||
"answer": [
|
||||
"로봇이 수리되었습니다.",
|
||||
"1"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 1/'로봇이 수리되었습니다.' 를 '1' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].statements[0][1].type",
|
||||
"answer": "message_cast",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 2/'수리 완료' 신호 보내기"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][2].statements[1][0].params[*].params",
|
||||
"answer": [
|
||||
"고장 원인을 확인하세요.",
|
||||
"2"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[아니면]의 세부 동작/'고장 원인을 다시 확인하세요' 를 '2' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]",
|
||||
"$[1][3].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"10",
|
||||
"15"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[오브젝트]의 세부 동작 2/x: '10' y: '15' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][4].type",
|
||||
"$[1][4].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"rotate_absolute",
|
||||
"180"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇 팔/[오브젝트]의 세부 동작 3/방향을 '180°' 로 정하기",
|
||||
"type": "list"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 141
|
||||
},
|
||||
"7-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'로봇방|장면 ')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_scene_start",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇방/장면 2/장면이 시작되었을 때"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][1].type",
|
||||
"answer": "hide_variable",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇방/[장면 2]의 세부 동작 1/변수 '고장 원인' 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": "$[0][2].type",
|
||||
"answer": "hide_variable",
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇방/[장면 2]의 세부 동작 2/변수 '수리된 로봇' 숨기기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].type",
|
||||
"$[0][3].params[0].params[0]",
|
||||
"$[0][3].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog",
|
||||
"모든 로봇 수리 완료!",
|
||||
"speak"
|
||||
],
|
||||
"point": 1.29,
|
||||
"desc": "문제 2/로봇방/[장면 2]의 세부 동작 3/'모든 로봇 수리 완료!' 를 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 2,
|
||||
"desc": "문제 3/로봇방/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0]",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"add_effect_amount",
|
||||
"color",
|
||||
"45"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 1/'색깔' 효과를 '45' 만큼 주기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].params[0]",
|
||||
"$[1][2].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog",
|
||||
"처음부터 다시 실행합니다.",
|
||||
"speak"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 2/'처음부터 다시 실행합니다.' 를 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"2"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 3/'2' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][4].type",
|
||||
"answer": "restart_project",
|
||||
"point": 2,
|
||||
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 4/처음부터 다시 실행하기"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_scene_start",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 160
|
||||
}
|
||||
}
|
||||
734
correct/2602_6_CAS_2_B.json
Normal file
734
correct/2602_6_CAS_2_B.json
Normal file
@@ -0,0 +1,734 @@
|
||||
{
|
||||
"1-1": {
|
||||
"type": "scene",
|
||||
"ele": "$.[objects,scenes][?(@.name=='장면 1')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/장면 1/[배경] 이름 설정 1/이름 변경 없음",
|
||||
"sort": 11
|
||||
},
|
||||
"1-2": {
|
||||
"type": "scene",
|
||||
"ele": "$.[objects,scenes][?(@.name=='나의 방')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/장면 2/[배경] 이름 설정 2/이름을 '나의 방'으로 변경하기",
|
||||
"sort": 12
|
||||
},
|
||||
"1-3": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='놀이동산')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/놀이동산(1)/[개체] 이름 설정 1/이름을 '놀이동산'으로 변경하기",
|
||||
"sort": 13
|
||||
},
|
||||
"1-4": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='학원')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/건물(6)/[개체] 이름 설정 2/이름을 '학원'으로 변경하기",
|
||||
"sort": 14
|
||||
},
|
||||
"1-5": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='우리집')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/예쁜집/[개체] 이름 설정 3/이름을 '우리집'으로 변경하기",
|
||||
"sort": 15
|
||||
},
|
||||
"1-6": {
|
||||
"type": "scene",
|
||||
"ele": "$..objects[?(@.name=='어린이')]",
|
||||
"point": 1.7,
|
||||
"desc": "문제 1/어린이(2)/[개체] 이름 설정 4/이름을 '어린이'로 변경하기",
|
||||
"sort": 16
|
||||
},
|
||||
"2-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'놀이동산')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/놀이동산/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/놀이동산/[시작]의 세부 동작 1/크기를 '100' 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-25",
|
||||
"80"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/놀이동산/[시작]의 세부 동작 2/x: '-25' y: '80' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/놀이동산/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][1].params[*].params",
|
||||
"answer": [
|
||||
"놀이동산 입니다!",
|
||||
"1.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/놀이동산/[오브젝트]의 세부 동작/'놀이동산 입니다!' 을 '1.5' 초 동안 '말하기'"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 102
|
||||
},
|
||||
"3-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'학원|건물')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/학원/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"80"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/학원/[시작]의 세부 동작 1/크기를 '80' 으로 정하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"170",
|
||||
"-80"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/학원/[시작]의 세부 동작 2/x: '170' y: '-80' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/학원/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][1].params[*].params",
|
||||
"answer": [
|
||||
"학원 입니다!",
|
||||
"1.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/학원/[오브젝트]의 세부 동작/'학원 입니다!' 을 '1.5' 초 동안 '말하기'"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 107
|
||||
},
|
||||
"11-0": {
|
||||
"ele": "$.messages[?(@.name=='놀이동산')]",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/신호 1/'놀이동산' 신호 만들기",
|
||||
"type": "scene",
|
||||
"sort": 111
|
||||
},
|
||||
"12-0": {
|
||||
"ele": "$.messages[?(@.name=='학원')]",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/신호 1/'학원' 신호 만들기",
|
||||
"type": "scene",
|
||||
"sort": 111
|
||||
},
|
||||
"4-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'우리집|예쁜')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"110"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/[시작]의 세부 동작 1/크기를 '110' 으로 정하기 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-170",
|
||||
"-90"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/[시작]의 세부 동작 2/x: '-170' y: '-90' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"ask_and_wait",
|
||||
"첫 번째로 방문할 장소는?"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/[오브젝트]의 세부 동작 1/'첫 번째로 방문할 장소는?' 을 묻고 대답 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/[오브젝트]의 세부 동작 2/'0.5' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].type",
|
||||
"$[1][3].params[0].params[0].type",
|
||||
"$[1][3].params[0].params[1]",
|
||||
"$[1][3].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"_if",
|
||||
"boolean_basic_operator",
|
||||
"get_canvas_input_value",
|
||||
"EQUAL",
|
||||
"놀이동산"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/만일 1/만일 '대답' = '놀이동산' 이라면 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][3].statements[0][0].type",
|
||||
"answer": "message_cast",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/[만일 1]의 세부 동작/'놀이동산' 신호 보내기"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][4].type",
|
||||
"$[1][4].params[0].type",
|
||||
"$[1][4].params[0].params[0].type",
|
||||
"$[1][4].params[0].params[1]",
|
||||
"$[1][4].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"_if",
|
||||
"boolean_basic_operator",
|
||||
"get_canvas_input_value",
|
||||
"EQUAL",
|
||||
"학원"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/만일 2/만일 '대답' = '학원' 이라면 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][4].statements[0][0].type",
|
||||
"answer": "message_cast",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/우리집/[만일 2]의 세부 동작/'학원' 신호 보내기"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 112
|
||||
},
|
||||
"5-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'어린이')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_run_button_click",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/시작/시작하기 버튼을 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_scale_size",
|
||||
"40"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[시작]의 세부 동작 1/크기를 '40' 으로 정하기 ",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-170",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[시작]의 세부 동작 2/x: '-170' y: '-100' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].type",
|
||||
"$[0][3].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_inf",
|
||||
null
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/반복/계속 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][0].type",
|
||||
"$[0][3].statements[0][0].params[0].type",
|
||||
"$[0][3].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"_if",
|
||||
"is_press_some_key",
|
||||
"39"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/만일/만일 '오른쪽 화살표' 키가 눌러져 있는가? 라면",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][3].statements[0][0].statements[0][0].type",
|
||||
"$[0][3].statements[0][0].statements[0][0].params[0].params[0]",
|
||||
"$[0][3].statements[0][0].statements[0][0].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy",
|
||||
"-90",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[만일]의 세부 동작/x: '-90' y: '-100' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_message_cast",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/신호 1/'놀이동산' 신호를 받았을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0].type",
|
||||
"$[1][1].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
null
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/반복 1/'놀이동산' 에 닿았는가? '이 될 때까지' 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].statements[0][0].type",
|
||||
"$[1][1].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 1]의 세부 동작 1/'2' 초 동안 '놀이동산' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].statements[0][1].type",
|
||||
"$[1][1].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 1]의 세부 동작 2/'0.5' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].type",
|
||||
"$[1][2].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
null
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/반복 2/'학원' 에 닿았는가? '이 될 때까지' 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].statements[0][0].type",
|
||||
"$[1][2].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 2]의 세부 동작 1/'2' 초 동안 '학원' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].statements[0][1].type",
|
||||
"$[1][2].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"1"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 2]의 세부 동작 2/'1' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]",
|
||||
"$[1][3].params[1].params[0]",
|
||||
"$[1][3].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy_time",
|
||||
"2",
|
||||
"-120",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[신호 1]의 세부 동작 1/'2' 초 동안 x: '-120' y: '-100' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][4].params[*].params",
|
||||
"answer": [
|
||||
"집 도착!",
|
||||
"1"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[신호 1]의 세부 동작 2/'집 도착!' 을 '1' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][5].type",
|
||||
"answer": "start_neighbor_scene",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[신호 1]의 세부 동작 3/'다음' 장면 시작하기"
|
||||
},
|
||||
{
|
||||
"ele": "$[2][0].type",
|
||||
"answer": "when_message_cast",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/신호 2/'학원' 신호를 받았을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][1].type",
|
||||
"$[2][1].params[0].type",
|
||||
"$[2][1].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
null
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/반복 1/'학원' 에 닿았는가? '이 될 때까지' 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][1].statements[0][0].type",
|
||||
"$[2][1].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 1]의 세부 동작 1/'2' 초 동안 '학원' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][1].statements[0][1].type",
|
||||
"$[2][1].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"0.5"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 1]의 세부 동작 2/'0.5' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][2].type",
|
||||
"$[2][2].params[0].type",
|
||||
"$[2][2].params[0].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"repeat_while_true",
|
||||
"reach_something",
|
||||
null
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/반복 2/'놀이동산' 에 닿았는가? '이 될 때까지' 반복하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][2].statements[0][0].type",
|
||||
"$[2][2].statements[0][0].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_object_time",
|
||||
"2"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 2]의 세부 동작 1/'2' 초 동안 '놀이동산' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][2].statements[0][1].type",
|
||||
"$[2][2].statements[0][1].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"1"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[반복 2]의 세부 동작 2/'1' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[2][3].type",
|
||||
"$[2][3].params[0].params[0]",
|
||||
"$[2][3].params[1].params[0]",
|
||||
"$[2][3].params[2].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"locate_xy_time",
|
||||
"2",
|
||||
"-120",
|
||||
"-100"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[신호 1]의 세부 동작 1/'2' 초 동안 x: '-120' y: '-100' 위치로 이동하기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[2][4].params[*].params",
|
||||
"answer": [
|
||||
"집 도착!",
|
||||
"1"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[신호 1]의 세부 동작 2/'집 도착!' 을 '1' 초 동안 '말하기'"
|
||||
},
|
||||
{
|
||||
"ele": "$[2][5].type",
|
||||
"answer": "start_neighbor_scene",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/어린이/[신호 1]의 세부 동작 3/'다음' 장면 시작하기"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_run_button_click",
|
||||
"when_message_cast",
|
||||
"when_message_cast"
|
||||
],
|
||||
"sort": 124
|
||||
},
|
||||
"6-0": {
|
||||
"type": "script",
|
||||
"ele": "$.objects[?(@.name=~'나의 방|장면 ')].script",
|
||||
"blocks": [
|
||||
{
|
||||
"ele": "$[0][0].type",
|
||||
"answer": "when_scene_start",
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/나의 방/장면/장면이 시작되었을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][1].type",
|
||||
"$[0][1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"set_visible_answer",
|
||||
"HIDE"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/나의 방/[장면]의 세부 동작 1/대답 '숨기기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[0][2].type",
|
||||
"$[0][2].params[0].params[0]",
|
||||
"$[0][2].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog",
|
||||
"여기는 우리집이야!",
|
||||
"speak"
|
||||
],
|
||||
"point": 1.56,
|
||||
"desc": "문제 2/나의 방/[장면]의 세부 동작 2/'여기는 우리집이야!' 을 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][0].type",
|
||||
"answer": "when_object_click",
|
||||
"point": 2,
|
||||
"desc": "문제 3/나의 방/오브젝트/오브젝트를 클릭했을 때"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][1].type",
|
||||
"$[1][1].params[0]",
|
||||
"$[1][1].params[1].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"add_effect_amount",
|
||||
"brightness",
|
||||
"10"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "문제 3/나의 방/[오브젝트]의 세부 동작 1/'밝기' 효과를 '10' 만큼 주기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][2].type",
|
||||
"$[1][2].params[0].params[0]",
|
||||
"$[1][2].params[1]"
|
||||
],
|
||||
"answer": [
|
||||
"dialog",
|
||||
"처음부터 다시 실행합니다.",
|
||||
"speak"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "문제 3/나의 방/[오브젝트]의 세부 동작 2/'처음부터 다시 실행합니다.' 를 '말하기'",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": [
|
||||
"$[1][3].type",
|
||||
"$[1][3].params[0].params[0]"
|
||||
],
|
||||
"answer": [
|
||||
"wait_second",
|
||||
"2"
|
||||
],
|
||||
"point": 2,
|
||||
"desc": "문제 3/나의 방/[오브젝트]의 세부 동작 3/'2' 초 기다리기",
|
||||
"type": "list"
|
||||
},
|
||||
{
|
||||
"ele": "$[1][4].type",
|
||||
"answer": "restart_project",
|
||||
"point": 2,
|
||||
"desc": "문제 3/나의 방/[오브젝트]의 세부 동작 4/처음부터 다시 실행하기"
|
||||
}
|
||||
],
|
||||
"sortBlock": [
|
||||
"when_scene_start",
|
||||
"when_object_click"
|
||||
],
|
||||
"sort": 150
|
||||
}
|
||||
}
|
||||
864
logs/cat.log
864
logs/cat.log
@@ -3411,3 +3411,867 @@ Traceback (most recent call last):
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\lex.py", line 255, in input
|
||||
raise ValueError('Expected a string')
|
||||
ValueError: Expected a string
|
||||
[2026-02-04 16:06:53] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/2602_2_CAS_2_B_정답\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:53] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000028-김지효\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:54] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000029-김아윤\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:54] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000030-박승혜\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:54] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000031-전유빈\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:54] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000032-홍예나\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:54] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000033-문채원\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:55] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000034-여가온\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:55] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000035-김범서\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:55] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000036-최효석\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:55] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000037-김서율\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:55] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000038-김태윤\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:56] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000039-정지은\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:56] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000040-조다은\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:56] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000041-박다인\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:56] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000042-김다연\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:56] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000043-이승빈\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:57] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000044-신지안\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:57] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000045-김리원\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:57] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000046-김지민\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:57] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000047-이유준\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:58] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000048-강지후\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:58] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000049-장병헌\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:58] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000050-성수현\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:06:58] [ERROR] [main:423] 🚫Error processing ./output/2602_2_CAS_2_B/CAS-000051-옥정민\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:07:58] [ERROR] [main:423] 🚫Error processing ./output/00_test/2602_2_CAS_2_B_정답\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
[2026-02-04 16:09:45] [ERROR] [main:423] 🚫Error processing ./output/00_test/2602_2_CAS_2_B_정답\project.json: Parse error near the end of string!
|
||||
Traceback (most recent call last):
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 418, in main
|
||||
points = process_project(project_data, scoring_data)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 294, in process_project
|
||||
block_elements = find_list_element(single_script, block_path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "D:\project\Entry\Entry-Scoring\main.py", line 49, in find_list_element
|
||||
[match.value for match in parse(expr).find(data)]
|
||||
^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\ext\parser.py", line 176, in parse
|
||||
return ExtentedJsonPathParser(debug=debug).parse(path)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 58, in parse
|
||||
return self.parse_token_stream(lexer.tokenize(string))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 61, in parse_token_stream
|
||||
return self.parser.parse(lexer = IteratorToTokenStream(token_iterator))
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 333, in parse
|
||||
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 1201, in parseopt_notrack
|
||||
tok = call_errorfunc(self.errorfunc, errtoken, self)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\ply\yacc.py", line 192, in call_errorfunc
|
||||
r = errorfunc(token)
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "d:\project\Entry\Entry-Scoring\.venv\Lib\site-packages\jsonpath_ng\parser.py", line 77, in p_error
|
||||
raise JsonPathParserError('Parse error near the end of string!')
|
||||
jsonpath_ng.exceptions.JsonPathParserError: Parse error near the end of string!
|
||||
|
||||
8
main.py
8
main.py
@@ -353,11 +353,11 @@ def normalize_path(path):
|
||||
def main():
|
||||
timestamp = datetime.now().strftime("%y%m%d")
|
||||
|
||||
# test_mode = False # 일반 채점 모드
|
||||
test_mode = True # 테스트 모드
|
||||
test_mode = False # 일반 채점 모드
|
||||
# test_mode = True # 테스트 모드
|
||||
|
||||
exam_round = "2601"
|
||||
exam_names = ["CAT_3_A"] # 여러 시험명을 리스트로 설정
|
||||
exam_round = "2602_6"
|
||||
exam_names = ["CAS_2_B"] # 여러 시험명을 리스트로 설정
|
||||
# exam_names = ["CAS_2_A", "CAS_2_B"] # 여러 시험명을 리스트로 설정
|
||||
excel_list = []
|
||||
|
||||
|
||||
BIN
시험자료/2602_3/제2602회 수시-코딩활용능력 2급 A형 문제.hwp
Normal file
BIN
시험자료/2602_3/제2602회 수시-코딩활용능력 2급 A형 문제.hwp
Normal file
Binary file not shown.
BIN
시험자료/2602_3/제2602회 수시-코딩활용능력 2급 A형 정답.ent
Normal file
BIN
시험자료/2602_3/제2602회 수시-코딩활용능력 2급 A형 정답.ent
Normal file
Binary file not shown.
BIN
시험자료/2602_3/제2602회 수시-코딩활용능력 2급 A형 채점기준표.xlsx
Normal file
BIN
시험자료/2602_3/제2602회 수시-코딩활용능력 2급 A형 채점기준표.xlsx
Normal file
Binary file not shown.
BIN
시험자료/2602_6/제2512회 코딩활용능력 2급 B형 채점기준표.xlsx
Normal file
BIN
시험자료/2602_6/제2512회 코딩활용능력 2급 B형 채점기준표.xlsx
Normal file
Binary file not shown.
BIN
시험자료/2602_6/제2602회 수시6 코딩활용능력 2급 B형 문제.hwp
Normal file
BIN
시험자료/2602_6/제2602회 수시6 코딩활용능력 2급 B형 문제.hwp
Normal file
Binary file not shown.
BIN
시험자료/2602_6/제2602회 수시6 코딩활용능력 2급 B형 문제.pdf
Normal file
BIN
시험자료/2602_6/제2602회 수시6 코딩활용능력 2급 B형 문제.pdf
Normal file
Binary file not shown.
BIN
시험자료/2602_6/제2602회 수시6 코딩활용능력 2급 B형 정답.ent
Normal file
BIN
시험자료/2602_6/제2602회 수시6 코딩활용능력 2급 B형 정답.ent
Normal file
Binary file not shown.
Reference in New Issue
Block a user