基本运算符和流程控制
序列(列表、元祖、字符串)都能用操作符(比较`>`、连接`+`、重复`*`、复合赋值`*=`、成员`in`)以及 切片
for-else、while-else 当循环条件不成立而自然结束时,会执行else里的代码
python的位运算 | & << >>
+ -的优先级高于-= +=
a += 2 等同于 a = a + 2
float运算陷阱 0.1 + 0.2 == 0.30000000000000004
or有真为真,and有假必假 / **and找假的,or找真的** (10 and 0) or ('' and 0) 结果为 ''
res = x if x >y else y
约定俗成,全部大写的变量为常量 比如PI=3.1415
链式赋值 x=y=z=10
交叉赋值 x=10 y=20 x,y = y,x
解压赋值
nums=[1,2,3]
x,y,z = nums
m,*_ = nums m为1
*_,p = nums n为3
x,*y = "hello" y为['e', 'l', 'l', 'o']
进制转换
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 基本运算符之数学运算
res = 3==3,5
# res -- (True,5)3<5>2
# True 相当于 x=5 3<x>21<2<3
#Trueint(True)
# 1int(False)
# 0False None 0 “” {}
python的 位运算符 | & << >>
# 按位或运算符:只要对应的二个二进制位有一个为1时,结果位就为1 3|5 # 7 # 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 3&6 # 2 ''' 0011 0011 0101 0110 ---- ---- 0111 0010 ''' 3 << 2 # 3*(2^2) = 12 65 >> 1 # 65*(2^-1) = 32 注意:它向下取整了!
1
2
3
4
5
6
7
8
9
10
11
12(1,2,3)+(4,5)
# (1,2,3,4,5)
序列(列表 元祖 字符串)都能用 操作符 (比较>
、连接+
、重复*
、复合赋值*=
、成员in
) 以及 切片
何为序列? 可以通过下标偏移量访问到它的一个或多个成员..+ -
的优先级高于-= +=
x=20 x-=x-x
# 20python float运算陷阱
0.1+0.2 == 0.3
# Falsepython的乘方运算符
**
eg:3**5
就是3的5次方
# 基本运算符之逻辑与其它运算
- 假设n为整数,则表达式n&1==n%2的值为 True # -- n&1 n为单数结果为1;n为双数结果为0
- or 有真为真 and 有假必假 not > and > or and找假的,or找真的
3 and 5
# 5
3 and not 5
# False
0 or False and 1
# False
1 and 2 or 3
--> 2
0 and 2 or 3
--> 3
# 流程控制
循环几次的判断
语句x和语句y都会执行相同的次数,当num==4
的时候,循环结束,即num
需要加3个1(语句y需要执行3次),所以语句x也会执行3次
PS: 结束循环的方式 条件判断 | breaknum = 1 while num < 4: print("我爱我的祖国") # 语句x num = num + 1 # 语句y 我爱我的祖国 我爱我的祖国 我爱我的祖国
1
2
3
4
5
6
7
8for-else、while-else 当循环条件不成立而自然结束时,会执行else里的代码
参考:Effective Python第12条sum(range(1,101))
注意:若前面语句定义了名为sum的变量,那么内置函数sum就会失效!三元表达式:
res = x if x >y else y
# 进制转换
# 解释型、编译型
"""
10 -> 2 8 16 bin() oct() hex()
"""
bin(25) # 10->2 "0b11001"
oct(23) # 10->8 "0o27"
hex(28) # 10->16 "0x1c"
"""
2 8 16 -> 10 int("字符",base=要转换的字符是什么进制)
"""
int("0b11001",base=2) # 2->10 25
int("0o27",base=8) # 8->10 23
int("0x1c",base=16) # 16->10 28
int('123',16)
int内置函数将一个字符串或数字转换为整型
若带base参数,123要以字符串的形式输入
int(hex(255),16) == 255 # True
hex(255) '0xff' # 16进制的'0xff'转换为10进制数为255
round(3.4) # 3 返回浮点数的四舍五入值 返回值为int类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
==是比较值是否一样 在python中 True等价于1 False等价于0 所以你会看到以下的测试结果