Skip to main content

Lab 0:入门 | CS 61A 2024 春季

Lab 0:入门

截止时间:1 月 24 日周三晚上 11:59。

入门文件

下载 lab00.zip 后,压缩包里包含了本次实验各个问题的起始文件,以及 Ok 自动评分器的副本。

所有学生都必须完成这个实验,这会算入你的实验成绩。请尽量在第一次实验课之前在家完成。

介绍

本实验会指导你如何设置电脑来完成作业,并介绍 Python 的一些基本知识。如果您在实验过程中需要任何帮助,欢迎随时参加答疑时间、在 Ed 上提问,或者参加你所分配的实验课。

以下是实验的概要:

  • 设置:设置本课程所需的基本软件,包括以下几个组件:

    • 安装命令行工具:安装一个终端工具,以便您可以与本课程中的文件进行交互并运行 OK 命令。 如果您的计算机上有一个终端并且使用起来很舒服,则可以跳过此部分。
    • 安装 Python 3:将 Python 编程语言安装到您的计算机上。 如果您已经安装了 Python 3.7 或更高版本(最好是 Python 3.9),则可以跳过此部分。
    • 安装代码编辑器:安装用于编辑本课程的 .py 文件的软件(例如 VSCode、Atom 等)。 如果您已经有喜欢的文本编辑器,则可以跳过此部分。
  • 教程:使用终端:本节会教你如何使用终端和 Python 解释器。 如果您已经对这两者都感到满意,则无需阅读本节。

  • 教程:组织你的文件:请务必至少浏览一下本节,因为它包含本课程特有的重要信息。如果你已经熟悉使用终端进行目录导航,大部分内容对你来说应该不陌生。

  • 必须完成:完成作业:您必须完成本节才能获得作业的分数。 在这里,你会练习在实验、作业和项目里会遇到的各种问题。 本作业的主要目的是让你熟悉我们的软件。

  • 必须完成:提交作业:您必须完成本节才能获得作业的分数。 这会指导你完成上一节后如何提交作业,以及如何在 Gradescope 上确认提交成功。

  • 附录:有用的 Python 命令行选项:这些命令在调试您的工作时很有用,但不是完成实验所必需的。 我们包含它们是因为我们认为它们可能在整个课程中对您有所帮助。

设置

要设置你的设备,请选择适合你操作系统的指南。

替代方案

如果您在安装Python解释器、文本编辑器和终端时遇到困难,或者您使用的设备(比如iPad)不允许安装软件,您可以暂时采取以下措施来完成作业,同时寻找更合适的硬件。

Soda实验室的电脑

您需要一个教学账号,才能登录并使用Soda实验室的任何电脑。您可以通过以下链接查看您现有的教学账号,并为适用的课程创建新的教学账号:https://inst.eecs.berkeley.edu/connecting.html

您可以通过您的 CalNet ID 登录该网站。要为这门课创建一个教学账号,请点击目标为“cs61a”的那一行中的“Get a new account”。

创建账号后,您就可以用它登录Soda实验室的电脑,并在上面完成课程作业。

使用在线编辑器作为备选方案

重要提示: 以下列出的两种替代方案都不是本课程的首选。我们建议您尽量使用自己的本地环境,或者Soda实验室的电脑(可以使用您的课程教学账号登录)。

61A Code:

您可以使用 61A Code,这是一个在线编程环境,您可以在其中编辑、运行、调试程序,进行可视化操作,并与助教们分享您的代码。 61A Code 的相关文档请参考:61A Code 文档

注意: 您无法在 61A Code 中运行 ok 命令。您需要使用这些命令来解锁测试、运行测试和提交作业。

在 61A Code 上完成此作业的步骤:

  1. 访问 61A Code
  2. 打开一个现有文件:进入您的 cs61a 文件夹,然后进入作业文件夹 (lab00),您可以在其中找到此作业的文件。
  3. 系统会提示您授权编辑器,点击“Confirm”即可。之后返回编辑器,您就可以打开并编辑文件了。
  4. 点击“Console”即可打开终端。
  5. 您可以在编辑器里编写代码,然后在控制台中运行。

Datahub:

另一种本地运行代码的替代方案是使用 UC Berkeley 提供的 Datahub。

在 Datahub 上完成此作业的步骤:

  1. 访问 Datahub
  2. 将作业的 zip 文件上传到 Datahub。
  3. 点击左上角的“New”,然后选择“终端”即可打开终端。
  4. 找到 zip 文件所在的目录,然后运行 unzip lab00.zip 命令。
  5. 打开代码文件 (lab00.py),在里面输入代码并保存。
  6. 现在,您就可以提交这个实验了。

