Coding for KidsCoding for Kids
창의적인 레벨도전 과제교사 가이드
기능 투표
고급 파이썬 개발 과정
챕터
>
레벨

직렬화 모듈
JSON 모듈

목표

서비스 스테이션으로 가서 JSON 모듈을 사용하여 파일 형식을 지정함으로써 데이터가 제대로 저장되었는지 확인하세요.

신축 구역의 부속 건물 남쪽에는 서비스 스테이션이 있으며, 이 전체 구역은 작물 재배를 위해 재개발될 예정입니다. 이 스테이션은 새로운 개발을 위한 데이터를 처리하는 다양한 터미널을 갖추고 있으며, 데이터를 수동으로 입력할 수도 있지만 시간이 많이 소요됩니다. 데이터 처리 과정에서는 JSON(JavaScript Object Notation)을 사용할 수 있는데, 이는 프로그래밍 언어에 독립적인 데이터 형식으로, 정보 저장 및 전송을 위해 읽기 쉽게 데이터를 저장합니다.

Python에서 JSON을 사용하기 위해서는 import json을 사용하여 JSON 함수에 접근할 수 있습니다. 이번 과제에서는 다음 함수를 사용할 것입니다:

  • json.loads(): JSON 문자열을 Python 데이터로 변환하며, 파싱할 문자열 하나를 인자로 받습니다.
  • json.dumps(): Python 데이터를 JSON 문자열 객체로 변환합니다. 이 함수는 최대 네(4)개의 인자를 받을 수 있으며, 첫 번째 인자는 반드시 필요합니다. 인자들은 다음과 같습니다.
    1. JSON으로 변환할 Python 데이터: 딕셔너리, 리스트, 튜플, 문자열, 정수, 실수, 불리언, None 타입 등이 가능합니다.
    2. indent: 데이터 포인트 시작 부분에 추가할 공백 수
    3. separators: 데이터 포인트 사이 및/또는 끝에 표시할 구분자
    4. sort_keys: 딕셔너리 파일 타입을 변환할 경우, 사전 키를 알파벳 순으로 정렬

우선, 왼쪽 전초 기지에 있는 금색 X 표시로 이동하여 메모가 있는 책상 앞에 서세요. read() 함수를 사용하여 터미널 상태를 확인하는 데 필요한 정보를 검증하고 기록하세요. 터미널 앞의 연한 X 표시로 이동하면 transmission이라는 상수가 있습니다. 이를 JSON으로 변환하기 위해 json.dumps()를 사용하여 형식을 지정하세요. 예: transmission = json.dumps(transmission).

load라는 딕셔너리를 생성하고, transmission 상수를 인자로 하여 json.loads()의 값을 저장하세요. 이렇게 하면 JSON이 Python으로 변환되어 정보를 쉽게 접근할 수 있습니다. 이후 메모에 명시된 키들을 사용하여, 생성한 load 딕셔너리와 함께 speak() 함수를 호출하세요. 예: player.speak(load["system"]). 모든 키에 대해 동일하게 수행합니다.

터미널의 정보를 확인한 후 스테이션 쪽으로 이동하여 내부로 들어가 초록 카펫 위의 연한 X 표시로 가세요. read() 함수를 사용하여 메모를 확인하고, 값들을 점검 및 기록하세요. 에디터에는 미리 작성된 profile 딕셔너리가 있으므로, 메모에 기재된 정보로 누락된 값을 채우세요.

초록 카펫 위의 어두운 X 표시로 이동하여 터미널을 마주한 후, transfer라는 변수를 생성하고 profile 딕셔너리를 유일한 인자로 하여 json.dumps()의 값을 저장하세요. 이렇게 하면 딕셔너리가 JSON 문자열 객체로 변환됩니다. 미리 작성된 display() 함수를 사용하여 transfer JSON을 터미널에 저장하세요.

빨간 카펫 위의 어두운 X 표시로 이동하여 read() 함수를 사용해 터미널에 이미 입력된 데이터를 확인하세요. 데이터가 올바른 형식으로 표시되지 않으므로, 정보를 적절히 저장하고 형식화하기 위해 JSON 형식으로 변환해야 합니다. 데이터는 red_data라는 딕셔너리 상수에 저장되어 있으므로, red_storage라는 변수를 생성하고 json.dumps() 함수의 값을 저장하세요.

데이터를 형식화하려면, 함수에 다음 인자들을 추가하세요: red_data를 JSON으로 변환할 데이터로 추가, indent를 5로 설정하여 텍스트를 형식화, separators("- ", " = ")로 설정하여 각 줄 끝에 해당 기호들을 추가합니다. 코드 라인은 다음과 같습니다: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). 미리 작성된 display() 함수를 사용하여 red_storage JSON 문자열을 저장하고 형식화된 데이터를 표시하세요.

파란 카펫 위의 어두운 X 표시로 이동하여 터미널을 마주한 후 read() 함수를 사용하세요. 이전과 같이 데이터가 올바르게 저장되지 않아 형식화뿐만 아니라 정렬도 필요합니다. 데이터는 blue_data라는 상수에 저장되어 있으므로, blue_storage라는 변수를 생성하고 json.dumps() 함수의 값을 저장하세요.

인자로는, blue_data를 JSON으로 변환할 데이터로 추가, indent를 4로 설정하여 텍스트를 형식화, separators(".0", " = ")로 설정하여 각 줄 끝에 해당 기호들을 추가합니다. 이와 함께 마지막 인자로 sort_keysTrue로 설정하세요: sort_keys=True. 미리 작성된 display() 함수를 사용하여 blue_storage JSON 문자열을 저장 및 표시함으로써 정렬된 데이터를 출력하고 레벨을 완료하세요.

코드북