{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# WEEK 02 MISSION: 콘텐츠 생활 데이터 프로필\n",
        "\n",
        "이 노트북은 뼈대만 있습니다. `___` 표시를 자신의 값과 코드로 바꾸지 않고 실행하면 `NameError`가 납니다. 계산식과 출력문도 직접 작성합니다. 마지막 자동 검사에서 `WEEK 02 MISSION COMPLETE`가 나오면 교수자에게 화면을 보여 주고 퇴실할 수 있습니다. 오늘 실습은 성적에 반영하지 않습니다.\n",
        "\n",
        "주소, 전화번호, 생년월일처럼 공개하고 싶지 않은 정보는 작성하지 않습니다. 이름 대신 별명을 사용해도 됩니다."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## STEP 1 · 변수와 자료형\n",
        "\n",
        "`___`를 자신의 값으로 바꿉니다. `weekly_content_hours`는 따옴표 없는 정수, `average_rating`은 소수점이 있는 실수, `wants_to_create`는 따옴표 없는 `True` 또는 `False`입니다. 아래쪽 `type()` 칸에는 확인할 변수 이름을 넣습니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# STEP 1: ___를 자신의 값과 변수 이름으로 바꾸세요.\n",
        "student_name = ___\n",
        "major = ___\n",
        "favorite_content = ___\n",
        "weekly_content_hours = ___\n",
        "average_rating = ___\n",
        "wants_to_create = ___\n",
        "\n",
        "print(\"이름 자료형:\", type(student_name))\n",
        "print(\"1주 시간 자료형:\", type(___))\n",
        "print(\"평점 자료형:\", type(___))\n",
        "print(\"만들고 싶은가 자료형:\", type(___))\n",
        "\n",
        "# 아래 실행 검사용 코드는 수정하지 마세요.\n",
        "mission_step1_execution = get_ipython().execution_count\n",
        "mission_stage = 1"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## STEP 2 · 계산식\n",
        "\n",
        "1주 콘텐츠 감상 시간을 다시 숫자로 적지 않습니다. `weekly_content_hours`를 사용해 4주와 1년(52주) 예상 시간을 계산합니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# STEP 2: ___를 계산식으로 바꾸세요. 숫자는 다시 적지 않습니다.\n",
        "assert mission_stage == 1, \"STEP 1부터 다시 실행하세요.\"\n",
        "mission_step2_execution = get_ipython().execution_count\n",
        "\n",
        "four_week_content_hours = ___\n",
        "yearly_content_hours = ___\n",
        "\n",
        "print(\"4주 예상 콘텐츠 감상 시간:\", four_week_content_hours, \"시간\")\n",
        "print(\"1년 예상 콘텐츠 감상 시간:\", yearly_content_hours, \"시간\")\n",
        "\n",
        "mission_stage = 2"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## STEP 3 · 출력문\n",
        "\n",
        "첫 줄은 형식 예시입니다. 나머지 항목도 같은 형식으로 출력합니다. 따옴표 안에는 화면 설명, 따옴표 밖에는 변수 이름을 넣습니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# STEP 3: 첫 줄을 참고해 나머지 print()를 직접 작성하세요.\n",
        "assert mission_stage == 2, \"STEP 2 계산 셀을 먼저 실행하세요.\"\n",
        "mission_step3_execution = get_ipython().execution_count\n",
        "\n",
        "print(\"이름 또는 별명:\", student_name)\n",
        "print(\"전공:\", ___)\n",
        "print(\"좋아하는 콘텐츠:\", ___)\n",
        "print(\"1주 콘텐츠 감상 시간:\", ___, \"시간\")\n",
        "print(\"콘텐츠 평점:\", ___)\n",
        "print(\"직접 만들고 싶은가:\", ___)\n",
        "print(\"4주 예상 콘텐츠 감상 시간:\", ___, \"시간\")\n",
        "print(\"1년 예상 콘텐츠 감상 시간:\", ___, \"시간\")\n",
        "\n",
        "# 아래 실행 검사용 코드는 수정하지 마세요.\n",
        "initial_output_snapshot = (student_name, major, favorite_content, weekly_content_hours, average_rating, wants_to_create, four_week_content_hours, yearly_content_hours)\n",
        "mission_stage = 3"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## STEP 4 · 값 갱신\n",
        "\n",
        "STEP 1부터 STEP 3까지 실행해 첫 출력을 확인합니다. 아래 셀의 `weekly_content_hours`와 `average_rating`에는 처음과 다른 값을 작성하고, `four_week_content_hours`와 `yearly_content_hours`는 새 값으로 다시 계산합니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# STEP 4: 처음과 다른 값을 대입하고 계산식을 다시 작성하세요.\n",
        "assert mission_stage == 3, \"STEP 3 출력 셀을 먼저 실행하세요.\"\n",
        "mission_step4_execution = get_ipython().execution_count\n",
        "initial_weekly_content_hours = weekly_content_hours\n",
        "initial_average_rating = average_rating\n",
        "\n",
        "weekly_content_hours = ___\n",
        "average_rating = ___\n",
        "four_week_content_hours = ___\n",
        "yearly_content_hours = ___\n",
        "\n",
        "print(\"변경 전 1주 콘텐츠 감상 시간:\", initial_weekly_content_hours, \"시간\")\n",
        "print(\"변경 후 1주 콘텐츠 감상 시간:\", weekly_content_hours, \"시간\")\n",
        "print(\"변경 전 콘텐츠 평점:\", initial_average_rating)\n",
        "print(\"변경 후 콘텐츠 평점:\", average_rating)\n",
        "print(\"변경 후 4주 예상 콘텐츠 감상 시간:\", four_week_content_hours, \"시간\")\n",
        "print(\"변경 후 1년 예상 콘텐츠 감상 시간:\", yearly_content_hours, \"시간\")\n",
        "\n",
        "changed_output_snapshot = (initial_weekly_content_hours, weekly_content_hours, initial_average_rating, average_rating, four_week_content_hours, yearly_content_hours)\n",
        "mission_stage = 4"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## STEP 5 · 자동 검사\n",
        "\n",
        "아래 셀의 코드는 수정하지 않습니다. 런타임을 다시 시작한 뒤 모두 실행합니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# FINAL CHECK: 이 셀의 코드는 수정하지 마세요.\n",
        "mission_final_execution = get_ipython().execution_count\n",
        "assert type(student_name) is str and student_name not in (\"\", \"여기에 작성\", \"___\"), \"student_name을 문자열로 작성하세요.\"\n",
        "assert type(major) is str and major not in (\"\", \"여기에 작성\", \"___\"), \"major를 문자열로 작성하세요.\"\n",
        "assert type(favorite_content) is str and favorite_content not in (\"\", \"여기에 작성\", \"___\"), \"favorite_content를 문자열로 작성하세요.\"\n",
        "assert type(initial_weekly_content_hours) is int and initial_weekly_content_hours >= 0, \"STEP 1의 weekly_content_hours를 0 이상의 정수로 작성하세요.\"\n",
        "assert type(initial_average_rating) is float and 0.0 <= initial_average_rating <= 5.0, \"STEP 1의 average_rating을 0.0부터 5.0 사이의 실수로 작성하세요.\"\n",
        "assert type(weekly_content_hours) is int and weekly_content_hours >= 0, \"STEP 4의 weekly_content_hours를 0 이상의 정수로 작성하세요.\"\n",
        "assert type(average_rating) is float and 0.0 <= average_rating <= 5.0, \"STEP 4의 average_rating을 0.0부터 5.0 사이의 실수로 작성하세요.\"\n",
        "assert type(wants_to_create) is bool, \"wants_to_create를 따옴표 없는 True 또는 False로 작성하세요.\"\n",
        "assert initial_weekly_content_hours != weekly_content_hours, \"STEP 4의 weekly_content_hours를 처음과 다른 값으로 작성하세요.\"\n",
        "assert initial_average_rating != average_rating, \"STEP 4의 average_rating을 처음과 다른 값으로 작성하세요.\"\n",
        "assert four_week_content_hours == weekly_content_hours * 4, \"STEP 4의 four_week_content_hours를 weekly_content_hours * 4로 다시 계산하세요.\"\n",
        "assert yearly_content_hours == weekly_content_hours * 52, \"STEP 4의 yearly_content_hours를 weekly_content_hours * 52로 다시 계산하세요.\"\n",
        "assert type(four_week_content_hours) is int and type(yearly_content_hours) is int, \"4주·1년 시간은 정수 계산으로 작성하세요.\"\n",
        "assert mission_stage == 4, \"STEP 1부터 STEP 4까지 순서대로 실행하세요.\"\n",
        "assert initial_output_snapshot == (student_name, major, favorite_content, initial_weekly_content_hours, initial_average_rating, wants_to_create, initial_weekly_content_hours * 4, initial_weekly_content_hours * 52), \"STEP 3의 첫 출력을 다시 실행하세요.\"\n",
        "assert changed_output_snapshot == (initial_weekly_content_hours, weekly_content_hours, initial_average_rating, average_rating, four_week_content_hours, yearly_content_hours), \"STEP 4의 변경 출력을 다시 실행하세요.\"\n",
        "assert (mission_step1_execution, mission_step2_execution, mission_step3_execution, mission_step4_execution, mission_final_execution) == (1, 2, 3, 4, 5), \"런타임을 다시 시작한 뒤 모두 실행하세요.\"\n",
        "\n",
        "print(\"✅ 문자열, 정수, 실수, 불리언 검사 통과\")\n",
        "print(\"✅ 변경 전후 값과 4주·1년 계산 검사 통과\")\n",
        "print(\"✅ 두 출력 셀 검사 통과\")\n",
        "print(\"✅ 새 런타임 전체 실행 검사 통과\")\n",
        "print(\"🎉 WEEK 02 MISSION COMPLETE\")"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
