1.3 运算符号
算数运算符
+
:加法;序列连接
>>> 1+2
3
>>> "abc"+"abc"
'abcabc'
>>> [1,2,3]+[1,2,3]
[1, 2, 3, 1, 2, 3]
-
:减法
>>> 3-2
1
>>> 3.14-2.89
0.25
*
:乘法;序列重复
>>> 2*3
6
>>> "abc"*3
'abcabcabc'
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
/
:除法,结果为小数
>>> 10/3
3.3333333333333335
>>> 9/2
4.5
//
:整除,如果存在小数,则结果为小数(整数+小数点)
>>> 10//3
3
>>> 9//2
4
>>> 10.0//3
3.0
>>> 9.0//2
4.0
**
:幂运算
>>> 2**4
16
>>> 81**0.5
9.0
%
:取余
>>> 10%3
1
>>> 10%-3
-2
>>> -10%3
2
>>> -10%-3
-1
>>> 7 % 4
3
>>> 7 % -4 # 3 -> 3 + -4 -> -1
-1
>>> -7 % 4 # 3 -> -3 + 4 -> 1
1
>>> -7 % -4
-3
赋值运算符
主要针对的是变量
+=,-=,*=,/=,//=,**=,%=
归结为?=
a ?= 1
a = a ? 1
>>> a = 1
>>> a += 1
>>> a
2
>>> a -= 1
>>> a
1
>>> a *= 10
>>> a
10
>>> a /= 2
>>> a
5.0
>>> 10 /= 2
File "<stdin>", line 1
SyntaxError: cannot assign to literal
>>> a = 1
>>> b = 2
>>> a += b
>>> a
3
# 左边必须是变量 右边变量或者常量都行
比较运算符
运算的结果只能是布尔类型
>大于,<小于,>=大于等于,<=小于等于,==等于,!=不等于
注意:==
永远比的是对象数据的值
>>> 3 > 2
True
>>> 1 < 2
True
>>> 1 != 2
True
>>> 2 == 2
True
以上的代码都称之为是布尔表达式
逻辑运算符
运算的结果只能是布尔类型
and逻辑与,or逻辑或,not 逻辑非
and和or双目运算符,not 单目运算符,参与的数据必须是布尔类型
>>> 3 and 2
2
>>> 3 > 2 and 2 > 1
True
>>> 3 > 2 or 1 > 2
True
>>> not 3 > 2
False
>>> not False
True
>>> not True
False
移位运算符
&位与
,|位或
,<<左移
,>>右移
>>> 12 & 7
4
"""
1100
0111 &
0100
"""
>>> 12 | 7
15
"""
1100
0111 |
1111
"""
>>> 2 << 4
32
"""
0010
00100000
2 * 2^4
"""
>>> 3 << 3
24 # 3 * 2^3
>>> 16 >> 2
4
"""
10000
00100
16 / 2^2
"""
1.4 选择语句
回顾一下,我们之前写的这些代码运行流程基本都是从上到下依句执行-顺序语句
任何代码宏观来看都是顺序语句执行
选择语句就是在某些条件满足的情况下执行部分1 不满足执行部分2
# C C++ Java
if (布尔表达式) {
部分1的代码
} else {
部分2的代码
}
# Python
#############################
A...
if 布尔表达式 :
B...
else :
C...
D...
True: A-B-D
False: A-C-D
#############################
A...
if 布尔表达式 :
B...
D...
True: A-B-D
False: A-D
#############################
A...
if 布尔表达式1 :
B...
elif 布尔表达式2 :
C...
elif 布尔表达式3 :
D...
else :
E...
F...
1T : A - B - F
1F 2T :A - C - F
1F 2F 3T : A - D - F
1F 2F 3F : A - E - F