From 1acb8ab903bb957092a8eebc85bf6c9efe5fb6a2 Mon Sep 17 00:00:00 2001 From: Relph1119 Date: Wed, 28 Jun 2023 11:01:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=A8=E9=83=A8=E7=9A=84?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PythonThinking/README.md | 5 +- PythonThinking/docs/README.md | 4 +- .../task1-环境搭建与认识学习方法.md | 2 +- .../task2-数学运算、字符串和文本、列表.md | 7 +- .../task3-字典、元组、布尔类型、读写文件.md | 4 +- PythonThinking/task4-函数.md | 4 +- PythonThinking/task6-FOR、IF以及while.md | 84 +++++++++---------- PythonThinking/task7-面向对象的编程.md | 28 +++---- 8 files changed, 69 insertions(+), 69 deletions(-) diff --git a/PythonThinking/README.md b/PythonThinking/README.md index 3c723dd..c47d68c 100644 --- a/PythonThinking/README.md +++ b/PythonThinking/README.md @@ -1,4 +1,4 @@ -## 零基础学python编程思维课程简介 +# 零基础学python编程思维课程简介 - 课程是由MIT6.00计算机科学和编程导论和笨方法学python结合编写的,为的是帮助零基础的同学更好和更容易学习,因为我是在学习不同课程时碰到很多问题,原因是基础没打好,通过学习这个课程可以清楚了解编程思维、代码规范、防御性编程等,为以后的学习打好基础。 - 作为基础的一个课程,不涉及算法,只是基础的python语法和编程思维 @@ -8,9 +8,10 @@ ## 开源贡献 -邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮 +邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮、胡锐锋 ## 课程内容 + - 学习周期:19天 - 任务安排: diff --git a/PythonThinking/docs/README.md b/PythonThinking/docs/README.md index 3c723dd..ecd241b 100644 --- a/PythonThinking/docs/README.md +++ b/PythonThinking/docs/README.md @@ -1,4 +1,4 @@ -## 零基础学python编程思维课程简介 +# 零基础学python编程思维课程简介 - 课程是由MIT6.00计算机科学和编程导论和笨方法学python结合编写的,为的是帮助零基础的同学更好和更容易学习,因为我是在学习不同课程时碰到很多问题,原因是基础没打好,通过学习这个课程可以清楚了解编程思维、代码规范、防御性编程等,为以后的学习打好基础。 - 作为基础的一个课程,不涉及算法,只是基础的python语法和编程思维 @@ -8,7 +8,7 @@ ## 开源贡献 -邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮 +邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮、胡锐锋 ## 课程内容 - 学习周期:19天 diff --git a/PythonThinking/task1-环境搭建与认识学习方法.md b/PythonThinking/task1-环境搭建与认识学习方法.md index d00e258..03a5139 100644 --- a/PythonThinking/task1-环境搭建与认识学习方法.md +++ b/PythonThinking/task1-环境搭建与认识学习方法.md @@ -1,4 +1,5 @@ # 前言 +   课程设计是由笨方法学python和MIT 6.00课程结合改编而成,作为基础的一个课程,不涉及算法,只是基础的python语法和编程思维。   课程的目标是让0基础的同学学习后可以掌握python的基础使用,以及看懂别人写的代码并运用,以便学习更多的课程。 @@ -64,7 +65,6 @@   如果你学习了本课程,却还是不知道怎么编程,那也没关系,至少你试过了。你可以说你已经尽过力但成效不佳,但至少你试过了。这也是一件值得你骄傲的事情。 - # 1 Python3的使用   初学者建议先使用阿里云天池的DSW(Data Science Workshop)进行学习,可以直接在线上进行学习,在学习一段时间后,在本地电脑上安装Python3,建议使用anaconda,已经含有很多python3的库,免去许多安装的烦恼。 diff --git a/PythonThinking/task2-数学运算、字符串和文本、列表.md b/PythonThinking/task2-数学运算、字符串和文本、列表.md index a0f826d..a99c88f 100644 --- a/PythonThinking/task2-数学运算、字符串和文本、列表.md +++ b/PythonThinking/task2-数学运算、字符串和文本、列表.md @@ -1,4 +1,5 @@ # 2 基础 +   关于基础部分,我会选择Python的主要部分进行讲解,以及提供深入的练习,以及还有很多指令,大家可以自己选择感兴趣或者要用到的进行补充,这部分学习的思想主要是让大家学会自学编程语言。 ## 2.1 实现第一行代码和认识注释 @@ -251,9 +252,3 @@ runoob ### 练习1   搜索列表的相关知识,看看还有什么操作? - - - - - - diff --git a/PythonThinking/task3-字典、元组、布尔类型、读写文件.md b/PythonThinking/task3-字典、元组、布尔类型、读写文件.md index 4ebe6d5..cb1dc92 100644 --- a/PythonThinking/task3-字典、元组、布尔类型、读写文件.md +++ b/PythonThinking/task3-字典、元组、布尔类型、读写文件.md @@ -1,5 +1,7 @@ - +# 2 基础(续) + ## 2.5 字典 +   现在你要学习 Python 中的另一种数据结构——字典(Dictionary)。字典(也叫 dict)是一种和列表类似的数据存储方式。但是不同于列表只能用数字获取数据,字典可以用任何东西来获取。你可以把字典当成是一个存储和组织数据的数据库。   让我们比较一下列表和字典的作用。你看,列表可以让你做这些事情: diff --git a/PythonThinking/task4-函数.md b/PythonThinking/task4-函数.md index ea7d737..ddd8129 100644 --- a/PythonThinking/task4-函数.md +++ b/PythonThinking/task4-函数.md @@ -1,4 +1,6 @@ -## 2.9 函数 +# 2 基础(续) + +## 2.9 函数   这是一个很大的标题,接下来我要给你介绍一下函数。每一个程序员都要一遍一遍地用到函数,思考它们的作用以及如何使用它们,但是我会给你一些最简单的解释,让你能够快速上手。 diff --git a/PythonThinking/task6-FOR、IF以及while.md b/PythonThinking/task6-FOR、IF以及while.md index 341cda6..177f3ed 100644 --- a/PythonThinking/task6-FOR、IF以及while.md +++ b/PythonThinking/task6-FOR、IF以及while.md @@ -1,8 +1,8 @@ -## 4 FOR、IF以及while +# 4 FOR、IF以及while -### 4.1 IF语句 +## 4.1 IF语句 -#### 4.1.1 IF语句的使用 +### 4.1.1 IF语句的使用 ```{code-block} python :linenos: @@ -48,35 +48,35 @@ People are less than or equal to dogs. People are dogs. ``` -##### 附加练习 +#### 附加练习 在附加练习中,试着猜猜`if`语句是什么以及它是干什么的。在继续进行下个练习之前,试着用自己的话回答以下这些问题: -###### 练习1 +##### 练习1   你认为`if`对它下面的代码起什么作用? -###### 练习2 +##### 练习2   为什么`if`下面的代码要缩进 4 个空格? -###### 练习3 +##### 练习3   如果没有缩进会发生什么? -###### 练习4 +##### 练习4   你能把一些布尔表达式放进`if`语句吗?试试看。 -###### 练习5 +##### 练习5   如果你改变`people`、`cats`和`dogs`的初始值会发生什么? -##### 常见问题 +#### 常见问题   `+=`是什么意思? `x += 1`就相当于`x = x + 1`,但是输入的内容更少。你可以把它叫做“累加”(increment by)运算符。之后你还会学到`-=`这样类似的表达。 -#### 4.1.2. Else 和 IF 使用 +### 4.1.2. Else 和 IF 使用   在上个练习中你学到了一些`if`语句,思考了它的含义和作用。在你学习更多内容之前,我会解释一下上个附加练习中的问题。首先确定你做了那些练习。 @@ -138,29 +138,29 @@ Maybe we could take the trucks. Alright, let's just take the trucks. ``` -##### 附加练习 +#### 附加练习 -###### 练习1 +##### 练习1   试着猜猜`elif`和`else`的作用是什么。 -###### 练习2 +##### 练习2   改变`cars`、`people`和`trucks`的数值,然后追溯每一个`if`语句,看看什么会被打印出来。 -###### 练习3 +##### 练习3   试试一些更复杂的布尔表达式,比如`cars > people`或者`trucks < cars`。 -###### 练习4 +##### 练习4   在每一行上面加上注释。 -##### 常见问题 +#### 常见问题   如果多个`elif`块都是`True`会发生什么? Python 从顶部开始,然后运行第一个是`True`的代码块,也就是说,它只会运行第一个。 -#### 4.1.3 IF嵌套使用 +### 4.1.3 IF嵌套使用   前面主要学习了调用函数、打印东西,但是这些基本都是直线运行下来的。你的脚本从上面开始运行,然后到底部结束。如果你用了一个函数,你可以随后再运行它,但是仍然不会有分叉需要你做决定的情况。现在你学习了`if`、`else`以及`elif`,你就可以让脚本来做决定了。 @@ -213,7 +213,7 @@ else:   确保你理解了在`if`语句中嵌套`if`语句的理念。可以通过做附加练习来真正掌握它。 -##### 你会看到 +#### 你会看到   这是我玩这个冒险小游戏的结果,我可能玩得没那么好。 @@ -229,11 +229,11 @@ What do you do? The bear eats your legs off. Good job! ``` -##### 附加练习 +#### 附加练习   给这个游戏加一些新内容,同时改变用户可以做的决定。尽可能地扩展这个游戏,直到它变得很搞笑。写一个完全不同的新游戏。可能你不喜欢我的这个,你可以做一个你自己的。 -##### 常见问题 +#### 常见问题 1. **我能用一系列的`if`语句来代替`elif`吗?** 在某些情况下可以,但是取决于每个`if/else`是怎么写的。如果这样的话还意味着 Python 将会检查每一个`if-else`组合,而不是像`if-elif-else`组合那样只会检查第一个是`false`的。你可以多试几次,感受一下区别。 @@ -241,7 +241,7 @@ The bear eats your legs off. Good job! 3. **如果我想在`if-elif-else`代码块中放更多的选择怎么办?** 为每种可能的选择增加更多的`elif`块。 -### 4.2 FOR语句 +## 4.2 FOR语句 ```{code-block} python :linenos: @@ -308,21 +308,21 @@ Element was: 3 Element was: 4 Element was: 5 ``` -##### 附加练习 +#### 附加练习 -###### 练习1 +##### 练习1   看看你是如何使用`range`的。查阅上面的`range`函数并理解掌握。 -###### 练习2 +##### 练习2   你能在第 22 行不使用`for-loop`,而是直接把`range(0, 6)`赋给`elements`吗? -###### 练习3 +##### 练习3   找到 Python 文档关于列表的部分,然后读一读。看看除了`append`,你还能对列表做哪些操作? -##### 常见问题 +#### 常见问题 1. **如何创建一个二维列表?** 可以用这种列表中的列表:`[[1,2,3],[4,5,6]]` @@ -335,7 +335,7 @@ Element was: 5 5. **`element.append()`的作用是什么?** 它只是把东西追加到列表的末尾。打开 Python shell 然后创建一个新列表。任何时候当你遇到类似的用法,试着多玩几次,去体会它们的作用。 -### 4.3 while语句 +## 4.3 while语句   现在我们来看一个新的循环:`while-loop`。只要一个布尔表达式是`True`,`while-loop`就会一直执行它下面的代码块。 @@ -405,37 +405,37 @@ The numbers: 5 ``` -##### 附加练习 +#### 附加练习 -###### 练习1 +##### 练习1   把这个`while-loop`转换成一个你可以调用的函数,然后用一个变量替代`i < 6`里面的`6`。 -###### 练习2 +##### 练习2   用这个函数重新写一下这个脚本,试试不同的数值。 -###### 练习3 +##### 练习3   再增加一个变量给这个函数的参数,然后改变第 8 行的`+1`,让它增加的值与之前不同。 -###### 练习4 +##### 练习4   用这个函数重新写这个脚本,看看会产生什么样的效果。 -###### 练习5 +##### 练习5   用`for-loop`和`range`写这个脚本。你还需要中间的增加值吗?如果不去掉这个增加值会发生什么?   任何时候你在运行程序的时候它失控了,只用按下 CTRL-C ,程序就会终止。 -##### 常见问题 +#### 常见问题 1. **`for-loop`和`while-loop`的区别是什么?** `for-loop`只能迭代(循环)一些东西的集合,而`while-loop`能够迭代(循环)任何类型的东西。不过,`while-loop`很难用对,而你通常能够用`for-loop`完成很多事情。 2. **循环好难,我应该如何理解它们?** 人们不理解循环的主要原因是他们跟不上代码的运行。当一个循环运行的时候,它会过一遍代码块,到结尾之后再跳到顶部。为了直观表现这个过程,你可以用`print`打印出循环的整个过程,把`print`行写在循环的前面、顶部、中间、结尾。研究一下输出的内容,试着理解它是如何运行的。 -### 4.4 分支和函数 +## 4.4 分支和函数   目前为止你已经了解了`if`语句,函数以及列表。现在是时候深入学习一下了。照例输入如下代码,看看你能否明白程序在做什么。 @@ -540,27 +540,27 @@ You greedy bastard! Good job! ##### 附加练习 -###### 练习1 +##### 练习1   画一个这个游戏的流程图,并指出它是如何运转的。 -###### 练习2 +##### 练习2   修正你的错误,包括拼写和语法错误。 -###### 练习3 +##### 练习3   为你不理解的函数写上注释。 -###### 练习4 +##### 练习4   为游戏增加一些功能,同时使代码更加简化。 -###### 练习5 +##### 练习5   这个`gold_room`让你输入数字的方式有点奇怪。这样做有哪些`bug`?你能改善我的代码吗?可以查查看`int()`的相关知识。 -##### 常见问题 +#### 常见问题 1. **救命! 这个程序是怎么工作的!?** 当你遇到不理解的代码时,不要着急,只要在每行代码下面写下注释,弄清楚这一行是做什么的,就很容易明白。确保你的注释和代码一样简洁。 然后要么画图,要么写一段话来描述代码是如何运行的。这样你就会理解其背后的原理。 diff --git a/PythonThinking/task7-面向对象的编程.md b/PythonThinking/task7-面向对象的编程.md index a404dc5..ade34d2 100644 --- a/PythonThinking/task7-面向对象的编程.md +++ b/PythonThinking/task7-面向对象的编程.md @@ -1,8 +1,8 @@ -## 5 面向对象的编程 +# 5 面向对象的编程   Python 是一门“面向对象的编程语言”(Object Oriented Programming)。这是指 Python 中有一个叫做“类(class)”的结构,能够让你用一种特定的方式结构化你的软件。通过使用类,你可以让你的程序保持连贯性,使用起来更清晰。至少理论上是这样。 -### 5.1 类的例子 +## 5.1 类的例子 ```{code-block} python :linenos: @@ -39,33 +39,33 @@ They rally around tha family With pockets full of shells ``` -#### 附加练习 +### 附加练习 -##### 练习1 +#### 练习1   用这个方法再写一些歌,确保你明白你正在用字符列表来传歌词。 -##### 练习2 +#### 练习2   把歌词放在一个单独的变量里,然后把这个变量放在类里面来使用。 -##### 练习3 +#### 练习3   如果你能搞定这些,可以用它来做更多的事情。要是你现在没什么想法也别担心,就试试看会发生什么。然后把它们掰开、揉碎、反复研究。 -##### 练习4 +#### 练习4   在网上搜搜“面向对象的编程”,然后填满你的大脑。别担心你看不懂,因为几乎一半的东西我也看不懂。 -#### 常见问题 +### 常见问题   **为什么我在类下面用`__init__`函数或者其他函数的时候要用`self` ?** 如果你不用`self`,那么像`cheese = 'Frank'`这样的代码就会很含糊,计算机不知道你是指实例的`cheese`属性还是一个叫做`cheese`的局部变量。而用`self.cheese = 'Frank'`的话就会很清晰,你是指实例的属性`self.cheese`。 -### 5.2 学着去说面向对象 +## 5.2 学着去说面向对象   在这个练习中,我要教你如何去说“面向对象”。我所做的就是给你一些你需要了解的词和定义。然后我会给出一些需要填空的句子让你去理解。最后,你要完成一个大练习,从而在大脑中巩固这些句子。 -#### 词汇训练 +### 词汇训练 (注:为了方便理解,定义保留英文原文。) - 类(class) :告诉 Python 创建一个新类型的东西(Tell Python to make a new type of thing)。 @@ -81,7 +81,7 @@ With pockets full of shells   花点时间为这些术语做一些闪词卡(flash cards)并记住它们,虽然在你完成这个练习之前单纯的记忆没有任何意义,但你必须要先了解这些基础的词汇。 -#### 短语训练 +### 短语训练   接下来是一些 Python 代码片段以及右边的解释。 @@ -116,7 +116,7 @@ With pockets full of shells   同样地,把这些短语写到一些闪词卡上,然后记一记。把 Python 代码片段放在正面,解释的句子放在背面,你必须每次都正确说出每一个短语的意思。不是说得类似就行,而是要一模一样。 -#### 综合训练 +### 综合训练   最后一项准备工作是把词汇训练和短语训练结合在一起,以下是训练内容: @@ -125,7 +125,7 @@ With pockets full of shells 3. 练习记忆这些词汇卡片。 4. 坚持练习,要是你感到有些累,就休息一下再继续。 -#### 读更多代码 +### 读更多代码   你现在需要继续读更多的代码,并在这些代码中复习你之前学过的短语。试着找到尽可能多的包含类的文件,然后跟着如下要求去做: @@ -136,7 +136,7 @@ With pockets full of shells   这些练习的目的是过一遍真实的代码,并试着把你学过的短语和它们的用法匹配和关联起来。如果你做足了训练,你会开始看到这些匹配模式(match patterns)呼之欲出,而不再是一些你不明白的空格或字符。 -### 5.3 编写一个属于自己的小游戏 +## 5.3 编写一个属于自己的小游戏   以下是利用面向对象的编程方法写的宝可梦简单文字游戏,可以按照这个模板续写,或者根据自己的爱好更换角色和游戏方法。