修改全部的格式
This commit is contained in:
parent
da6fc9fe97
commit
1acb8ab903
|
@ -1,4 +1,4 @@
|
|||
## 零基础学python编程思维课程简介
|
||||
# 零基础学python编程思维课程简介
|
||||
|
||||
- 课程是由MIT6.00计算机科学和编程导论和笨方法学python结合编写的,为的是帮助零基础的同学更好和更容易学习,因为我是在学习不同课程时碰到很多问题,原因是基础没打好,通过学习这个课程可以清楚了解编程思维、代码规范、防御性编程等,为以后的学习打好基础。
|
||||
- 作为基础的一个课程,不涉及算法,只是基础的python语法和编程思维
|
||||
|
@ -8,9 +8,10 @@
|
|||
|
||||
## 开源贡献
|
||||
|
||||
邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮
|
||||
邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮、胡锐锋
|
||||
|
||||
## 课程内容
|
||||
|
||||
- 学习周期:19天
|
||||
- 任务安排:
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## 零基础学python编程思维课程简介
|
||||
# 零基础学python编程思维课程简介
|
||||
|
||||
- 课程是由MIT6.00计算机科学和编程导论和笨方法学python结合编写的,为的是帮助零基础的同学更好和更容易学习,因为我是在学习不同课程时碰到很多问题,原因是基础没打好,通过学习这个课程可以清楚了解编程思维、代码规范、防御性编程等,为以后的学习打好基础。
|
||||
- 作为基础的一个课程,不涉及算法,只是基础的python语法和编程思维
|
||||
|
@ -8,7 +8,7 @@
|
|||
|
||||
## 开源贡献
|
||||
|
||||
邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮
|
||||
邓林权、沈一、覃嘉俊、马子阳、左凯文、肖桐、张国亮、胡锐锋
|
||||
|
||||
## 课程内容
|
||||
- 学习周期:19天
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# 前言
|
||||
|
||||
  课程设计是由笨方法学python和MIT 6.00课程结合改编而成,作为基础的一个课程,不涉及算法,只是基础的python语法和编程思维。
|
||||
|
||||
  课程的目标是让0基础的同学学习后可以掌握python的基础使用,以及看懂别人写的代码并运用,以便学习更多的课程。
|
||||
|
@ -64,7 +65,6 @@
|
|||
|
||||
  如果你学习了本课程,却还是不知道怎么编程,那也没关系,至少你试过了。你可以说你已经尽过力但成效不佳,但至少你试过了。这也是一件值得你骄傲的事情。
|
||||
|
||||
|
||||
# 1 Python3的使用
|
||||
|
||||
  初学者建议先使用阿里云天池的DSW(Data Science Workshop)进行学习,可以直接在线上进行学习,在学习一段时间后,在本地电脑上安装Python3,建议使用anaconda,已经含有很多python3的库,免去许多安装的烦恼。
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# 2 基础
|
||||
|
||||
  关于基础部分,我会选择Python的主要部分进行讲解,以及提供深入的练习,以及还有很多指令,大家可以自己选择感兴趣或者要用到的进行补充,这部分学习的思想主要是让大家学会自学编程语言。
|
||||
|
||||
## 2.1 实现第一行代码和认识注释
|
||||
|
@ -251,9 +252,3 @@ runoob
|
|||
### 练习1
|
||||
|
||||
  搜索列表的相关知识,看看还有什么操作?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
|
||||
# 2 基础(续)
|
||||
|
||||
## 2.5 字典
|
||||
|
||||
  现在你要学习 Python 中的另一种数据结构——字典(Dictionary)。字典(也叫 dict)是一种和列表类似的数据存储方式。但是不同于列表只能用数字获取数据,字典可以用任何东西来获取。你可以把字典当成是一个存储和组织数据的数据库。
|
||||
|
||||
  让我们比较一下列表和字典的作用。你看,列表可以让你做这些事情:
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
## 2.9 函数
|
||||
# 2 基础(续)
|
||||
|
||||
## 2.9 函数
|
||||
|
||||
  这是一个很大的标题,接下来我要给你介绍一下函数。每一个程序员都要一遍一遍地用到函数,思考它们的作用以及如何使用它们,但是我会给你一些最简单的解释,让你能够快速上手。
|
||||
|
||||
|
|
|
@ -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. **救命! 这个程序是怎么工作的!?** 当你遇到不理解的代码时,不要着急,只要在每行代码下面写下注释,弄清楚这一行是做什么的,就很容易明白。确保你的注释和代码一样简洁。 然后要么画图,要么写一段话来描述代码是如何运行的。这样你就会理解其背后的原理。
|
||||
|
||||
|
|
|
@ -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 编写一个属于自己的小游戏
|
||||
|
||||
  以下是利用面向对象的编程方法写的宝可梦简单文字游戏,可以按照这个模板续写,或者根据自己的爱好更换角色和游戏方法。
|
||||
|
||||
|
|
Loading…
Reference in New Issue