您的第一个实验

在进行实验时,请确保终端的工作目录是正确的(通常是您解压缩实验文件的位置)。

1) Python 会做什么? (WWPD)

实验的一个环节是预测 Python 解释器的行为。

请在您的终端中输入以下内容以开始本节:

python3 ok -q python-basics -u

系统会提示你输入各种语句和表达式的结果。你必须正确输入才能继续,答错了也没关系。

第一次运行 Ok 的时候,会提示你输入你的 bCourses 邮箱。请按照这些说明操作。我们会用这个信息在评分的时候把你的代码和你关联起来。

>>> x = 20
>>> x + 2
______22
>>> x
______20
>>> y = 5
>>> y = y + 3
>>> y * 2
______16
>>> y + x
______28

2) 实现函数

实验通常会要求您实现函数。在您的文本编辑器中打开 lab00.py。您应该会看到一个名为 twenty_twenty_four 的函数,它有一个空白的 return 语句。那个空白是您唯一应该更改的部分。将其替换为计算结果为 2024 的表达式。你能想出最具创意的表达方式吗?

不要忘记在编辑后保存您的作业! 最好打开自动保存功能(在 VS Code 的文件菜单里)。

3) 运行测试

在 CS 61A 中,我们将使用一个名为 ok 的程序来测试我们的代码。 ok 将包含在本课程的每个作业中。

回到终端,确保你在之前创建的 lab00 目录里(记住,cd 命令可以更改目录)。

在这个目录里,你可以输入 ls 来确认有以下四个文件:

  • lab00.py:您刚刚编辑的起始文件
  • ok:我们的测试程序
  • lab00.ok:Ok 的配置文件

现在来测试一下代码,确保没问题。你可以用这个命令运行 ok

python3 ok

如果你用的是 Windows,python3 命令不好使,就试试 python 或者 py。 更多信息请参考安装 Python 3部分,有问题随时来问!

如果您正确编写了代码并且完成了测试解锁,您应该会看到一个成功的测试:

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

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

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

如果你没通过测试,ok 会显示下面这样的内容:

---------------------------------------------------------------------
Doctests for twenty_twenty_four

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

# Error: expected
# 2024
# but got
# 0

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

在文本编辑器里改代码,直到测试通过。

每次运行 Ok,Ok 都会尝试备份你的工作。如果出现“连接超时”的提示,不用担心,这不会影响你的成绩。

虽然 ok 是 CS 61A 的主要作业“自动评分器”,但你也可以尝试自己编写一些测试,例如使用 doctests。之后,你可以使用 -m doctest 这个 Python 选项 来运行这些测试。

任务 C: 提交作业

现在你已经完成了你的第一个 CS 61A 作业,是时候提交它了。你可以按照以下步骤提交你的作业并获得分数。

使用 Gradescope 提交

  1. 使用你的 CalNet ID,通过学校凭据登录 Gradescope。登录后,你将进入你的控制面板

  2. 在你的控制面板上,选择 CS61A 课程。如果你还没有被添加到 Gradescope,请在 Ed 上发帖询问。

  3. 出现对话框后,点击显示“拖放”字样的灰色区域,选择你为本次作业编辑过的代码文件 lab00.py

    gradescope submit

  4. 选择文件后,点击上传按钮。上传成功后,屏幕上会显示确认信息,并且你会收到一封电子邮件。

    gradescope upload

  5. 接下来,请耐心等待几分钟,让自动评分器对你的代码文件进行评分。你的最终得分会显示在右侧,应该与你在本地测试的结果一致。你可以在右上角找到你提交的代码,通过标有“代码”的标签页查看。如果发现任何错误,你可以编辑 lab00.py 文件,然后点击屏幕底部的“重新提交”按钮。

    gradescope results

截止日期前,你可以根据需要多次重新提交作业。你对 WWPD 问题的回答不会提交给 Gradescope,也不需要提交。实验学分基于代码编写问题。

恭喜,你刚刚提交了你的第一个 CS 61A 作业!

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

下面介绍几种常用的 Python 文件运行方式。

  1. 不使用任何命令行选项会直接运行指定文件中的代码,然后返回到命令行界面。如果文件只包含函数定义,且没有语法错误,则不会产生任何输出。

    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,这些 doctest 是函数文档注释中的示例。

    每个测试用例都以 >>> 开头,后面跟着Python代码和期望的输出结果。

    以下是如何运行 lab00.py 中的 doctest:

     python3 -m doctest lab00.py

    如果所有doctest都通过,则不会有任何输出信息。否则,会显示关于失败测试的详细信息。