Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions Day01-20/02.第一个Python程序.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,16 @@ Visual Studio Code 是由微软开发能够在 Windows、 Linux 和 macOS 等操
按照行业惯例,我们学习任何一门编程语言写的第一个程序都是输出`hello, world`,因为这段代码是伟大的丹尼斯·里奇(C 语言之父,和肯·汤普森一起开发了 Unix 操作系统)和布莱恩·柯尼汉(awk 语言的发明者)在他们的不朽著作《*The C Programming Language*》中写的第一段代码,下面是对应的 Python 语言的版本。

```python
print('hello, world')
print('Hello, world')
```

> **注意**:上面代码中的圆括号、单引号都是在英文输入法状态下输入的,如果不小心写成了中文的圆括号或单引号,运行代码时会出现`SyntaxError: invalid character '(' (U+FF08)`或`SyntaxError: invalid character '‘' (U+2018)`这样的错误提示。

上面的代码只有一个语句,在这个语句中,我们用到了一个名为`print`的函数,它可以帮助我们输出指定的内容;`print`函数圆括号中的`'hello, world'`是一个字符串,它代表了一段文本内容;在 Python 语言中,我们可以用单引号或双引号来表示一个字符串。不同于 C、C++ 或 Java 这样的编程语言,Python 代码中的语句不需要用分号来表示结束,也就是说,如果我们想再写一条语句,只需要回车换行即可,代码如下所示。此外,Python 代码也不需要通过编写名为`main`的入口函数来使其运行,提供入口函数是编写可执行的 C、C++ 或 Java 代码必须要做的事情,这一点很多程序员都不陌生,但是在 Python 语言中它并不是必要的。

```python
print('hello, world')
print('goodbye, world')
print('Hello, world!')
print('Goodbye, world!')
```

如果不使用 PyCharm 这样的集成开发环境,我们也可以直接调用 Python 解释器来运行 Python 程序。我们可以将上面的代码保存成一个名为`example01.py`的文件,对于Windows 系统,我们假设该文件在`C:\code`目录下,我们打开“命令提示符”或“PowerShell”并输入下面的命令就可以运行它。
Expand Down Expand Up @@ -136,12 +136,12 @@ Python 中有两种形式的注释:

```python
"""
第一个Python程序 - hello, world
第一个Python程序 - Hello, world!

Version: 1.0
Author: 骆昊
"""
# print('hello, world')
# print('Hello, world!')
print("你好,世界!")
```

Expand Down
30 changes: 29 additions & 1 deletion Day01-20/03.Python语言中的变量.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,16 @@

在开始系统的学习 Python 编程之前,我们先来科普一些计算机的基础知识。计算机的硬件系统通常由五大部件构成,包括:**运算器**、**控制器**、**存储器**、**输入设备**和**输出设备**。其中,运算器和控制器放在一起就是我们常说的**中央处理器**(CPU),它的功能是执行各种运算和控制指令。刚才我们提到过,程序是指令的集合,写程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情。存储器可以分为**内部存储器**和**外部存储器**,前者就是我们常说的内存,它是中央处理器可以直接寻址的存储空间,程序在执行的过程中,对应的数据和指令需要加载到内存中。输入设备和输出设备经常被统称为 I/O 设备,键盘、鼠标、麦克风、摄像头是典型的输入设备,而显示器、打印机、扬声器等则是典型的输出设备。目前,我们使用的计算机基本大多是遵循“冯·诺依曼体系结构”的计算机,这种计算机有两个关键点:一是**将存储器与中央处理器分开**;二是**将数据以二进制方式编码**。

