{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "7d3c4642",
   "metadata": {},
   "source": [
    "# 第 1 天｜Windows 基础软件配置与第一次运行\n",
    "\n",
    "**日期：** 2026 年 7 月 20 日  \n",
    "**核心内容：** Python、VS Code、Jupyter Notebook、国内镜像、解释器与第一次运行\n",
    "\n",
    "本课程统一使用 **Windows 10/11 64 位 + Python 3.13.x 64 位 + VS Code + Jupyter Notebook**。\n",
    "后续 pandas、Excel 处理、网页采集和真题代码都依赖这套环境。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3c835550",
   "metadata": {},
   "source": [
    "## 软件清单与安装顺序\n",
    "\n",
    "| 顺序 | 软件 | 作用 |\n",
    "|---:|---|---|\n",
    "| 1 | Python 3.13.x 64 位 | 执行 Python 程序，并提供 `pip` |\n",
    "| 2 | VS Code 64 位 | 编写、保存和运行 `.py`、`.ipynb` |\n",
    "| 3 | Python 与 Jupyter 扩展 | 让 VS Code 识别解释器和 Notebook |\n",
    "| 4 | Jupyter Notebook | 运行本课程的 Notebook 课件 |\n",
    "| 5 | pandas 等竞赛包 | 处理 CSV、Excel、网页和结构化数据 |\n",
    "\n",
    "不建议使用来历不明的“软件管家”或二次打包安装器。下载文件时重点核对：\n",
    "\n",
    "- Python 文件名应为 `python-3.13.x-amd64.exe`；\n",
    "- VS Code 文件名应为 `VSCodeUserSetup-x64-版本号.exe`；\n",
    "- 普通 Intel/AMD 电脑选 `x64/AMD64`，只有 Windows ARM 电脑才选 `ARM64`。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2bb1f91",
   "metadata": {},
   "source": [
    "## 一、下载 Python\n",
    "\n",
    "本课程建议统一安装 **Python 3.13.14 64 位**，避免不同版本造成环境差异。\n",
    "\n",
    "| 下载方式 | 地址 | 使用说明 |\n",
    "|---|---|---|\n",
    "| Python 官方 Windows 页面 | <https://www.python.org/downloads/windows/> | 在 Python 3.13.14 下选择 **Windows installer (64-bit)** |\n",
    "| Python 官方安装包直链 | <https://www.python.org/ftp/python/3.13.14/python-3.13.14-amd64.exe> | 官方较慢时改用下一行 |\n",
    "| 华为云国内镜像直链 | <https://mirrors.huaweicloud.com/python/3.13.14/python-3.13.14-amd64.exe> | 推荐国内网络使用 |\n",
    "| 华为云版本目录 | <https://mirrors.huaweicloud.com/python/> | 需要其他版本时进入对应目录 |\n",
    "\n",
    "**不要下载** `embed-amd64.zip`、`embeddable-amd64.zip`、源码压缩包或 32 位的\n",
    "`python-3.13.14.exe`。本课程需要的是带 `amd64` 的普通 `.exe` 安装包。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96ad1761",
   "metadata": {},
   "source": [
    "## 二、安装 Python\n",
    "\n",
    "1. 双击 `python-3.13.14-amd64.exe`；\n",
    "2. 在第一个界面勾选 **Add python.exe to PATH**；\n",
    "3. 点击 **Install Now**；\n",
    "4. 安装结束后，如出现 **Disable path length limit**，点击它；\n",
    "5. 关闭所有已经打开的终端，再重新打开 VS Code 或 Windows Terminal。\n",
    "\n",
    "在 Windows PowerShell 或 VS Code 终端执行：\n",
    "\n",
    "```powershell\n",
    "py --version\n",
    "python --version\n",
    "py -m pip --version\n",
    "py -0p\n",
    "```\n",
    "\n",
    "正常情况下，前两条会显示 Python 3.13.14，第三条显示 `pip` 的版本和安装位置。\n",
    "`py -0p` 会列出本机安装的 Python 及其完整路径。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "44361d7e",
   "metadata": {},
   "source": [
    "## 三、下载并安装 VS Code\n",
    "\n",
    "### 下载\n",
    "\n",
    "| 下载方式 | 地址 | 说明 |\n",
    "|---|---|---|\n",
    "| VS Code 官方下载页 | <https://code.visualstudio.com/Download> | Windows 下选 **User Installer · x64** |\n",
    "| 官方最新版 x64 用户安装包 | <https://update.code.visualstudio.com/latest/win32-x64-user/stable> | 始终指向最新稳定版 |\n",
    "| 国内 Azure CDN 安装包 | <https://vscode.cdn.azure.cn/stable/8a7abeba6e03ea3af87bfbce9a1b7e48fed567b8/VSCodeUserSetup-x64-1.129.1.exe> | 2026-07-19 核对；固定版本链接以后可能过期 |\n",
    "\n",
    "如果国内 CDN 固定链接失效，使用上面的“官方最新版”地址。不要从不明软件下载站获取修改版安装包。\n",
    "\n",
    "### 安装\n",
    "\n",
    "1. 双击 `VSCodeUserSetup-x64-版本号.exe`；\n",
    "2. 保留默认安装位置；\n",
    "3. 建议勾选“添加到 PATH”“将 Code 注册为受支持文件类型的编辑器”\n",
    "   和两个“通过 Code 打开”的右键菜单；\n",
    "4. 安装完成后重新打开终端，执行 `code --version` 检查。\n",
    "\n",
    "官方推荐普通学生使用 **User Installer**：不需要管理员权限，更新也更顺畅。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "209d804e",
   "metadata": {},
   "source": [
    "## 四、安装 VS Code 扩展并选择解释器\n",
    "\n",
    "打开左侧“扩展”，搜索并安装 Microsoft 发布的：\n",
    "\n",
    "1. **Python**，扩展标识 `ms-python.python`；\n",
    "2. **Jupyter**，扩展标识 `ms-toolsai.jupyter`。\n",
    "\n",
    "选择解释器：\n",
    "\n",
    "1. 按 `Ctrl + Shift + P`；\n",
    "2. 输入并选择 `Python: Select Interpreter`；\n",
    "3. 选择显示为 Python 3.13.14 的解释器；\n",
    "4. 如果有多个同版本解释器，对照 `py -0p` 显示的路径选择。\n",
    "\n",
    "VS Code 只是编辑器，真正执行代码的是这里选中的 Python 解释器。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee9164cd",
   "metadata": {},
   "source": [
    "## 五、配置国内 PyPI 镜像并安装竞赛软件包\n",
    "\n",
    "`pip` 从 PyPI 下载第三方包。国内网络下载慢时，使用清华大学 PyPI 镜像。\n",
    "在 **Windows PowerShell 或 VS Code 终端**执行，不要写进 Python 代码单元格。\n",
    "\n",
    "### 临时使用清华镜像\n",
    "\n",
    "```powershell\n",
    "py -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "py -m pip install notebook ipykernel pandas openpyxl requests beautifulsoup4 lxml -i https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "```\n",
    "\n",
    "### 设置为默认镜像\n",
    "\n",
    "```powershell\n",
    "py -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "py -m pip config list\n",
    "```\n",
    "\n",
    "设置后，以后可直接使用 `py -m pip install 包名`。需要恢复官方源时执行：\n",
    "\n",
    "```powershell\n",
    "py -m pip config unset global.index-url\n",
    "```\n",
    "\n",
    "始终优先写 `py -m pip`，它能更明确地把软件包安装到 `py` 所指向的 Python 中。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d010542e",
   "metadata": {},
   "source": [
    "## 六、安装、启动与关闭 Jupyter Notebook\n",
    "\n",
    "Jupyter 官方给出的经典 Notebook 安装命令是 `pip install notebook`。本课程使用国内镜像时执行：\n",
    "\n",
    "```powershell\n",
    "py -m pip install notebook -i https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "jupyter notebook --version\n",
    "```\n",
    "\n",
    "建立并进入学习目录，然后启动：\n",
    "\n",
    "```powershell\n",
    "mkdir D:\\Python暑期训练\n",
    "cd D:\\Python暑期训练\n",
    "jupyter notebook\n",
    "```\n",
    "\n",
    "正常现象：\n",
    "\n",
    "- 终端保持运行，并显示以 `http://localhost:...` 开头的本地地址；\n",
    "- 浏览器自动打开文件列表；\n",
    "- 点击 `New` 或 `新建`，选择 `Python 3` 可创建 Notebook；\n",
    "- 关闭时回到启动 Jupyter 的终端，按 `Ctrl + C`，再确认退出。\n",
    "\n",
    "如果提示找不到 `jupyter`，使用：\n",
    "\n",
    "```powershell\n",
    "py -m notebook\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b8f00b7",
   "metadata": {},
   "source": [
    "## 七、确保 VS Code 与 Jupyter 使用同一个 Python\n",
    "\n",
    "打开 `.ipynb` 文件后，点击 Notebook 右上角的内核名称：\n",
    "\n",
    "1. 选择 **Select Another Kernel**；\n",
    "2. 选择 **Python Environments**；\n",
    "3. 选择与 `Python: Select Interpreter` 相同的 Python 3.13.14；\n",
    "4. 运行下面的环境诊断代码。\n",
    "\n",
    "“终端可以导入，Notebook 却报 `ModuleNotFoundError`”通常不是包没安装，而是两边使用了不同解释器。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ce34ff8a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "from importlib.metadata import PackageNotFoundError, version\n",
    "\n",
    "print(\"Python 版本：\", sys.version.split()[0])\n",
    "print(\"解释器路径：\", sys.executable)\n",
    "\n",
    "for package in [\n",
    "    \"notebook\",\n",
    "    \"ipykernel\",\n",
    "    \"pandas\",\n",
    "    \"openpyxl\",\n",
    "    \"requests\",\n",
    "    \"beautifulsoup4\",\n",
    "    \"lxml\",\n",
    "]:\n",
    "    try:\n",
    "        print(f\"{package:15s} {version(package)}\")\n",
    "    except PackageNotFoundError:\n",
    "        print(f\"{package:15s} 未安装\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40a6f246",
   "metadata": {},
   "source": [
    "## 八、Python 程序的运行关系\n",
    "\n",
    "```text\n",
    ".py 或 .ipynb 中的代码\n",
    "    ↓\n",
    "当前选中的 Python 解释器 / Jupyter 内核\n",
    "    ↓\n",
    "终端或 Notebook 显示输出、结果或报错\n",
    "```\n",
    "\n",
    "建议课程目录：\n",
    "\n",
    "```text\n",
    "D:\\Python暑期训练\n",
    "├── 第01周\n",
    "├── 数据\n",
    "└── 真题\n",
    "```\n",
    "\n",
    "文件夹负责组织代码和数据；`.py` 保存完整程序；`.ipynb` 按单元格保存说明、代码和输出。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49afb0dd",
   "metadata": {},
   "source": [
    "## 九、第一个 Python 程序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f41e1adf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "商务数据分析暑期训练开始了\n",
      "我已经成功运行 Python\n"
     ]
    }
   ],
   "source": [
    "# 我的第一个 Python 程序\n",
    "print(\"商务数据分析暑期训练开始了\")\n",
    "print(\"我已经成功运行 Python\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50197a66",
   "metadata": {},
   "source": [
    "## 十、代码解读\n",
    "\n",
    "| 代码 | 含义 |\n",
    "|---|---|\n",
    "| `# ...` | 注释，只给人阅读，Python 不执行 |\n",
    "| `print()` | 把内容输出到终端 |\n",
    "| `\"...\"` | 字符串，即一段文本 |\n",
    "| `()` | 函数调用使用的圆括号，必须成对 |\n",
    "\n",
    "Python 严格区分英文和中文符号。代码中应使用英文半角引号、括号、冒号和逗号。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e6781519",
   "metadata": {},
   "source": [
    "## 十一、运行 Python 代码的多种方法\n",
    "\n",
    "同一段 Python 代码可以从不同入口运行。选择方法的依据是：要运行完整程序、试验几行代码，\n",
    "还是观察程序每一步的状态。\n",
    "\n",
    "| 方法 | 运行单位 | 适合场景 | 输出位置 |\n",
    "|---|---|---|---|\n",
    "| VS Code“运行 Python 文件” | 整个 `.py` 文件 | 日常练习、完整真题 | VS Code 终端 |\n",
    "| VS Code 右键运行 | 整个 `.py` 文件 | 明确选择当前文件运行 | VS Code 终端 |\n",
    "| VS Code `Shift + Enter` | 当前行或选中代码 | 快速试验少量语句 | Python 终端 |\n",
    "| VS Code 集成终端 | 整个 `.py` 文件 | 练习标准命令、检查路径 | VS Code 终端 |\n",
    "| Windows PowerShell / CMD | 整个 `.py` 文件 | 脱离编辑器运行、提交前复查 | Windows 终端 |\n",
    "| Jupyter Notebook | 一个代码单元格 | 数据分析、分步观察中间结果 | 单元格下方 |\n",
    "| Python 交互模式 | 一条语句 | 计算和语法小实验 | `>>>` 后方 |\n",
    "| VS Code 调试器 | 按断点逐步执行 | 查循环、条件和变量变化 | 调试面板与终端 |\n",
    "\n",
    "正式真题应至少掌握“终端运行完整 `.py` 文件”；Notebook 主要用于学习、试验和数据探索。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e80d7796",
   "metadata": {},
   "source": [
    "### 方法一：在 VS Code 中运行完整 `.py` 文件\n",
    "\n",
    "1. 使用“文件 → 打开文件夹”打开学习目录；\n",
    "2. 新建 `hello.py`，输入示例代码并按 `Ctrl + S` 保存；\n",
    "3. 确认右下角已经选择 Python 3.13.14；\n",
    "4. 点击编辑器右上角的三角形 **Run Python File**；\n",
    "5. 观察下方终端中的运行命令、文件路径和输出。\n",
    "\n",
    "也可以在编辑器代码区域单击右键，选择 **Run Python File in Terminal**。\n",
    "两种操作都会先启动当前解释器，再运行整个文件。\n",
    "\n",
    "如果修改代码后结果没有变化，依次检查：\n",
    "\n",
    "- 文件标签旁边是否有“未保存”的圆点；\n",
    "- 当前运行的文件名是否为 `hello.py`；\n",
    "- 终端命令中的完整路径是否指向当前文件。\n",
    "\n",
    "### 方法二：在 VS Code 中运行当前行或选中代码\n",
    "\n",
    "1. 选中一行或多行 Python 代码；\n",
    "2. 按 `Shift + Enter`；\n",
    "3. VS Code 会把选中内容发送到 Python 交互终端；\n",
    "4. 没有选中内容时，通常运行光标所在行并移到下一行。\n",
    "\n",
    "这种方法适合快速验证表达式，但它依赖已经运行过的变量。关闭交互终端后，变量会消失；\n",
    "因此不能替代从第一行开始运行完整文件。\n",
    "\n",
    "### 方法三：在 VS Code 集成终端中运行\n",
    "\n",
    "使用“终端 → 新建终端”，执行：\n",
    "\n",
    "```powershell\n",
    "cd D:\\Python暑期训练\\第01周\\第1天\n",
    "dir\n",
    "py hello.py\n",
    "```\n",
    "\n",
    "`cd` 进入文件夹，`dir` 检查文件是否存在，`py hello.py` 运行文件。\n",
    "也可使用完整路径：\n",
    "\n",
    "```powershell\n",
    "py \"D:\\Python暑期训练\\第01周\\第1天\\hello.py\"\n",
    "```\n",
    "\n",
    "路径包含空格或中文时，建议始终在完整路径两侧加英文双引号。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "59f5e5f2",
   "metadata": {},
   "source": [
    "### 方法四：在 Windows PowerShell 或 CMD 中运行\n",
    "\n",
    "**PowerShell：**\n",
    "\n",
    "```powershell\n",
    "Set-Location \"D:\\Python暑期训练\\第01周\\第1天\"\n",
    "Get-ChildItem\n",
    "py hello.py\n",
    "```\n",
    "\n",
    "**命令提示符 CMD：**\n",
    "\n",
    "```bat\n",
    "cd /d \"D:\\Python暑期训练\\第01周\\第1天\"\n",
    "dir\n",
    "py hello.py\n",
    "```\n",
    "\n",
    "CMD 中的 `/d` 表示允许同时从 `C:` 切换到 `D:`。PowerShell 和 CMD 都可以使用\n",
    "`py hello.py`，但切换目录的写法略有区别。\n",
    "\n",
    "终端运行时，“当前目录”会影响相对路径。例如程序写 `data.csv`，Python 会在当前目录寻找它；\n",
    "所以真题运行前必须先确认终端提示符所在目录。\n",
    "\n",
    "### 方法五：在 Jupyter Notebook 中按单元格运行\n",
    "\n",
    "1. 启动 `jupyter notebook`，新建或打开 `.ipynb`；\n",
    "2. 点击一个代码单元格；\n",
    "3. 输入代码后使用以下快捷键。\n",
    "\n",
    "| 快捷键 | 作用 |\n",
    "|---|---|\n",
    "| `Shift + Enter` | 运行当前单元格，并选中下一个单元格 |\n",
    "| `Ctrl + Enter` | 运行当前单元格，光标仍停留在当前单元格 |\n",
    "| `Alt + Enter` | 运行当前单元格，并在下方新建一个单元格 |\n",
    "\n",
    "例如把下面四行分别放进四个代码单元格，再依次按 `Shift + Enter`：\n",
    "\n",
    "```python\n",
    "price = 15.8\n",
    "quantity = 3\n",
    "sales = price * quantity\n",
    "print(sales)\n",
    "```\n",
    "\n",
    "Jupyter 默认是**按单元格执行**，不是自动逐行执行。要获得“逐行演示”的效果，可以每个单元格只放一行；\n",
    "要真正暂停并观察每一行，应使用调试器。\n",
    "\n",
    "单元格左侧的 `In [数字]` 表示实际执行顺序。反复跳着运行会保留旧变量，导致结果难以复现。\n",
    "正式检查时使用 **Kernel → Restart Kernel and Run All Cells**，从空环境按从上到下的顺序执行。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "88a6acf9",
   "metadata": {},
   "source": [
    "### 方法六：使用 Python 交互模式\n",
    "\n",
    "在终端输入 `py`：\n",
    "\n",
    "```text\n",
    "py\n",
    ">>> 15.8 * 3\n",
    "47.4\n",
    ">>> print(\"环境正常\")\n",
    "环境正常\n",
    ">>> exit()\n",
    "```\n",
    "\n",
    "`>>>` 是 Python 交互提示符，不要把它复制进 `.py` 文件。交互模式适合计算表达式、检查函数和试验一两行语法，\n",
    "不适合保存完整真题程序。\n",
    "\n",
    "### 方法七：使用 VS Code 断点逐行调试\n",
    "\n",
    "1. 在目标代码行左侧的行号栏单击，出现红色断点；\n",
    "2. 按 `F5`，选择 **Python Debugger: Python File**；\n",
    "3. 程序会在断点处暂停；\n",
    "4. 查看左侧 **Variables** 中变量的当前值；\n",
    "5. 按 `F10` 执行下一行，按 `F11` 进入函数，按 `Shift + F5` 停止。\n",
    "\n",
    "调试器适合检查：\n",
    "\n",
    "- 循环每一轮变量如何变化；\n",
    "- `if` 条件为什么进入或没有进入；\n",
    "- 列表、字典和 DataFrame 在某一步的内容；\n",
    "- 哪一行开始出现错误数据。\n",
    "\n",
    "### 本课程的运行规范\n",
    "\n",
    "- 讲解概念和观察中间结果：使用 Jupyter Notebook；\n",
    "- 编写作业和真题：保存成 `.py`，在终端从头完整运行；\n",
    "- 只试验一两行：使用交互模式或 VS Code `Shift + Enter`；\n",
    "- 结果异常但没有明显报错：使用断点和 `F10` 逐行调试。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4077349f",
   "metadata": {},
   "source": [
    "## 环境与运行常见问题\n",
    "\n",
    "| 现象 | 原因判断 | 修复 |\n",
    "|---|---|---|\n",
    "| `python` 或 `py` 不是命令 | Python 未安装或 PATH 未刷新 | 重装并勾选 PATH；关闭后重开终端 |\n",
    "| `No module named ...` | 当前解释器没有安装该包 | 先看 `sys.executable`，再用对应解释器的 `-m pip` 安装 |\n",
    "| 终端能导入，Notebook 不能 | Jupyter 内核选错 | 重新选择与 VS Code 相同的 Python 内核 |\n",
    "| `jupyter` 不是命令 | Scripts 目录未进入 PATH | 使用 `py -m notebook` |\n",
    "| `pip` 下载超时 | 官方 PyPI 网络慢 | 在命令末尾加清华镜像 `-i` |\n",
    "| 仍显示旧输出 | 文件未保存或运行了同名文件 | 保存后检查终端中的完整文件路径 |\n",
    "| `SyntaxError` | 引号、括号或符号错误 | 检查是否误用中文全角符号 |\n",
    "\n",
    "排错顺序固定为：**解释器路径 → Python 版本 → pip 位置 → 包版本 → 文件路径 → 报错最后一行**。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e33c6ce9",
   "metadata": {},
   "source": [
    "## 环境配置与真题的关系\n",
    "\n",
    "三套真题都需要：\n",
    "\n",
    "- 导入第三方库；\n",
    "- 运行完整 `.py` 程序；\n",
    "- 在当前目录生成 CSV 或 Excel；\n",
    "- 根据终端输出判断程序是否成功。\n",
    "\n",
    "如果文件路径、解释器或保存操作不稳定，后续会把环境问题误认为 pandas 或网页采集问题。\n",
    "\n",
    "## 针对性练习\n",
    "\n",
    "打开 `学生练习.py`，完成环境自检和个人信息输出。自检必须能显示：\n",
    "\n",
    "- Python 版本与解释器完整路径；\n",
    "- Windows 位数；\n",
    "- Jupyter、pandas、openpyxl、requests、Beautiful Soup 和 lxml 的安装状态；\n",
    "- 自己的姓名、班级与备赛目标。\n",
    "\n",
    "## 官方资料与镜像帮助\n",
    "\n",
    "- Python Windows 下载：<https://www.python.org/downloads/windows/>\n",
    "- VS Code Windows 安装说明：<https://code.visualstudio.com/docs/setup/windows>\n",
    "- Jupyter 官方安装说明：<https://jupyter.org/install>\n",
    "- 清华大学 PyPI 镜像帮助：<https://mirrors4.tuna.tsinghua.edu.cn/help/pypi/>\n",
    "- 华为云 Python 镜像目录：<https://mirrors.huaweicloud.com/python/>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3"
  },
  "title": "第 1 天｜Windows 基础软件配置与第一次运行"
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
