实验 0:开始使用

截止时间:6 月 23 日(星期二)晚上 11:59。

起始文件

下载 lab00.zip.

所有学生都必须完成本实验。

出勤要求

要获得实验课学分,除了到场参加实验课外,你还需要提交实验题目。

如果你因合理原因(例如生病或时间冲突)缺席实验课,或者由于某种原因未能完成签到,请在一周内发送邮件至 cs61a@berkeley.edu ,以补记出勤学分。

项目介绍

本实验将说明如何配置电脑以完成课程作业,并介绍 Python 的一些基础知识。如果需要帮助,请在 Ed 上发帖,或在你被分配的实验课上向助教求助。

本实验的内容如下:

  • 环境配置:安装本课程所需的基础软件,具体包括下面几个部分。

    • 安装终端:安装终端,以便操作课程文件并运行 Ok 命令。
    • 安装 Python 3:在电脑上安装 Python 3.8 或更高版本(最好是 Python 3.11 或更高版本)。
    • 安装文本编辑器:安装用于编辑本课程 .py 文件的软件。几乎所有学生都使用 VS Code。
  • 复习:电脑的文件系统 这一部分概述电脑文件系统的工作方式,包括绝对路径和相对路径的含义。
  • 操作演示:使用终端:这一部分将带你逐步学习如何使用终端和 Python 解释器。
  • 操作演示:整理文件:这一部分将带你使用终端整理和浏览课程文件。 所有人都应阅读这一部分。
  • 必做:完成作业:你必须完成这一部分才能获得作业学分。它的主要目的是让你练习使用课程提供的软件。
  • 必做:提交作业:提交你的作业。
  • 附录:实用的 Python 命令行选项:这些命令有助于调试,但并非完成本实验所必需。之所以列在这里,是因为它们很可能会在整门课程中持续帮到你。

环境配置

请选择与你所用操作系统对应的指南来配置设备。

你的第一份作业

完成作业时,请确保终端的工作目录正确(通常就是你解压作业文件的目录)。

1)Python 会怎么做?(WWPD)

实验作业中有一类题目要求你预测 Python 解释器的行为,我们把它们称为“Python 会怎么做?”(What Would Python Do,简称 WWPD)。

在本课程中,我们使用一个名为 ok 的程序来检查你对知识的掌握情况。 ok 会随每份作业一起提供。下面我们用它完成一道 WWPD 题。 ok.

打开终端,并确认当前位于 lab00 目录,也就是包含本次实验已解压文件的目录。在该目录中输入 ls ,确认其中包含以下文件:

  • lab00.py:本实验的起始文件
  • ok:课程提供的测试程序
  • lab00.ok:用于 ok

如果看不到这些文件,请使用 cd 进入正确的目录。

如果在不包含 ok 的目录中尝试运行 ok ,就会出现错误。

在终端中输入以下命令,它会运行 ok 并开始本节练习:

python3 ok -q python-basics -u

命令 python3 ok -q python-basics -u 会让 Python 解释器运行当前工作目录中名为 ok 的文件。 -q python-basics -u 是传递给 ok 程序的参数,用来指定要运行哪一道题。

正如环境配置部分所说,如果 python3 命令无法运行,请尝试使用 pythonpy.

接下来系统会要求你输入若干语句或表达式的输出。只有输入正确才能继续,但答错不会受到惩罚。

第一次运行 Ok 时,系统会要求你填写 bCourses 邮箱。请按照 这些说明操作.

>>> x = 20
>>> x + 2
______
22
>>> x
______
20
>>> y = 5 >>> y = y + 3 >>> y * 2
______
16
>>> y + x
______
28

2)实现函数

在 VS Code 中打开整个 lab00 文件夹。你可以把该文件夹拖到 VS Code 应用窗口中,也可以打开 VS Code 后使用 Open Folder... ,它位于 File 菜单中。打开 lab00 文件夹后,你会在 VS Code 窗口左侧的文件资源管理器中看到 lab00.py 文件。单击它即可开始编辑 lab00.py;你最终需要提交的正是这个文件。

重要:请在 VS Code 的 Auto Save ,它位于 File 菜单中开启该选项。这样每次修改文件时都会自动保存。如果没有开启 Auto Save,请记得经常手动保存。

建议:使用 VS Code 内置终端(位于菜单Terminal > New Terminal )。如果你已按上述说明在 VS Code 中打开作业文件夹,内置终端的工作目录会自动设为该文件夹,因此检查作业时无须再切换目录。

现在开始完成实验。你会看到一个名为 twenty_twenty_six 的函数,其中有一条空白的 return 语句。你只需修改这一处:用一个求值结果为 2026 的表达式替换它。试试看你能想出多有创意的表达式!

3)运行测试

我们还会使用 ok 测试代码。切换到终端,并确认当前位于 lab00 目录,其中应包含 oklab00.py.

