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 上完成此作业的步骤:
- 访问 61A Code。
- 打开一个现有文件:进入你的
cs61a
文件夹,然后进入作业文件夹 (lab00
),你可以在其中找到此作业的文件。 - 系统将提示你授权编辑器。你可以点击“Confirm”(确认)。回到编辑器本身,你就可以打开你想编辑的文件。
- 要打开终端,请点击“Console”(控制台)。
- 你可以使用编辑器编写代码,并使用控制台运行你的代码。
Datahub:
另一种替代本地环境的选择是使用加州大学伯克利分校的 Datahub。
在 Datahub 上完成此作业的步骤:
- 访问 Datahub。
- 将作业 zip 文件上传到 datahub。
- 点击左上角的“New”(新建),然后选择终端即可打开。
- 导航到 zip 文件所在的位置并运行
unzip lab00.zip
。 - 打开代码文件 (
lab00.py
) 并输入代码,然后保存。 - 现在你可以提交你的实验了。
你的第一个作业
在进行作业时,请确保你的终端的工作目录是正确的(这很可能就是你解压缩作业的地方)。
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 提交
使用你的 CalNet ID,通过学校凭证登录 Gradescope。登录后,你会进入你的控制面板。
在你的控制面板上,选择课程 CS61A。你应该已经被添加到 Gradescope 中。如果没有,请在 Ed 上发一个私帖。你会在列表中看到可以提交的课程作业,以及作业的状态、发布日期和截止日期。
单击作业 Lab 0 以打开它。
当出现对话框时,点击显示“拖放”字样的灰色区域。
然后选择你为本次作业编辑过的
lab00.py
代码文件。选择文件后,点击“上传”按钮。上传成功后,屏幕上会显示确认消息,你也会收到一封邮件。
接下来,等待几分钟,让自动评分程序对你的代码文件进行评分。你的最终得分会显示在右侧,应该和你在本地测试的结果一致。你可以在右上角找到一个名为“代码”的标签页,查看你提交的代码。如果有任何错误,你可以编辑
lab00.py
文件,然后点击屏幕底部的“重新提交”来重新提交。你可以在截止日期前多次重新提交作业。
你无需将 WWPD 问题的答案提交到 Gradescope。实验成绩主要基于代码编写部分。
恭喜,你刚刚提交了你的第一个 CS 61A 作业!
附录:有用的 Python 命令行选项
以下是几种常用的 Python 文件运行方式。
不使用任何命令行选项,将会运行指定文件中的代码,然后返回到命令行界面。如果文件只包含函数定义,且没有语法错误,则不会有任何输出。
python3 lab00.py
-i
:-i
选项运行指定文件中的代码,然后打开一个交互式终端(带有>>>
提示符)。然后你可以执行表达式,例如调用你定义的函数。要退出交互式终端,请输入exit()
命令。您也可以在 Linux/Mac 机器上使用键盘快捷键Ctrl-D
,或在 Windows 上使用Ctrl-Z Enter
。如果在交互模式下编辑了Python文件,需要先退出并重启解释器,修改才能生效。
以下是如何以交互方式运行
lab00.py
:python3 -i lab00.py
-m doctest
: 运行文件中的 doctest,这些 doctest 是函数文档字符串中的示例。文件中的每个测试都以
>>>
开头,后面跟着Python代码和期望的输出结果。以下是如何运行
lab00.py
中的 doctest:python3 -m doctest lab00.py
如果代码通过了所有doctest,则不会有任何输出。否则,会显示关于失败测试的信息。