diff --git a/Python-Language/01. 变量、运算符与数据类型.md b/Python-Language/01. 变量、运算符与数据类型.md
index 16c1a05..2641a6c 100644
--- a/Python-Language/01. 变量、运算符与数据类型.md
+++ b/Python-Language/01. 变量、运算符与数据类型.md
@@ -1,5 +1,15 @@
+
+
+[toc]
+
+---
+
+【关键词】:print();
+
+---
# 变量、运算符与数据类型
+
## 1. 注释
- 在 Python 中,`#` 表示注释,作用于整行。
@@ -44,19 +54,22 @@ print("hello china")
操作符 | 名称 | 示例
:---:|:---:|:---:
-`+` | 加 | `1+1`
-`-` | 减 | `2-1`
-`*` | 乘 | `3*4`
-`/` | 除 | `3/4`
-`//`| 整除(地板除)| `3//4`
-`%` | 取余| `3%4`
-`**`| 幂 | `2**3`
+`+` | 加 | `1 + 1`
+`-` | 减 | `2 - 1`
+`*` | 乘 | `3 * 4`
+`/` | 除 | `3 / 4`
+`//`| 整除(地板除)| `3 // 4`
+`%` | 取余| `3 % 4`
+`**`| 幂 | `2 ** 3`
【例子】
```python
-print(3 % 2) # 1
-print(11 / 3) # 3.6666666666666665
-print(11 // 3) # 3
+print(1 + 1) # 2
+print(2 - 1) # 1
+print(3 * 4) # 12
+print(3 / 4) # 0.75
+print(3 // 4) # 0
+print(3 % 4) # 3
print(2 ** 3) # 8
```
@@ -65,109 +78,65 @@ print(2 ** 3) # 8
操作符 | 名称 | 示例
:---:|:---:|:---:
-`>` |大于| `2>1`
-`>=`|大于等于| `4>=2`
-`<` |小于| `1>2`
-`<=`|小于等于| `2<=5`
-`==`|等于| `3==3`
-`!=`|不等于| `3!=5`
+`>` |大于| `2 > 1`
+`>=`|大于等于| `2 >= 4`
+`<` |小于| `1 < 2`
+`<=`|小于等于| `5 <= 2`
+`==`|等于| `3 == 4`
+`!=`|不等于| `3 != 5`
【例子】
```python
-print(1 > 3) # False
-print(2 < 3) # True
-print(1 == 1) # True
-print(1 != 1) # False
+print(2 > 1) # True
+print(2 >= 4) # False
+print(1 < 2) # True
+print(5 <= 2) # False
+print(3 == 4) # False
+print(3 != 5) # True
```
逻辑运算符
操作符 | 名称 | 示例
:---:|:---:|:---:
-`and`|与| `(2>1) and (3>7)`
-`or` |或| `(1>3) or (2<9)`
-`not`|非| `not(2>1)`
+`and`|与| `(3 > 2) and (3 < 5)`
+`or` |或| `(1 > 3) or (9 < 2)`
+`not`|非| `not (2 > 1)`
【例子】
```python
print((3 > 2) and (3 < 5)) # True
-print((1 > 3) and (2 < 1)) # False
-print((1 > 3) or (3 < 5)) # True
+print((1 > 3) or (9 < 2)) # False
+print(not (2 > 1)) # False
```
位运算符
操作符 | 名称 | 示例
:---:|:---:|:---:
-`~` |按位取反|~4
-`&` |按位与 |4 & 5
+`~` |按位取反|`~4`
+`&` |按位与 |`4 & 5`
`|` |按位或 |`4 | 5`
-`^` |按位异或|4 ^ 5
-`<<`|左移 |4 << 2,表示整数 4 按位左移 2 位
-`>>`|右移 |4 >> 2,表示整数 4 按位右移 2 位
-
-按位非操作 ~
+`^` |按位异或|`4 ^ 5`
+`<<`|左移 |`4 << 2`
+`>>`|右移 |`4 >> 2`
+【例子】有关二进制的运算,参见“位运算”部分的讲解。
```python
-~ 1 = 0
-~ 0 = 1
+print(bin(4)) # 0b100
+print(bin(5)) # 0b101
+print(bin(~4), ~4) # -0b101 -5
+print(bin(4 & 5), 4 & 5) # 0b100 4
+print(bin(4 | 5), 4 | 5) # 0b101 5
+print(bin(4 ^ 5), 4 ^ 5) # 0b1 1
+print(bin(4 << 2), 4 << 2) # 0b10000 16
+print(bin(4 >> 2), 4 >> 2) # 0b1 1
```
-按位与操作 &
-
-```python
-1 & 1 = 1
-1 & 0 = 0
-0 & 1 = 0
-0 & 0 = 0
-```
-
-按位或操作 |
-
-```python
-1 | 1 = 1
-1 | 0 = 1
-0 | 1 = 1
-0 | 0 = 0
-```
-
-按位异或操作 ^
-
-```python
-1 ^ 1 = 0
-1 ^ 0 = 1
-0 ^ 1 = 1
-0 ^ 0 = 0
-```
-
-
-
-
-按位左移操作 <<
-
-【例子】`num << i` 将`num`的二进制表示向左移动`i`位所得的值。
-```c
-00 00 10 11 -> 11
-11 << 3
----
-01 01 10 00 -> 88
-```
-
-按位右移操作 >>
-
-【例子】`num >> i` 将`num`的二进制表示向右移动`i`位所得的值。
-```c
-00 00 10 11 -> 11
-11 >> 2
----
-00 00 00 10 -> 2
-```
-
三元运算符
-
-
+【例子】
```python
x, y = 4, 5
if x < y:
@@ -178,7 +147,7 @@ else:
print(small) # 4
```
-有了这个三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作。
+有了这个三元操作符的条件表达式,你可以使用一条语句来完成以上的条件判断和赋值操作。
【例子】
```python
@@ -190,14 +159,15 @@ print(small) # 4
其他运算符
操作符 | 名称 | 示例
:---:|:---:|:---:
-`is`|是|'hello' is 'hello'
-`not is`|不是|3 is not 5
-`in`|存在| 5 in [1, 2, 3, 4, 5]
-`not in`|不存在|2 not in [1, 2, 3, 4, 5]
+`in`|存在| `'A' in ['A', 'B', 'C']`
+`not in`|不存在|`'h' not in ['A', 'B', 'C']`
+`is`|是| `"hello" is "hello"`
+`not is`|不是|`"hello" is not "hello"`
+
【例子】
```python
-letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
+letters = ['A', 'B', 'C']
if 'A' in letters:
print('A' + ' exists')
if 'h' not in letters:
@@ -207,46 +177,45 @@ if 'h' not in letters:
# h not exists
```
-【例子】比较的两个变量均指向不可变类型
+【例子】比较的两个变量均指向不可变类型。
```python
a = "hello"
b = "hello"
-print(a is b, a == b)
-# True True
+print(a is b, a == b) # True True
+print(a is not b, a != b) # False False
```
-【例子】比较的两个变量均指向可变类型
+【例子】比较的两个变量均指向可变类型。
```python
a = ["hello"]
b = ["hello"]
-print(a is b, a == b)
-# False True
+print(a is b, a == b) # False True
+print(a is not b, a != b) # True False
```
注意:
- is, is not 对比的是两个变量的内存地址
- ==, != 对比的是两个变量的值
-
-即:
-- 假如比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
-- 假如对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
+- 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
+- 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
运算符的优先级
-- 一元运算符优于二元运算符。如正负号。
-- 先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于 (1 << (3 + 2)) & 7
-- 逻辑运算最后结合
+- 一元运算符优于二元运算符。例如`3 ** -2`等价于`3 ** (-2)`。
+- 先算术运算,后移位运算,最后位运算。例如 `1 << 3 + 2 & 7`等价于 `1 << (3 + 2)) & 7`。
+- 逻辑运算最后结合。例如`3 < 4 and 4 < 5`等价于`(3 < 4) and (4 < 5)`。
【例子】
```python
print(-3 ** 2) # -9
print(3 ** -2) # 0.1111111111111111
+print(1 << 3 + 2 & 7) # 0
print(-3 * 2 + 5 / -2 - 4) # -12.5
print(3 < 4 and 4 < 5) # True
```
----
+
## 3. 变量和赋值
- 在使用变量之前,需要对其先赋值。
@@ -255,8 +224,6 @@ print(3 < 4 and 4 < 5) # True
【例子】
```python
-teacher = "小马的程序人生"
-print(teacher) # 小马的程序人生
teacher = "老马的程序人生"
print(teacher) # 老马的程序人生
```
@@ -273,35 +240,35 @@ print(third) # 5
```python
myTeacher = "老马的程序人生"
yourTeacher = "小马的程序人生"
-ourTeacher = myTeacher + yourTeacher
-print(ourTeacher) # 老马的程序人生小马的程序人生
+ourTeacher = myTeacher + ',' + yourTeacher
+print(ourTeacher) # 老马的程序人生,小马的程序人生
```
----
+
## 4. 数据类型与转换
类型 | 名称 | 示例
:---:|:---:|:---:
-int | 整型 | -876, 10
-float | 浮点型| 3.149, 11.11
-bool | 布尔型 | True, False
+int | 整型 ``| `-876, 10`
+float | 浮点型``| `3.149, 11.11`
+bool | 布尔型`` | `True, False`
-整型``
+整型
-【例子】
+【例子】通过 `print()` 可看出 `a` 的值,以及类 (class) 是`int`。
```python
a = 1031
print(a, type(a))
-
# 1031
```
-通过 `print` 可看出 `a` 的值,以及类 (class) 是`int`。
+
Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。
+【例子】
```python
b = dir(int)
print(b)
@@ -322,7 +289,7 @@ print(b)
# 'numerator', 'real', 'to_bytes']
```
-对它们有个大概印象就可以了,具体怎么用,需要哪些参数 (argument),还需要查文档。看个`bit_length`的例子。
+对它们有个大概印象就可以了,具体怎么用,需要哪些参数 (argument),还需要查文档。看个`bit_length()`的例子。
【例子】找到一个整数的二进制表示,再返回其长度。
@@ -333,7 +300,7 @@ print(a.bit_length()) # 11
```
-浮点型``
+浮点型
【例子】
```python
@@ -355,15 +322,19 @@ import decimal
from decimal import Decimal
```
-Python 里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到的`dir(decimal)` 来看其属性和方法。比如 `getcontext()` 显示了 `Decimal` 对象的默认精度值是 28 位 (`prec=28`),展示如下:
+Python 里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到的`dir(decimal)` 来看其属性和方法。
+
+【例子】`getcontext()` 显示了 `Decimal` 对象的默认精度值是 28 位 (`prec=28`)。
```python
a = decimal.getcontext()
print(a)
-# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
+# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999,
+# capitals=1, clamp=0, flags=[],
+# traps=[InvalidOperation, DivisionByZero, Overflow])
```
-让我们看看 1/3 的保留 28 位长什么样?
+
```python
b = Decimal(1) / Decimal(3)
@@ -372,7 +343,7 @@ print(b)
# 0.3333333333333333333333333333
```
-那保留 4 位呢?用 `getcontext().prec` 来调整精度。
+【例子】使 1/3 保留 4 位,用 `getcontext().prec` 来调整精度。
```python
decimal.getcontext().prec = 4
@@ -382,9 +353,9 @@ print(c)
# 0.3333
```
-布尔型``
+布尔型
-布尔 (boolean) 型变量只能取两个值,`True` 和 `False`。当把布尔变量用在数字运算中,用 `1` 和 `0` 代表 `True` 和 `False`。
+布尔 (boolean) 型变量只能取两个值,`True` 和 `False`。当把布尔型变量用在数字运算中,用 `1` 和 `0` 代表 `True` 和 `False`。
【例子】
```python
@@ -398,7 +369,7 @@ print(True * False) # 0
除了直接给变量赋值 `True` 和 `False`,还可以用 `bool(X)` 来创建变量,其中 `X` 可以是
- 基本类型:整型、浮点型、布尔型
-- 容器类型:字符、元组、列表、字典和集合
+- 容器类型:字符串、元组、列表、字典和集合
【例子】`bool` 作用在基本类型变量:`X` 只要不是整型 `0`、浮点型 `0.0`,`bool(X)` 就是 `True`,其余就是 `False`。
```python
@@ -485,7 +456,7 @@ print(str(10 + 10)) # 20
print(str(10.1 + 5.2)) # 15.3
```
----
+
## 5. print() 函数
```python