二进制是一种“逢二进一”的计数法,跟人类使用的“逢十进一”的计数法本质是一样的。人类因为有十根手指,所以使用了十进制计数法,在计数时十根手指用完之后,就只能用进位的方式来表示更大的数值。当然凡事都有例外,玛雅人可能是因为长年光着脚的原因,把脚趾头也都用上了,于是他们使用了二十进制的计数法。基于这样的计数方式,玛雅人使用的历法跟我们平常使用的历法就产生了差异。按照玛雅人的历法,2012 年是上一个所谓的“太阳纪”的最后一年,而 2013 年则是新的“太阳纪”的开始。后来这件事情还被以讹传讹的方式误传为“2012 年是玛雅人预言的世界末日”的荒诞说法。今天有很多人猜测,玛雅文明之所以发展缓慢跟使用了二十进制是有关系的。对于计算机来说,二进制在物理器件上最容易实现的,因为可以用高电压表示 1,用低电压表示 0。不是所有写程序的人都需要熟悉二进制,熟悉十进制与二进制、八进制、十六进制的转换,大多数时候我们即便不了解这些知识也能写程序。但是,我们必须知道,计算机是使用二进制计数的,不管什么样的数据,到了计算机内存中都是以二进制形态存在的。
二进制是一种“逢二进一”的计数法,跟人类使用的“逢十进一”的计数法本质是一样的。人类因为有十根手指,所以使用了十进制计数法,在计数时十根手指用完之后,就只能用进位的方式来表示更大的数值。对于计算机来说,二进制在物理器件上最容易实现的,因为可以用高电压表示 1,用低电压表示 0。不是所有写程序的人都需要熟悉二进制,熟悉十进制与二进制、八进制、十六进制的转换,大多数时候我们即便不了解这些知识也能写程序。但是,我们必须知道,计算机是使用二进制计数的,不管什么样的数据,到了计算机内存中都是以二进制形态存在的。

### 前置知识:计算机如何工作

| 组件 | 功能 | 类比 |
| **CPU**(运算器+控制器) | 执行指令和运算 | 大脑 |
| **内存**(内部存储器) | 临时存放运行中的程序和数据 | 短期记忆 |
| **硬盘**(外部存储器) | 长期保存文件 | 长期记忆 |
| **输入/输出设备** | 与外界交互(键盘、屏幕等 | 感官 |


> **说明**:关于二进制计数法以及它与其他进制如何相互转换,大家可以翻翻名为《计算机导论》或《计算机文化》的书,都能找到相应的知识,此处就不再进行赘述了,不清楚的读者可以自行研究。

Expand Down Expand Up @@ -49,6 +58,19 @@

惯例2和惯例3大家暂时不用管,讲到后面自然会明白的。当然,作为一个专业的程序员,给变量命名时做到**见名知意**也是非常重要,这彰显了一个程序员的专业气质,很多开发岗位的面试也非常看重这一点。

### 命名规则
必须遵守(否则报错)
| 规则 | 正确 | 错误 |
| 只能含字母、数字、下划线 | `user_name` | `user-name` |
| 不能以数字开头 | `name1` | `1name` |
| 区分大小写 | `Name` ≠ `name` | - |
| 避开关键字 | `my_class` | `class` |

建议遵守(专业规范)
小写+下划线:student_name(而非StudentName)
见名知意:score 优于 s 或 x1
保护变量:_temp(单下划线开头,表示"内部使用")

### 变量的使用

下面通过例子来说明变量的类型和变量的使用。
Expand Down Expand Up @@ -123,6 +145,12 @@ print(int(g)) # bool类型的True转成int,输出1
print(chr(a)) # int类型的100转成str,输出'd'
print(ord('d')) # str类型的'd'转成int,输出100
```
### 常见陷阱

int("123.45") # ❌ 报错!先float()再int()
int(123.45) # ✓ 123(直接截断小数,非四舍五入)
bool("") # False(空字符串)
bool("False") # True(非空即真!)

> **说明**:`str`类型转`int`类型时可以通过`base`参数来指定进制,可以将字符串视为对应进制的整数进行转换。`str`类型转成`bool`类型时,只要字符串有内容,不是`''`或`""`,对应的布尔值都是`True`。`bool`类型转`int`类型时,`True`会变成`1`,`False`会变成`0`。在 ASCII 字符集和 Unicode 字符集中, 字符`'d'`对应的编码都是`100`。

Expand Down
1 change: 1 addition & 0 deletions test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"�����޸�"