变量的赋值与计算都离不开表达式,表达式的运算依赖于变量、常量和运算符。
那么我们先说一说什么是表达式。
(一)表达式
Java表达式是变量、常量、运算符、方法调用的序列,它执行指定的计算并返回某个确定的值。
表达式不会对程序产生实质性的影响, 一般只是返回一个结果。
-
在Python中,如果在交互模式中只输入一个表达式,解释器会自动将表达式的结果输出。如果是在Python文件中只输入表达式,运行文件都不会有任何输出的。
-
交互模式中只写表达式。
-
Python文件中只写表达式的语句会没有任何输出。
-
(二)运算符
运算符用于执行程序代码运算。
1、运算符的分类
Python的常用运算符分为5类:
- 算数运算符
- 赋值运算符
- 复合赋值运算符
- 比较运算符
- 逻辑运算符
2、算数运算符
Python中算数运算符如下:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 1 + 1 输出结果为 2 |
- | 减 | 1-1 输出结果为 0 |
* | 乘 | 2 * 2 输出结果为 4 |
/ | 除 | 10 / 2 输出结果为 5 |
// | 整除 | 9 // 4 输出结果为2 |
% | 取余 | 9 % 4 输出结果为 1,也叫取模 |
** | 指数 | 2 ** 4 输出结果为 16,即 2 * 2 * 2 * 2 |
() | 小括号 | 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9 |
注意:
- 混合运算优先级顺序:
()
高于**
高于*
/
//
%
高于+
-
示例:
# 1、运算符:加、减、乘
# 所有运算中,只要有浮点数参加的运算,一定会得到一个浮点数
a = 10.5 + 5
print(f'a = {a}') # a = 15.5
# 2、运算符:除
# 除法不管得到什么数,结果都是小数(浮点型),//(整除不会)
b = 4 / 2
print(f'b = {b}') # b = 2.0
# 3、运算符://(整除),只会保留整数位
# 运算结果只会得到一个整型,结果只保留整数部分。
c = 4 // 2
print(f'c = {c}') # c = 2
# 如果除数或被除数是小数,则返回一个浮点数
c = 4.567 // 2
print(f'c = {c}') # c = 2.0
# 4、用变量d的值减去2,然后再赋值给d
d = 10
d = d - 2
print(f'd = {d}') # d = 8
"""
5、如果将字符串和数字相乘,
则会对字符串进行复制操作,
将字符串重复指定次数
6、如果对字符进行加法运算,
就是字符串的拼接
"""
e = 'hello' + ' ' + 'world'
print(e) # hello world
f = ('hello' + ' ') * 2
print(f) # hello hello
# 7、除0异常
g = 5 / 0
# 报出异常:ZeroDivisionError: division by zero
3、赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值 | 将= 右侧的结果赋值给等号左侧的变量 |
- 单个变量赋值
num = 1
print(num)
- 多个变量赋值
num1, float1, str1 = 10, 0.5, 'hello world'
print(f"num1 = {num1}")
print(f"float1 = {float1}")
print(f"str1 = {str1}")
# 输出结果如下:
# num1 = 10
# float1 = 0.5
# str1 = hello world
- 多变量赋相同值
a = b = 10
print(f"a = {a}")
print(f"b = {b}")
# 输出结果如下:
# a = 10
# b = 10
4、复合赋值运算符
当解释器执行到复合赋值运算符时,先计算算数运算符的表达式,再将算数运算符执行后的结果赋值到等号左边的变量。
复合赋值运算符如下:
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等价于 c = c + a |
-= | 减法赋值运算符 | c -= a 等价于 c = c- a |
*= | 乘法赋值运算符 | c *= a 等价于 c = c * a |
/= | 除法赋值运算符 | c /= a 等价于 c = c / a |
//= | 整除赋值运算符 | c //= a 等价于 c = c // a |
%= | 取余赋值运算符 | c %= a 等价于 c = c % a |
**= | 幂赋值运算符 | c ** = a 等价于 c = c ** a |
示例:
# 输出101 a = a + 1,最终a = 100 + 1
a = 100
a += 1
print(a) # 101
# 输出6 b = b * 3,最终b = 2 * 3
b = 2
b *= 3
print(b)
# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
c = 10
c += 1 + 2
print(c)
# 注意: 先算复合赋值运算符右面的表达式,再算复合赋值运算.
d = 100
d *= 3 + 4
print(d) # 700
# 3 + 4 = 7 * 100 = 700
在对浮点数做算术运算时,结果也会返回一个浮点数。
5、比较运算符
比较运算符也叫关系运算符,来比较两个值之间的关系,总会返回一个布尔值, 如果关系成立,返回True,否则返回False,通常用来判断。
比较运算符如下:
运算符 | 描述 | 实例 |
---|---|---|
== | 判断相等。如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False) | 如a=3,b=3,则(a == b) 为 True |
!= | 不等于 。如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False) | 如a=3,b=3,则(a == b) 为 True如a=1,b=3,则(a != b) 为 True |
> | 运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假 | 如a=7,b=3,则(a > b) 为 True |
< | 运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假 | 如a=7,b=3,则(a < b) 为 False |
>= | 运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假 | 如a=7,b=3,则(a < b) 为 False如a=3,b=3,则(a >= b) 为 True |
<= | 运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假 | 如a=3,b=3,则(a <= b) 为 True |
示例:
# 1、关系运算符基本使用
a = 7
b = 5
print(a == b) # False
print(a != b) # True
print(a < b) # False
print(a > b) # True
print(a <= b) # False
print(a >= b) # True
# 2、数字可以可布尔值比较,True=1,False=0
print(1 == True) # True
print(2 < True) # False
print(-1 < False) # True
# 3、数字和字符串之间不能进行比较
print(2 > '1')
# TypeError: '>' not supported between instances of 'int' and 'str'
"""
# 4、字符串和字符串之间可以进行比较
在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算时,
实际上比较的是字符串对应的Unicode编码。
比较两个字符串的Unicode编码时,是逐位比较的。
利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说意义不是特别大。
注意:如果不希望比较两个字符串的Unicode编码,
则需要通过数据类型转换
将字符串转换为数值型然后再比较。
"""
# a(0061) 和 b(0062) 比较
print('a' > 'b') # False
# 比较两个字符串的Unicode编码时,是逐位比较的。
# 也就是第一位和第一位比,第二位和第二位比,
# 只有在第一位没有比出结果的时候(相等),才比第二位。
print('ab' > 'bc') # 实际上就是a和b比较,结果False
print('ab' > 'b') # 同上一句结果
print('af' > 'ac') # True
# 没有肯定小于有字符
print('a' > 'ac') # False
# 将字符串转换成数值型在比较
print(int('5') > int('7')) # False
print(float('5.115') > float('4.64')) # True
"""
5、== 和 != 比较的是结果对象的值,而不是id。
对象包括id(地址)、type(类型)、value(值)
比较id用is 和 is not
is 比较两个对象是否是同一个对象,比较的是对象的id。
is not 比较两个对象是否不是同一个对象,比较的是对象的id。
这里有个印象就可以,以后说完可变对象,再详细说明。
"""
print(1 == True) # True
print(id(1),id(True)) # 8791323868224 8791323365904
print(1 is True) # False
print(1 is not True) # True