docs
This commit is contained in:
@@ -1,625 +0,0 @@
|
||||
# lab00:让我们开始吧
|
||||
|
||||
# 介绍
|
||||
|
||||
本 lab 将介绍如何设置计算机以完成作业,并介绍 Python 的一些基础知识。
|
||||
|
||||
这个 lab 是必需的。这个设置对于完全课程中的所有其他作业是必要的。
|
||||
|
||||
这个 lab 看起来非常长,但它主要是设置和学习如何使用这个课程的基本工具。这些现在看起来有点困难,但随着我们进一步进入课程,很快就会变得熟悉起来。
|
||||
|
||||
以下是实验室的主要部分:
|
||||
|
||||
- <strong>设置</strong>:设置课程的基本软件。这将需要几个组件,如下所列。
|
||||
|
||||
- <strong>安装终端</strong>:安装终端,以便你可以与本课程中的文件进行交互并运行 OK 命令。如果你的计算机上有终端并且使用起来很舒服,则可以跳过这一部分。
|
||||
- <strong>安装 Python 3</strong>:将 Python 编程语言安装到你的计算机上。如果你已经安装了 Python 3.7 或更高版本(最好是 Python 3.9),则可以跳过这部分。
|
||||
- <strong>安装文本编辑器</strong>:安装软件来编辑 `.py` 本课程的文件(例如 VSCode、Atom 等)。如果你已经有了自己喜欢的文本编辑器,则可以跳过这一部分。
|
||||
- <strong>演练:使用终端</strong>:本节将引导你完成如何使用终端和 Python 解释器。如果你已经能熟练使用这两者并感到轻松,则无需阅读本节。
|
||||
- <strong>演练:组织文件</strong>:本节将指导你完成如何使用终端来组织和导航本课程的文件。<strong>每个人都应该至少浏览一下这一部分</strong>,因为它包含特定于此类的重要信息,但是如果你已经习惯使用终端浏览目录结构,那么其中的大部分内容都会很熟悉。
|
||||
- <strong>复习:Python 基础知识</strong>:这是对讲座中介绍的 Python 的许多基本组件的复习。你应该已经看过此材料,但我们希望在每个 lab 中包含对相关内容的简要回顾,以备你需要复习任何内容。
|
||||
- <strong>要求:完成作业</strong>:你必须完成此部分才能获得作业分数。在这里,你将练习本课程的 lab、hw 和 proj 中要求你完成的不同类型的问题。本作业的主要目的是让你练习使用我们的软件。
|
||||
- <strong>要求:提交作业</strong>:你必须完成此部分才能获得作业分数。这将引导你了解如何在完成上一节后上交作业,以及如何验证你的作业是否已在 OKPY 上上交。(即使我们没有注册账户,也可以在本地运行 ok)
|
||||
- <strong>附录:有用的 Python 命令行选项</strong>:这些命令对调试你的工作很有用,但不是完成本实验所必需的。我们将它们包括在内是因为我们认为它们可能会在整个课程中对你有所帮助。
|
||||
|
||||
## 设置
|
||||
|
||||
### 安装终端
|
||||
|
||||
终端是一个程序,允许你通过输入命令与你的计算机进行交互。
|
||||
|
||||
#### macOS/Linux
|
||||
|
||||
如果你使用的是 Mac 或正在使用某种形式的 Linux(例如 Ubuntu),则你 `Terminal` 的计算机上已经有一个名为或类似名称的程序。打开它,你应该可以开始了。
|
||||
|
||||
#### 视窗
|
||||
|
||||
<strong>选项 1 (WSL):</strong>你可以使用适用于 Linux 的 Windows 子系统或 WSL 在 Windows 上获得终端。这可以通过终端程序访问 `Ubuntu`,该程序模拟 Windows 计算机上的 Ubuntu 操作系统 (OS)。这将使我们的大部分作业在你的设备上顺利进行。
|
||||
|
||||
要安装适用于 Windows 的 Ubuntu,请单击开始并搜索 PowerShell。右键单击并选择“以管理员身份运行”。然后,在 PowerShell 窗口中,键入 `wsl --install` 并按 Enter。该命令必须按照准确的顺序输入。这应该会自动完成设置过程(按照屏幕上可能给出的任何说明进行操作)。
|
||||
|
||||
接下来, [从 Windows 商店下载 Ubuntu](https://apps.microsoft.com/store/detail/ubuntu/9PDXGNCFSCZV?hl=en-us&gl=US),或者你可以运行:
|
||||
|
||||
```sql
|
||||
wsl --install -d ubuntu
|
||||
```
|
||||
|
||||
你可能还会发现访问 [Ubuntu 的下载指南](https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10#1-overview)很有帮助。
|
||||
|
||||
安装完成后,在开始菜单中搜索 Ubuntu。第一次启动可能需要几分钟,但后续启动应该很快。
|
||||
|
||||
<strong>替代选项:</strong>如果你在安装 WSL 时遇到问题,你可以跳过此步骤并使用 Windows PowerShell 代替 61A。PowerShell 预装在 Windows 上,无需额外设置。你可以简单地从“开始”菜单启动它。`cd` 像和 这样的简单命令 `ls` 将起作用(`python` 将在设置后起作用),其中包含本课程所需的大部分 Bash 命令。
|
||||
|
||||
### 安装 Python 3
|
||||
|
||||
Python 3 是本课程中使用的主要编程语言。使用下面的说明安装 Python 3。(这些说明可能适用于旧版本的 Python 3,但步骤相似。)
|
||||
|
||||
<strong>重要提示:</strong>如果你已经安装了旧版本的 Python,请确保下载并安装 Python 3.9。你可以使用 来检查你的 Python 版本 `python3 ––version`。
|
||||
|
||||
#### macOs
|
||||
|
||||
下载并安装 [Python 3(64 位)](https://www.python.org/ftp/python/3.9.6/python-3.9.6-macosx10.9.pkg)。你可能需要右键单击下载图标并选择“打开”。安装后,请关闭并重新打开你的终端。
|
||||
|
||||
如果你安装了 Homebrew,你也可以通过运行安装 Python3 `brew install python3`。
|
||||
|
||||
#### Windows
|
||||
|
||||
<strong>如果你将使用 PowerShell 而不是 WSL,请打开 Microsoft Store 并搜索“python”。</strong>安装 Python Software Foundation 提供的 Python 3.9(这应该是第一个结果)。然后你可以跳过本节的其余部分。(重要提示:如果你以后决定以不同方式重新安装 Python,<strong>请先从 Microsoft Store 卸载它。)</strong>
|
||||
|
||||
否则,如果你使用的是 WSL,请在 Ubuntu 中键入 `sudo apt install python3` 并点击 `enter`. 安装完成后,你可以通过键入来测试它是否安装正确 `python3 --version`。你应该会在响应中看到一条消息,显示你的 python3 版本: `Python 3.9.6`。
|
||||
|
||||
#### Linux
|
||||
|
||||
运行 `sudo apt install python3`(Ubuntu)、`sudo pacman -S python3`(Arch) 或适用于你的发行版的命令。
|
||||
|
||||
#### 其他
|
||||
|
||||
[从下载页面下载 Python](https://www.python.org/downloads/)。
|
||||
|
||||
### 安装文本编辑器
|
||||
|
||||
<strong>你刚刚安装的 Python 解释器</strong>允许你<em>运行</em>Python 代码。你还需要一个<strong>文本编辑器</strong>,你将在其中<em>编写</em>Python 代码。
|
||||
|
||||
[Visual Studio Code (VS Code)](https://code.visualstudio.com/)是这门课程编写 Python 的最流行的选择。下面还列出了员工使用的其他一些编辑器。
|
||||
|
||||
<strong>如果你使用的是 Windows</strong>并遵循我们的 Python 设置过程,VS Code 将最适合你(因为它具有 WSL 支持)。安装 VS Code 后,安装 [Remote Development 扩展包](https://aka.ms/vscode-remote/download/extension)。[然后,你可以使用 VS Code 文档这一部分](https://code.visualstudio.com/docs/remote/wsl#_open-a-remote-folder-or-workspace)中的说明在 VS Code 中打开 WSL 文件夹。
|
||||
|
||||
<strong>我们强烈建议在本课程中使用 VS Code。</strong>这将帮助我们为你提供最好的支持,因为大多数员工也使用 VS Code。
|
||||
|
||||
VS Code 的另一个不错的功能是它具有“嵌入式终端”。因此,在为此类运行终端命令时,你可以在 VS Code 中管理所有内容,而不是在 VS Code 和单独的终端应用程序之间来回导航。`Terminal > New Terminal` 你可以通过转到 VS Code 的导航栏中打开嵌入式终端 。
|
||||
|
||||
> 警告:请不要使用 Microsoft Word 等文字处理器来编辑程序。文字处理器可以向文档添加额外的内容,这会使解释器感到困惑。
|
||||
|
||||
为了你的参考,我们还编写了一些使用流行的文本编辑器的指南。完成实验室后,如果你有兴趣,可以看看:
|
||||
|
||||
- [Visual Studio Code](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/vscode):一个功能齐全的桌面编辑器,具有许多可用于支持不同语言的扩展。
|
||||
- [Atom](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/atom):一个更轻量级的桌面编辑器。
|
||||
- [Vim](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/vim):命令行编辑器。
|
||||
- [Emacs](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/emacs):命令行编辑器。
|
||||
|
||||
其他编译器:
|
||||
|
||||
- [PyCharm](https://www.jetbrains.com/pycharm/):专为 Python 设计的桌面编辑器。
|
||||
- [Sublime Text](https://www.sublimetext.com/):一个使用代码的文本编辑器。
|
||||
|
||||
### 结对编程
|
||||
|
||||
在整个课程中,你将有很多机会在实验室和项目中与其他人协作编码。我们建议你现在下载这些结对编程扩展以备将来使用。
|
||||
|
||||
要共享代码,你可以按照你选择的编辑器的说明进行操作:
|
||||
|
||||
- [VS Code](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/vscode#pair-programming)
|
||||
- [Atom](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/atom#pair-programming)
|
||||
|
||||
### 备份设置
|
||||
|
||||
如你你在安装 Python 解释器、文本编辑器和终端时遇到问题,或者如果你使用的东西不允许你安装软件,比如 iPad,你可以作为临时措施使用以下一些来完成作业在你获得更合适的硬件时执行的步骤。
|
||||
|
||||
#### Soda 实验室计算机
|
||||
|
||||
你将需要一个指导帐户,该帐户允许你登录并使用 Soda 中的任何实验室计算机。你可以访问以下网址查看你现有的教学帐户并为适用的课程创建新的教学帐户:https: [//inst.eecs.berkeley.edu/connecting.html](https://inst.eecs.berkeley.edu/connecting.html)。
|
||||
|
||||
你可以通过你的 CalNet ID 登录该站点。要创建本课程的教学帐户,请单击以“cs61a”为目的的行的“获取新帐户”。
|
||||
|
||||
创建帐户后,你可以使用它登录 Soda 实验室计算机,并使用该计算机完成课程作业。
|
||||
|
||||
#### 在线编辑器作为备份
|
||||
|
||||
> 重要提示: 下面列出的两种替代方法都不适合在本课程中使用。我们建议能够使用您自己的本地设置或使用 Soda 中的实验室计算机(您可以使用您的课程教学帐户访问)。
|
||||
|
||||
<strong>61A 代码:</strong>
|
||||
|
||||
您可以使用 [61A 代码](https://code.cs61a.org/),这是一个在线课程环境,您可以在其中编辑、运行、调试、可视化程序并与教职员工共享程序。可在此处找到 61A 代码的文档: [61A 代码文档](https://cs61a.org/articles/61a-code-docs/)。
|
||||
|
||||
> 注意: 您将无法 `ok` 在 61A 代码中运行命令,解锁测试、运行测试和提交作业需要执行这些命令。
|
||||
|
||||
在 61A Code 上完成此作业的步骤:
|
||||
|
||||
1. 访问 [61A 代码](https://code.cs61a.org/)。
|
||||
2. 打开现有文件:进入您的 `cs61a` 文件夹,然后是作业文件夹 ( `lab00`),您可以在其中找到该作业的文件。
|
||||
3. 系统将提示您授权编辑器。您可以点击“确认”。回到编辑器本身,然后您可以打开要编辑的文件。
|
||||
4. 要打开终端,请单击“控制台”。
|
||||
5. 您可以使用编辑器编写代码,使用控制台运行代码。
|
||||
|
||||
<strong>数据中心:</strong>
|
||||
|
||||
在本地工作的另一种选择是使用加州大学伯克利分校的 Datahub。
|
||||
|
||||
在 Datahub 上完成作业的步骤:
|
||||
|
||||
1. 访问[数据中心](https://datahub.berkeley.edu/)。
|
||||
2. 将作业 zip 文件上传到数据中心。
|
||||
3. 通过按左上角的“新建”并选择终端来打开终端。
|
||||
4. 导航到 zip 文件所在的位置并运行 `unzip lab00.zip`。
|
||||
5. 打开代码文件 ( `lab00.py`) 并在其中键入,然后保存。
|
||||
6. 现在您可以提交实验。
|
||||
|
||||
## 演练:使用终端
|
||||
|
||||
首先,打开一个终端窗口。
|
||||
|
||||

|
||||
|
||||
#### 主目录
|
||||
|
||||
当您第一次打开终端时,您将从“主目录”开始。主<strong>目录</strong>由 `~` 符号表示,您可能会在提示符处看到它。
|
||||
|
||||
> 如果您的终端窗口看起来不完全相同,请不要担心。重要的部分是提示符显示 `$`(表示 Bash)或 `%` (表示 zsh)。
|
||||
|
||||
尝试跑步 `echo "$HOME"`。该命令应显示您的主目录的完整路径。它应该看起来像这样:
|
||||
|
||||
`/Users/OskiBear`
|
||||
|
||||
#### 小路
|
||||
|
||||
PATH 就像一个地址:它告诉您和计算机到某个文件夹的完整路径(或路由)。请记住,您可以通过两种不同的方式访问计算机上的文件和目录(文件夹)。您可以使用终端(这是一个<strong>命令行</strong>界面或 CLI),也可以使用 Finder <strong>。</strong>Finder 是<strong>图形</strong>用户<strong>界面</strong>(或 GUI)的一个 例子<strong>。</strong>导航技术不同,但文件相同。例如,这是我的 CS 61A 实验室文件夹在我的 GUI 中的样子:
|
||||
|
||||

|
||||
|
||||
这是完全相同的文件夹在终端中的外观:
|
||||
|
||||

|
||||
|
||||
请注意,在这两种情况下,黄色框都显示了 PATH,紫色椭圆显示了“labs”文件夹的内容。
|
||||
|
||||
#### 终端与 Python 解释器
|
||||
|
||||
让我们停下来思考一下终端和 Python 解释器之间的区别。
|
||||
|
||||

|
||||
|
||||
1. 哪个是终端?
|
||||
2. 哪个是 Python 解释器?
|
||||
3. 哪个是我的代码编辑器?
|
||||
4. 你怎么知道?
|
||||
|
||||
A 和 D 都是我的终端。在这里您可以运行 bash 命令,例如 `cd` 和 `ls`。D 是 VS Code 内置的终端。
|
||||
|
||||
B 是 Python 解释器。你可以从 >>> 提示中看出这意味着你已经启动了一个 Python 解释器。您还可以判断,因为启动它的命令是可见的:`python3`。该 `python3` 命令启动 Python 解释器。如果您在 Python 解释器中键入 bash 命令,您可能会遇到语法错误!这是一个例子:
|
||||
|
||||

|
||||
|
||||
C 是我的代码编辑器。这是我可以编写 Python 代码以通过我的终端执行的地方。
|
||||
|
||||
## 演练:组织文件
|
||||
|
||||
在本节中,您将学习如何使用终端命令管理文件。
|
||||
|
||||
> 确保您的提示包含 `$` 其中的某处并且不以 `>>>`. 如果它以 `>>>` 您仍在 Python shell 中开头,您需要退出。见上文了解如何。
|
||||
|
||||
### 目录
|
||||
|
||||
您将使用的第一个命令是 `ls`. 尝试在您的终端中输入:
|
||||
|
||||
```
|
||||
ls
|
||||
```
|
||||
|
||||
该 `ls` 命令<strong>列出</strong>了当前目录中<strong>的</strong>所有文件和文件夹。目录是文件夹(如文件夹)的另一个 <strong>名称</strong>`Documents`。
|
||||
|
||||
#### macOS/Linux
|
||||
|
||||
由于您现在位于主目录中,因此在您键入后 `ls` 您应该会看到主目录的内容。
|
||||
|
||||
#### 视窗
|
||||
|
||||
`~` 在 Ubuntu 中,当您键入 时,您将看不到任何文件 `ls`。相反,您首先需要更改目录(见下文)。
|
||||
|
||||
### 更改目录
|
||||
|
||||
要移动到另一个目录,请使用 `cd` 命令 ( <strong>c</strong> hange <strong>directory</strong> )。
|
||||
|
||||
#### macOS/Linux
|
||||
|
||||
让我们尝试进入您的 `Desktop` 目录。首先,确保您位于主目录中(检查 `~` 命令行中的 )并使用 `ls` 查看该 `Desktop` 目录是否存在。
|
||||
|
||||
尝试在您的终端中键入以下命令,这应该会将您移至该目录:
|
||||
|
||||
```
|
||||
cd Desktop
|
||||
```
|
||||
|
||||
如果您<em>不在</em>您的主目录中,请尝试 `cd ~/Desktop`. 这是告诉终端你想去的路径。
|
||||
|
||||
#### Windows
|
||||
|
||||
在 Windows 上,首先切换到您的主目录。
|
||||
|
||||
```
|
||||
cd /mnt/c/Users/
|
||||
```
|
||||
|
||||
现在尝试 `ls` 之前的命令。您应该会看到一些文件夹。其中一个文件夹应与您的用户名匹配。例如,假设您的用户名是 `OskiBear`,您应该会看到一个名为 的文件夹 `OskiBear`。(请注意,您的 Windows 用户名可能与您的 Ubuntu 用户名不同)让我们切换到该文件夹:
|
||||
|
||||
```
|
||||
cd /mnt/c/Users/OskiBear/Desktop
|
||||
```
|
||||
|
||||
如果仍然找不到桌面目录,请在 Piazza 或办公时间寻求帮助。
|
||||
|
||||
### 制作新目录
|
||||
|
||||
下一个命令称为 `mkdir`,<strong>它</strong>创建<strong>一个</strong>新 <strong>目录</strong>。让我们在您的目录中创建一个名为的目录来存储此类的所有作业:`cs61aDesktop`
|
||||
|
||||
```
|
||||
mkdir cs61a
|
||||
```
|
||||
|
||||
名为的文件夹 `cs61a` 将出现在您的桌面上。`ls` 您可以通过再次使用该命令或使用资源管理器 (Windows) 或 Finder (Mac) 检查您的桌面来验证这一点。
|
||||
|
||||
在这一点上,让我们创建更多的目录。首先,确保您位于 `cs61a` 目录中(mac: `~/Desktop/cs61a`, Windows: `/mnt/c/Users/Desktop/cs61a`)。然后,创建两个新文件夹,一个名为 `projects`,另一个名为 `lab`. 两者都应该在您的 `cs61a` 文件夹中:
|
||||
|
||||
#### macOS/Linux
|
||||
|
||||
```
|
||||
cd ~/Desktop/cs61a
|
||||
mkdir projects
|
||||
mkdir lab
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
```
|
||||
cd /mnt/c/Users/OskiBear/Desktop/cs61a
|
||||
mkdir projects
|
||||
mkdir lab
|
||||
```
|
||||
|
||||
现在,如果您列出目录的内容(使用 `ls`),您将看到两个文件夹,`projects` 和 `lab`.
|
||||
|
||||

|
||||
|
||||
### 更多目录更改
|
||||
|
||||
有几种方法可以返回主目录:
|
||||
|
||||
- `cd ..`(两个点)。意思 `..` 是“父目录”,或当前目录之上的一个目录。
|
||||
- `cd ~`(代字号)。请记住,这 `~` 意味着主目录,因此此命令将始终更改为您的主目录。
|
||||
- `cd`(只有 `cd`)。只输入 `cd` 是输入 `cd ~` 的捷径。
|
||||
|
||||
> 如果您愿意,您不必将文件保留在桌面上。您将文件保存在本地的位置不会影响您的成绩。做对您来说最简单、最方便的事情!
|
||||
|
||||
### 下载作业
|
||||
|
||||
如果您还没有,请下载 zip 存档 [lab00.zip](https://inst.eecs.berkeley.edu/~cs61a/fa22/lab/lab00/lab00.zip),其中包含本 lab 所需的所有文件。完成后,让我们找到下载的文件。在大多数计算机上,`lab00.zip` 它可能位于一个名为 `Downloads` 您的主目录的目录中。使用 `ls` 命令检查:
|
||||
|
||||
```
|
||||
ls ~/Downloads
|
||||
```
|
||||
|
||||
如果您没有看到 `lab00.zip`,请在 Piazza 或办公时间寻求帮助。在某些版本的 Safari 上,文件可能会为您解压缩,在这种情况下,您只会看到一个名为 `lab00`.
|
||||
|
||||
### 提取启动文件
|
||||
|
||||
您必须先展开 zip 存档,然后才能处理实验室文件。不同的操作系统和不同的浏览器有不同的解压方式。在 Mac 中单击 .zip 文件将自动解压缩。在 Windows 上,您需要先单击 .zip 文件,然后选择“全部解压”。如果遇到麻烦,可以在线搜索如何解压缩文件。
|
||||
|
||||
这是使用终端解压缩的一种方法:
|
||||
|
||||
> 使用终端,您可以从命令行解压缩 zip 文件。首先,`cd` 进入包含 zip 文件的目录:<br/>``<br/>cd ~/Downloads<br/>`` 现在,`unzip` 使用 zip 文件的名称运行命令:<br/>``<br/>unzip lab00.zip<br/>``
|
||||
|
||||
您只需要解压缩文件一次。
|
||||
|
||||
解压缩后 `lab00.zip`,您将拥有一个名为的新文件夹 `lab00`,其中包含以下文件(使用 `cd lab00` 和检查 `ls`):
|
||||
|
||||
- `lab00.py`:您要将代码添加到的模板文件
|
||||
- `ok`: 用于测试和提交作业的程序
|
||||
- `lab00.ok`: 配置文件 `ok`
|
||||
|
||||
### 移动文件
|
||||
|
||||
将实验室文件移动到您之前创建的实验室文件夹中:
|
||||
|
||||
<strong>macOS/Linux</strong>
|
||||
|
||||
```
|
||||
mv ~/Downloads/lab00 ~/Desktop/cs61a/lab
|
||||
```
|
||||
|
||||
Windows
|
||||
|
||||
```
|
||||
mv /mnt/c/Users/Desktop/lab00 /mnt/c/Users/Desktop/cs61a/lab
|
||||
```
|
||||
|
||||
该 `mv` 命令会将文件夹移动到<strong>文件</strong>夹<strong>中</strong>。如果您愿意,还可以通过将文件拖放到图形文件资源管理器中的正确文件夹中来移动文件,这可能更常见,并且会产生完全相同的结果。`~/Downloads/lab00~/Desktop/cs61a/lab`
|
||||
|
||||
现在,转到 `lab00` 您刚刚移动的文件夹。尝试使用 `cd` 自己的方式导航!如果卡住了,可以使用以下命令:
|
||||
|
||||
<strong>macOS/Linux</strong>
|
||||
|
||||
```
|
||||
cd ~/Desktop/cs61a/lab/lab00
|
||||
```
|
||||
|
||||
Windows
|
||||
|
||||
```
|
||||
cd /mnt/c/Users/Desktop/cs61a/lab/lab00
|
||||
```
|
||||
|
||||
### 概括
|
||||
|
||||
以下是我们刚刚完成的命令摘要,供您参考:
|
||||
|
||||
- `ls`: 列出当前目录下的所有文件
|
||||
- `cd <path to directory>`: 改变进入指定目录
|
||||
- `mkdir <directory name>`: 使用给定名称创建一个新目录
|
||||
- `mv <source path> <destination path>`: 将给定地址的文件移动到给定的目录
|
||||
|
||||
最后,您可以开始编辑实验室文件了!如果这看起来很复杂,请不要担心——随着时间的推移,它会变得容易得多。只要继续练习!您还可以查看我们的 [UNIX 教程](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/unix),了解有关终端命令的更详细说明。
|
||||
|
||||
## 回顾:Python 基础知识
|
||||
|
||||
程序由表达式和语句组成。表达式是一段计算出某个值的代码,而<em>语句是使程序</em>中发生某事的一行或多行代码。
|
||||
|
||||
当您将 Python 表达式输入交互式 Python 解释器时,将显示其值。当您阅读以下示例时,请在您自己的 Python 解释器上尝试一些类似的表达式,您可以通过在终端中输入以下内容来启动它:
|
||||
|
||||
```
|
||||
python3
|
||||
```
|
||||
|
||||
您将在本课程中学习各种类型的表达式和语句。现在,让我们看一下完成本实验所需的内容。
|
||||
|
||||
#### 原始表达式
|
||||
|
||||
原始表达式只需要一步来计算。这些包括数字和布尔值,它们只是对自己求值。
|
||||
|
||||
```python
|
||||
>>> 3
|
||||
3
|
||||
>>> 12.5
|
||||
12.5
|
||||
>>> True
|
||||
True
|
||||
```
|
||||
|
||||
#### 算术表达式
|
||||
|
||||
数字可以与数学运算符组合以形成复合表达式。除了 `+` 运算符(加法)、`-` 运算符(减法)、`*` 运算符(乘法)和 `**` 运算符(求幂)之外,还有三个类似除法的运算符需要记住:
|
||||
|
||||
- 浮点数除法 ( `/`):将第一个数字除以第二个数字,计算结果为带小数点的数字,<em>即使数字被整除也是如此</em>。
|
||||
- 整除 ( `//`):用第一个数字除以第二个数字,然后向下舍入,计算结果为整数。
|
||||
- 模 ( `%`):计算除法剩余的正余数。
|
||||
|
||||
括号可用于将子表达式组合在一起;整个表达式按 PEMDAS(括号、求幂、乘法/除法、加法/减法)顺序求值。
|
||||
|
||||
```python
|
||||
>>> 7 / 4
|
||||
1.75
|
||||
>>> (2 + 6) / 4
|
||||
2.0
|
||||
>>> 7 // 4 # Floor division (rounding down)
|
||||
1
|
||||
>>> 7 % 4 # Modulus (remainder of 7 // 4)
|
||||
3
|
||||
```
|
||||
|
||||
#### 字符串
|
||||
|
||||
字符串由用单引号 ( `''`) 或双引号 ( `""`) 包裹的一个或多个字符组成。字符串实际上与原始表达式略有不同,但出于此赋值的目的,可以将其视为对自身求值的表达式。在接下来的几周中,您将在本课程中了解更多关于字符串的复杂性!
|
||||
|
||||
```python
|
||||
>>> "hello" # Both single and double quotes work!'hello'>>> 'world!''world'
|
||||
```
|
||||
|
||||
#### 赋值语句
|
||||
|
||||
赋值语句由名称和表达式组成。它通过计算符号右侧的表达式 `=` 并将其值<em>绑定</em>到左侧的名称来更改程序的状态。
|
||||
|
||||
```python
|
||||
>>> a = (100 + 50) // 2
|
||||
```
|
||||
|
||||
现在,如果我们计算 `a`,解释器将显示值 75。
|
||||
|
||||
```python
|
||||
>>> a
|
||||
75
|
||||
```
|
||||
|
||||
## 要求:完成作业
|
||||
|
||||
> 在处理作业时,请确保您终端的工作目录是正确的(这个目录可能是您解压缩作业的位置)。
|
||||
|
||||
### Python 会做什么?(WWPD)
|
||||
|
||||
实验室作业的一个组成部分是预测 Python 解释器的行为方式。
|
||||
|
||||
> 在您的终端中输入以下内容以开始此部分:<br/>``<br/>python3 ok -q python-basics -u<br/>`` 系统将提示您输入各种语句/表达式的输出。您必须正确输入它们才能继续,但错误答案不会受到惩罚。<br/>第一次运行 Ok 时,系统将提示您输入 bCourses 电子邮件。请遵循[这些指示](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/using-ok/#signing-in-with-ok)。我们在评分时使用此信息将您的代码与您相关联。
|
||||
|
||||
```python
|
||||
>>> 10 + 2
|
||||
______
|
||||
>>> 7 / 2
|
||||
______
|
||||
>>> 7 // 2
|
||||
______
|
||||
>>> 7 % 2 # 7 modulo 2, the remainder when dividing 7 by 2.
|
||||
______
|
||||
```
|
||||
|
||||
```python
|
||||
>>> x = 20>>> x + 2
|
||||
______
|
||||
>>> x
|
||||
______
|
||||
>>> y = 5>>> y = y + 3>>> y * 2
|
||||
______
|
||||
>>> y = y // 4>>> y + x
|
||||
______
|
||||
```
|
||||
|
||||
### 代码编写题
|
||||
|
||||
#### 理解问题
|
||||
|
||||
实验室还将包括函数编写问题。在你的文本编辑器中打开 `lab00.py`。您可以 `open .` 在 MacOS 或 `start .` Windows 上键入以在 Finder/文件资源管理器中打开当前目录。然后双击或右键单击以在文本编辑器中打开文件。你应该看到这样的东西:
|
||||
|
||||

|
||||
|
||||
三引号中的行 `"""` 称为<strong>文档字符串(Docstring)</strong>,它描述了函数应该做什么。在 61A 中编写代码时,您应该始终阅读文档字符串!
|
||||
|
||||
开头的行 `>>>` 称为<strong>文档测试模块(Doctest)</strong>。回想一下,当使用 Python 解释器时,您在旁边编写 Python 表达式 `>>>`,输出打印在该行下方。文档测试模块通过显示实际的 Python 代码来解释函数的作用。它回答了这个问题:“如果我们输入这段 Python 代码,预期的输出应该是什么?”
|
||||
|
||||
在这里,我们圈出了文档字符串和文档测试,以便于查看:
|
||||
|
||||

|
||||
|
||||
在 `twenty_twenty_two`,
|
||||
|
||||
- 文档字符串告诉你“想出最有创意的表达式,计算到 2022 年”,但你只能使用数字和算术运算符 `+`(add)、`*`(multiply) 和 `-`(subtract)。
|
||||
- doctest 检查函数调用 `twenty_twenty_two()` 是否应返回数字 2022。
|
||||
|
||||
> 你不应该修改文档字符串,除非你想添加你自己的测试!除非另有说明,否则您需要编辑的唯一部分是代码。
|
||||
|
||||
#### 编写代码
|
||||
|
||||
了解问题的含义后,您就可以开始编写代码了!您应该将中的下划线替换 `return ______` 为计算结果为 2022 的表达式。您能想出的最有创意的表达式是什么?
|
||||
|
||||
> 编辑后不要忘记保存您的作业!在大多数文本编辑器中,您可以通过导航到“文件”>“保存”或在 MacOS 上按 Command-S 或在 Windows 上按 Ctrl-S 来保存。
|
||||
|
||||
### 运行测试
|
||||
|
||||
在 CS 61A 中,我们将使用一个名为 的程序 `ok` 来测试我们的代码。`ok` 将包含在本课程的每项作业中。
|
||||
|
||||
> 为了快速生成 ok 命令,您现在可以使用 [ok 命令生成器](https://go.cs61a.org/ok-help)。
|
||||
|
||||
返回终端——确保您位于 `lab00` 我们之前创建的目录中(请记住,该 `cd` 命令允许您[更改目录](https://inst.eecs.berkeley.edu/~cs61a/fa22/lab/lab00/#changing-directories))。
|
||||
|
||||
在该目录中,您可以键入 `ls` 以验证是否存在以下三个文件:
|
||||
|
||||
- `lab00.py`:您刚刚编辑的起始文件
|
||||
- `ok`: 我们的测试程序
|
||||
- `lab00.ok`: Ok 的配置文件
|
||||
|
||||
现在,让我们测试我们的代码以确保它能正常工作。您可以 `ok` 使用此命令运行:
|
||||
|
||||
```
|
||||
python3 ok
|
||||
```
|
||||
|
||||
> 请记住,如果您使用的是 Windows 而该 `python3` 命令不起作用,请尝试仅使用 `python` 或 `py`。有关详细信息,请参阅[安装 Python 3](https://inst.eecs.berkeley.edu/~cs61a/fa22/lab/lab00/#install-python-3) 部分,如果遇到困难,请寻求帮助!
|
||||
|
||||
如果您正确编写了代码并完成了测试解锁,您应该会看到一个成功的测试:
|
||||
|
||||
```sql
|
||||
=====================================================================
|
||||
Assignment: Lab 0
|
||||
Ok, version v1.18.1
|
||||
=====================================================================
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Running tests
|
||||
|
||||
---------------------------------------------------------------------
|
||||
Test summary
|
||||
3 test cases passed! No cases failed.
|
||||
```
|
||||
|
||||
如果您没有通过测试,`ok` 则会向您显示如下内容:
|
||||
|
||||
```python
|
||||
---------------------------------------------------------------------
|
||||
Doctests for twenty_twenty_two
|
||||
|
||||
>>> from lab00 import *
|
||||
>>> twenty_twenty_two()
|
||||
2013
|
||||
|
||||
# Error: expected
|
||||
# 2022
|
||||
# but got
|
||||
# 2013
|
||||
|
||||
---------------------------------------------------------------------
|
||||
Test summary
|
||||
0 test cases passed before encountering first failed test case
|
||||
```
|
||||
|
||||
在您的文本编辑器中修复您的代码,直到测试通过。
|
||||
|
||||
> 每次运行 Ok 时,Ok 都会尝试备份您的工作。如果它说“连接超时”,请不要担心。我们不会使用您的备份进行评分。<br/>虽然是 CS 61A 中的主要作业“autograder”,但有时您可能会发现以[文档测试模块](https://inst.eecs.berkeley.edu/~cs61a/fa22/lab/lab00/#understanding-problems)的形式编写一些您自己的测试很有用。然后,您可以使用 `-m doctest` 命令来测试代码。[Python 命令](https://inst.eecs.berkeley.edu/~cs61a/fa22/lab/lab00/#appendix-useful-python-command-line-options))。
|
||||
|
||||
## 要求:提交作业
|
||||
|
||||
现在您已经完成了第一个 CS 61A 作业,是时候上交了。您可以按照以下后续步骤提交您的作业并获得分数。
|
||||
|
||||
### 第 1 步:提交 `ok`
|
||||
|
||||
在您的终端中,确保您位于包含 `ok`. 如果你还没有,你可以使用这个命令:
|
||||
|
||||
```
|
||||
cd ~/Desktop/cs61a/lab/lab00
|
||||
```
|
||||
|
||||
接下来,使用 `ok` 选项 `--submit`:
|
||||
|
||||
```sql
|
||||
python3 ok --submit
|
||||
```
|
||||
|
||||
如果您之前没有运行过,这将提示您输入电子邮件地址。请按照[这些说明](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/using-ok/#signing-in-with-ok)进行操作,如果遇到问题,请参阅该页面上的故障排除步骤。之后,Ok 将打印出如下消息:
|
||||
|
||||
```
|
||||
Submitting... 100% complete
|
||||
Submission successful for user: ...
|
||||
URL: https://okpy.org/...
|
||||
```
|
||||
|
||||
### 第 2 步:验证您的提交
|
||||
|
||||
您可以点击 Ok 打印出来的链接来查看您的最终提交,或者您可以转到 [okpy.org](https://okpy.org/)。您将能够在登录后查看您提交的内容。
|
||||
|
||||
> 请确保你用你在终端运行 `ok` 时提供的相同电子邮件登录!
|
||||
|
||||
您应该会看到 Lab 0 的成功提交。
|
||||
|
||||
<strong>恭喜</strong>,您刚刚提交了第一份 CS 61A 作业!
|
||||
|
||||
> 有关 Ok 的更多信息,请参见[此处](https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/using-ok/)。您还可以使用 `--help` 标志:<br/>``sql<br/>python3 ok --help<br/>`` 这个标志的作用就像我们之前使用的 UNIX 命令一样。
|
||||
|
||||
## 附录:有用的 Python 命令行选项
|
||||
|
||||
运行 Python 文件时,您可以使用命令行选项进一步检查代码。这里有一些会派上用场。如果您想了解有关其他 Python 命令行选项的更多信息,请查看[文档](https://docs.python.org/3.9/using/cmdline.html)。
|
||||
|
||||
- 不使用命令行选项将运行您提供的文件中的代码并返回到命令行。例如,如果我们想以 `lab00.py` 这种方式运行,我们将在终端中写入:
|
||||
|
||||
```
|
||||
python3 lab00.py
|
||||
```
|
||||
|
||||
- <strong>-i</strong>:该 `-i` 选项运行您的 Python 脚本,然后打开交互式会话。在交互式会话中,您逐行运行 Python 代码并获得即时反馈,而不是一次运行整个文件。要退出,请 `exit()` 在解释器提示符中键入。`Ctrl-D` 您还可以在 Linux/Mac 计算机或 Windows 上使用键盘快捷键 `Ctrl-Z Enter`。
|
||||
- 如果您在交互式运行 Python 文件时对其进行编辑,则需要退出并重新启动解释器才能使这些更改生效。
|
||||
- 以下是我们如何以交互方式运行 `lab00.py`:
|
||||
|
||||
```
|
||||
python3 -i lab00.py
|
||||
```
|
||||
|
||||
- <strong>-m doctest</strong>:在特定文件中运行 doctests。Doctests 在函数中被三重引号 ( `"""`) 包围。
|
||||
- 文件中的每个测试都包含 `>>>` 一些 Python 代码和预期的输出(尽管 `>>>` 在 doctest 命令的输出中看不到)。
|
||||
- 要为 运行 doctests `lab00.py`,我们可以运行:
|
||||
|
||||
```
|
||||
python3 -m doctest lab00.py
|
||||
```
|
||||
@@ -1,5 +1,27 @@
|
||||
# CS61A 食用指南
|
||||
|
||||
## 关于 CS61A
|
||||
|
||||
这是 CS 61A Fall 2022 的网站:
|
||||
|
||||
[https://inst.eecs.berkeley.edu/~cs61a/fa22/](https://inst.eecs.berkeley.edu/~cs61a/fa22/)
|
||||
|
||||
在这个目录下的文章上传的 pdf 基本都是英文的,还请做好准备。
|
||||
|
||||
在每个 disc、lab、hw 和 proj 下,都会有相对应的.zip 文件,文件里装的是在学习过程中所需要的代码。
|
||||
|
||||
在文章的最后会附上 sol。
|
||||
|
||||
当然,在没有头绪的时候,你可以选择参考 sol,也可以重新学习视频和教科书,也可以改变做题的顺序。
|
||||
|
||||
ps:哪怕是 cs61a 这样优秀的课程,给出的解决方案里也会有不是那么正确的代码(它并不能处理所有的情况)
|
||||
|
||||
pps:如果你找到了 sol 里不是那么正确的代码,请联系我们,我们将新建一个文档来记录 sol 中这些“错误”的代码
|
||||
|
||||
ppps:当然存在“错误”的代码的概率很小,你发现它们的概率就更小了
|
||||
|
||||
pppps:不只是在 sol 文件中,youtube 上的视频中的代码也可能会出现一些小问题
|
||||
|
||||
## 为什么要学 CS61A?
|
||||
|
||||
简单来说,学校的编程课只能教会你一些最基本的语法和代码逻辑,从学校的课程中,你很难学到一些实用的编程思想 (甚至一些老师自己也讲不明白)。一部分原因当然是老师上课完全没有想过如何渗透这些编程思想;还有一部分原因我认为是课后作业是在过于随意了,PTA 上的课后作业只是用来检测你是否掌握了一些最基础的语法,这样的题目是很难培养学生的编程思想的。
|
||||
@@ -97,7 +119,7 @@ cs61a 绝对是一个挑战,但是我们都希望你学习并且成功,所
|
||||
|
||||
## 在学习过程中,你可以能会遇到的问题和解决方法
|
||||
|
||||
1. 在 CS61A 的学习过程中,你可能会找不到 61A 的每一个 lab、hw、disc、proj 的答案,这是因为 61A 说不断更新并进行授课的,所以每过一个季度 61A 是会进行换季的,所以为了避免这个问题,请尽早将 61A 主页的每一个答案保存下来。如果你已经遇到了这种问题,那么向已经学习了这门课的学长学姐求助是个不错的选择。
|
||||
1. 在 CS61A 的学习过程中,你可能会找不到 61A 的每一个 lab、hw、disc、proj 的答案,这是因为 61A 是不断更新并进行授课的,所以每过一个季度 61A 是会进行换季的,所以为了避免这个问题,请尽早将 61A 主页的每一个答案保存下来。如果你已经遇到了这种问题,那么向已经学习了这门课的学长学姐求助是个不错的选择。
|
||||
2. 如果出现以下情况,这说明你的并没有在测试对象的目录进行测试,最简单解决办法就是在你对应位置的目录进行鼠标右键点击“在终端中打开”进行输入测试。
|
||||
|
||||

|
||||
@@ -1,21 +0,0 @@
|
||||
# 关于 CS61A
|
||||
|
||||
这是 CS 61A Fall 2022 的网站:
|
||||
|
||||
[https://inst.eecs.berkeley.edu/~cs61a/fa22/](https://inst.eecs.berkeley.edu/~cs61a/fa22/)
|
||||
|
||||
在这个目录下的文章上传的 pdf 基本都是英文的,还请做好准备。
|
||||
|
||||
在每个 disc、lab、hw 和 proj 下,都会有相对应的.zip 文件,文件里装的是在学习过程中所需要的代码。
|
||||
|
||||
在文章的最后会附上 sol。
|
||||
|
||||
当然,在没有头绪的时候,你可以选择参考 sol,也可以重新学习视频和教科书,也可以改变做题的顺序。
|
||||
|
||||
ps:哪怕是 cs61a 这样优秀的课程,给出的解决方案里也会有不是那么正确的代码(它并不能处理所有的情况)
|
||||
|
||||
pps:如果你找到了 sol 里不是那么正确的代码,请联系我们,我们将新建一个文档来记录 sol 中这些“错误”的代码
|
||||
|
||||
ppps:当然存在“错误”的代码的概率很小,你发现它们的概率就更小了
|
||||
|
||||
pppps:不只是在 sol 文件中,youtube 上的视频中的代码也可能会出现一些小问题
|
||||
Reference in New Issue
Block a user