Skip to main content

CS 61A 2024 春季 Lab 0 解决方案

Lab 0 解决方案

实验解答文件

所有学生都需要完成此实验,它会计入你的实验分数。建议在第一次实验课(Lab 1)之前在家完成。

简介

本实验将指导你如何设置电脑以完成作业,并介绍Python的基础知识。如果在实验过程中遇到任何问题,欢迎参加答疑时间,在Ed论坛上提问,或者参加你所在小组的实验课。

实验内容概要如下:

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

    • 安装终端:安装一个终端,用于和本课程的文件进行交互,并运行 OK 命令。如果你的电脑已经安装了终端,并且熟悉其使用,可以跳过此步骤。
    • 安装 Python 3:在你的电脑上安装 Python 编程语言。如果已经安装了 Python 3.7 或更高版本(推荐 Python 3.9),可以跳过此步骤。
    • 安装文本编辑器:安装用于编辑本课程的 .py 文件的软件(例如 VSCode、Atom 等)。如果你已经有常用的文本编辑器,可以跳过此步骤。
  • 演练:使用终端:本节将指导你如何使用终端和 Python 解释器。如果你已经熟练掌握终端和 Python 解释器的使用,可以跳过本节。

  • 演练:组织你的文件:本节将指导你如何使用终端来组织和浏览本课程的文件。 务必至少浏览一下本节,因为它包含本课程特有的重要信息。如果你已经熟悉使用终端进行目录导航,本节的大部分内容对你来说应该比较简单。

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

  • 必做:提交作业:你必须完成本节才能获得相应的分数。 本节将指导你如何在完成上一节的作业后进行提交,并验证是否成功在 Gradescope 上提交。

  • 附录:常用的 Python 命令行选项:这些命令在调试时非常有用,但不是完成本实验的必要条件。 我们提供这些信息是为了方便你在整个课程中使用。

设置

请根据你的操作系统选择相应的指南来配置你的设备。

备选方案

如果你在安装 Python 解释器、文本编辑器和终端时遇到问题,或者你使用的设备(例如 iPad)不允许安装软件,可以尝试以下临时方案来完成作业,同时寻找更合适的硬件设备。

使用 Soda 实验室的电脑

你需要一个教学账号,才能够登录并使用 Soda 中的任何一台实验室电脑。你可以查看你现有的教学账号,以及为相关课程创建新的教学账号,请访问:https://inst.eecs.berkeley.edu/connecting.html

你可以通过你的 CalNet ID 登录该网站。要为此课程创建一个教学账号,请点击“Get a new account”(获取新账号),找到目的为“cs61a”的那一行。

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

在线编辑器作为替代方案

重要提示: 以下列出的两种替代方案都不是本课程的最佳选择。我们建议你能够使用自己的本地环境,或者使用 Soda 实验室的电脑(你可以使用你的课程教学账号访问)。

61A 代码:

你可以使用 61A Code,这是课程的在线环境,你可以在其中编辑、运行、调试程序,进行可视化操作,并与工作人员分享。61A Code 的文档可以在这里找到:61A Code docs

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

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

  1. 访问 61A Code
  2. 打开一个现有文件:进入你的 cs61a 文件夹,然后进入作业文件夹 (lab00),你可以在其中找到此作业的文件。
  3. 系统将提示你授权编辑器。你可以点击“Confirm”(确认)。回到编辑器本身,你就可以打开你想编辑的文件。
  4. 要打开终端,请点击“Console”(控制台)。
  5. 你可以使用编辑器编写代码,并使用控制台运行你的代码。

Datahub:

另一种替代本地环境的选择是使用加州大学伯克利分校的 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 命令不起作用,请尝试仅使用 pythonpy。 有关更多信息,请参见安装 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. 单击作业 Lab 0 以打开它。

  4. 当出现对话框时,点击显示“拖放”字样的灰色区域。

  5. 然后选择你为本次作业编辑过的 lab00.py 代码文件。

    gradescope submit

  6. 选择文件后,点击“上传”按钮。上传成功后,屏幕上会显示确认消息,你也会收到一封邮件。

    gradescope upload

  7. 接下来,等待几分钟,让自动评分程序对你的代码文件进行评分。你的最终得分会显示在右侧,应该和你在本地测试的结果一致。你可以在右上角找到一个名为“代码”的标签页,查看你提交的代码。如果有任何错误,你可以编辑 lab00.py 文件,然后点击屏幕底部的“重新提交”来重新提交。你可以在截止日期前多次重新提交作业。

    gradescope results

你无需将 WWPD 问题的答案提交到 Gradescope。实验成绩主要基于代码编写部分。

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

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

以下是几种常用的 Python 文件运行方式。

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

    python3 lab00.py
  2. -i: -i 选项运行指定文件中的代码,然后打开一个交互式终端(带有 >>> 提示符)。然后你可以执行表达式,例如调用你定义的函数。要退出交互式终端,请输入 exit() 命令。您也可以在 Linux/Mac 机器上使用键盘快捷键 Ctrl-D,或在 Windows 上使用 Ctrl-Z Enter

    如果在交互模式下编辑了Python文件,需要先退出并重启解释器,修改才能生效。

    以下是如何以交互方式运行 lab00.py

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

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

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

     python3 -m doctest lab00.py

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