小技巧: 如果你已经在 VS Code 中打开 lab00 文件夹,并在 VS Code 的菜单中选择 New Terminal ,它位于 Terminal ,终端就会自动位于 lab00 目录。

现在运行 ok ,使用以下命令测试代码:

python3 ok

请记住:如果你使用 Windows,并且 python3 命令无法运行,请尝试只使用 pythonpy.

如果代码编写正确,而且已经完成测试解锁,你会看到测试通过的信息:

=====================================================================
Assignment: Lab 0
=====================================================================

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Running tests

---------------------------------------------------------------------
Test summary
    2 test cases passed! No cases failed.

如果测试没有通过, ok 会显示类似下面的信息:

---------------------------------------------------------------------
Doctests for twenty_twenty_six

>>> from lab00 import *
>>> twenty_twenty_six()
0

# Error: expected
#     2026
# but got
#     0

---------------------------------------------------------------------
Test summary
    0 test cases passed before encountering first failed test case

请在文本编辑器中修正代码,直到测试通过。

每次运行 ok时, ok 都会尝试备份你的作业。如果看到“连接超时”或提示你没有选修本课程,不必担心;你仍然可以提交作业并获得学分。

4)开课前问卷

作为本次作业的一部分,请填写 开课前问卷

完成问卷后,你会得到一个口令。请把它写成字符串,填到标有 passphrase = 'REPLACE_THIS_WITH_PASSPHRASE' 的那一行。例如,如果口令是 abc,那么这一行应写为 passphrase = 'abc'.

使用 Ok 测试你的代码:

python3 ok -q presem_survey

在本地检查得分

你可以运行以下命令,在本地检查本次作业每道题的得分:

python3 ok --score

这不会提交作业! 确认得分符合预期后,请将作业提交到 Gradescope,以获得作业学分。

提交作业

现在你已经完成了第一份作业,该提交它了。请按照下面的步骤提交并获得分数。

重要: 你只需提交到 Gradescope;无须提交到 Ok.

通过 Gradescope 提交

  1. 使用 学校账户 和 CalNet ID 登录 Gradescope。登录后会进入你的 控制面板

    Gradescope login page select Calnet ID

  2. 控制面板中选择本课程。(你应该已经被加入 Gradescope;如果没有,请在 Ed 上发一篇私密帖子。)随后会看到本课程可提交的作业列表,其中会显示作业状态、发布日期和截止日期。
  3. 单击作业 Lab 0 将其打开。
  4. 出现对话框后,单击写有 拖放的灰色区域。系统会打开文件选择器,请选择你在本次作业中编辑过的代码文件 lab00.py

    gradescope submit

  5. 选好文件后,单击 上传 按钮。上传成功后,屏幕上会显示确认消息,同时你也会收到一封邮件。

    gradescope upload

  6. 接下来等待几分钟,让自动评分器批改代码文件。最终得分会显示在右侧,输出应与你在本地测试时看到的一致。你可以在右上角标有 代码的标签页中查看已提交的代码。如果有错误,可以编辑 lab00.py 代码,然后单击页面底部的 重新提交 重新提交代码文件。在截止时间前,你可以按需要重复提交任意多次。

    gradescope results

WWPD 题目的回答不会提交到 Gradescope,也没有提交的必要。实验课学分以代码编写题为准。

恭喜,你刚刚提交了自己的第一份作业!

附录:实用的 Python 命令行选项

  • ls: lis出当前目录中的所有文件
  • cd <path to directory>: c换到指定 d
  • mkdir <directory name>: mk建一个新的 dir目录,并使用给定名称

下面是使用 Python 运行文件最常见的几种方式。

  1. 不带任何命令行选项时,Python 会运行指定文件中的代码,然后返回命令行。如果文件只包含函数定义,除非存在语法错误,否则不会看到任何输出。

    python3 lab00.py
  2. -i-i 选项会先运行指定文件中的代码,再打开一个交互式会话(显示 >>> 提示符)。随后你可以对表达式求值,例如调用自己定义的函数。要退出,请输入 exit()。也可以使用键盘快捷键 Ctrl-D (Linux/Mac)或 Ctrl-Z Enter (Windows)。

    如果在交互式运行期间修改了 Python 文件,需要退出并重新启动解释器,修改才会生效。

    下面演示如何以交互方式运行 lab00.py

    python3 -i lab00.py
  3. -m doctest:运行文件中的 doctest,也就是函数文档字符串里的示例。

    文件中的每个测试都由 >>> 开头,后面跟着一段 Python 代码和预期输出。

    下面演示如何运行文件中的 doctest: lab00.py:

     python3 -m doctest lab00.py

    如果代码通过所有 doctest,终端不会显示任何输出;否则会显示未通过测试的详细信息。