-----Python | Day 2-----
-----赋值-----
-----链式赋值赋值-----
链式赋值赋值:同一个对象赋值给多个变量。
>>> x=y=123 # 对象123 赋值 y,然后 123 赋值 x。
-----系列解包赋值-----
系列解包赋值:系列赋值给对应变量(个数一致)。
>>> a,b,c=4,5,6
>>> a,b,c=c,a,b #在c里面我们往往加一个中间值去改顺序。 在python里面直接换。
>>>> print(a,b,c)
(6, 4, 5)
-----常量----
常量:Python 不支持常量 (不想java),无规则限制改变一个其值,所以在逻辑上改常量的值。(起名规则:全部大写,"_" 隔开)
>>> MAX_SPEED=120 #逻辑上不可改
>>> MAX_SPEED=121 #实际上可以改
>>>> print(MAX_SPEED)
121
-----最基本内置数据类型和运算符-----
-----最基本内置数据类型-----
graph LR
A(最基本内置数据类型:每个对象都有类型) --> B(整型 e.g. 10)
A --> C(浮点型(小数) e.g. 10.1)
A --> D(布尔型 e.g. True,False)
A --> E(字符串型 e.g. "a")
-----运算符(整数&浮点数)-----
类型运算符 | 说明 | 示例 | 结果 |
---|---|---|---|
1. | 加法 | 1+2 | 3 |
2. | 减法 | 2-1 | 1 |
3. | 乘法 | 1*2 | 2 |
/ | 浮点数除法 | 1/2 | 0.5 |
// | 整数数除法 | 1/2 | 0 |
% | 模(取余) | 7/3 | 1 |
** | 幂 | 2**2 | 4 |
⚠️ ⚠️⚠️
- 除数为 0 -->异常:
>>> 1/0 #不管什么运算, 只要除数为0 都行。
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
1/0
ZeroDivisionError: integer division or modulo by zero
- divmod()函数同时得到商和余数。(返回元组)
>>> divmod(7,3)
(2, 1)
-----整数-----
除 10 进制 0 1 2 3 4 5 6 7 8 9,还有其他三种进制:
- 0b 或 0B,二进制 0 1
- 0o 或 0O,八进制 0 1 2 3 4 5 6 7
- 0x 或 0X,十六进制0 1 2 3 4 5 6 7 8 9 a b c d e
数 | 2 | 8 | 10 | 16 |
---|---|---|---|---|
0. | 0 | 0 | 0 | 0 |
1. | 1 | 1 | 1 | 1 |
2. | 10 | 2 | 2 | 2 |
3. | 11 | 3 | 3 | 3 |
4. | 100 | 4 | 4 | 4 |
5. | 101 | 5 | 5 | 5 |
6. | 110 | 6 | 6 | 6 |
7. | 111 | 7 | 7 | 7 |
8. | 1000 | 10 | 8 | 8 |
9. | 1001 | 11 | 9 | 9 |
10. | 1010 | 12 | 10 | a |
11. | 1011 | 13 | 11 | b |
12. | 1100 | 14 | 12 | c |
13. | 1101 | 15 | 13 | d |
14. | 1110 | 16 | 14 | e |
15. | 1111 | 17 | 15 | f |
16. | 10000 | 20 | 16 | 10 |
17. | 10001 | 21 | 17 | 11 |
18. | 10010 | 22 | 18 | 12 |
19. | 10011 | 23 | 19 | 13 |
20. | 10100 | 24 | 20 | 14 |
⚠️:这三种进制可以非常方便的进行“位运算”操作。
>>> 0b101
5
>>> 0B101 #大小写都ok
5
>>> 0o10
8
>>> 0xff #15*16+15
255
>>> 0xg #16进 无g
SyntaxError: invalid token
>>> 0xf
15
>>> 0x10
16
-----使用 int()实现类型转换-----
使用 int()实现类型转换:
- 浮点数:小数直接舍去小数点部分。e.g. int(1.7)结果是:1
- 布尔值: True -> 1,False -> 0。 e.g. int(True)结果是: 1
- 字符串: 符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
>>> int("1.1")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.1'
>>> int("1")
1
>>> int("abc")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'
-----自动转型-----
自动转型: 整数和浮点数混合运算–>自动转型成浮点数。e.g. 1+8.0 的结果是 9.0
-----整数可以有多大?-----
Python2: int 是 32 位,可以存储从-2147483648 到 2147483647 的整数。Long 类型是 64 位,可以存储:-2^63 到
2^63-1 之间的数值。
Python3 : int 可以存储任意大小的整数,long 被取消。Python3 中可以做超大数的计算,而无“整数溢出”, 特别适合科学运算。
>>> googol=10**100
>>> googol #google 含义
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----浮点数-----
浮点数(float):浮点数用 a*b10 形式的科学计数法表示,内存中也是按照科学计数法存储。 e.g. 3.14 ->314E-2 or 314e-2
>>> 314e-2
3.14
>>> 314E-2
3.14
-----类型转换和四舍五入-----
float() (just like int()):
- 整数和浮点数混合运算时,表达式结果自动转型成浮点数
- round(value)可以返回四舍五入的值 e.g. round(3.6)->4
⚠️:但不会改变原有值,而是产生新的值
>>> float(1) #int 这个转换不会改变原有对象1的任何性质,而是创造了一个新的对象1.0 with type float and own id.
1.0
>>> float("1") #str :"int"
1.0
>>> float("1.1") #str :"float"
1.1
>>> float("adfggadf") #str
Traceback (most recent call last):
File "<stdin>", line 1, in <mo