Python提供了多种类型的运算符,用于执行各种操作,包括算术运算、比较运算、逻辑运算、赋值运算等。
1、算数运算符
运算符 | 作用 | 例子 | 结果 |
---|---|---|---|
| 加 | 7 2 | 9 |
- | 减 | 7 2 | 5 |
* | 乘 | 7*2 | 14 |
/ | 除(保留小数点) | 7/2 | 3.5 |
// | 整除(取商) | 7//2 | 3 |
% | 除(取余数) | 7%2 | 1 |
** | 次方 | 7**2 | 49 |
加法运算符
发现如果是数字的话,
会用于相加
如果是字符串的时候,会将字符串拼接
支持列表和元祖
-
减法运算符
数字的话,用作减法,字典也能使用
*乘
法运算符
数字的话,用作乘法
如果是字符串*N,会将N 个字符串连接起来
支持列表和元祖
/
和//
和%
运算符
/
属于普通除法,得到的结果是与数学运算中的除法是一致的,比如10/3=3.333333333333333
而//
和%
需要一起来看,两者都是除法运算,但是区别的是取的值不同
比如:两个数相除,会得到一个商,还有一个余数,//
**取的是商,而**%
**取的是余数**
如果两个数中有浮点数,最终结果也是浮点数
**
运算符
**运算符不仅可以实现次方运算,还可以间接地实现开方运算
2、赋值运算符
赋值运算符用来把右侧的值传递给左侧的变量(或者常量)
代码语言:javascript复制# 将值赋值给变量
old_age = 5
# 将变量的值赋值给另一个变量
age = old_age
# 将运算后的值赋值给变量
new_age = age 1
而我们赋值还可以连续赋值,比如a=b=c=5
赋值我们要从右向左看,首先把5这个数值赋给c,所以c就等于5,然后又把c赋给了b,所以b也等于5,以此类推,a、b、c的值都等于5
而我们赋值之前也讲过,还可以对多变量进行同时赋值,我们这里在复习下
代码语言:javascript复制# 将值赋值给多个变量
a, b = 1, 2
# 给多种数据类型赋值给多个变量
c, d, e, f, = 1, 2.0, "字符串", True
# 给列表、元祖、集合、字典赋值
g, h, i, j = [1, 2, 3, 4], (1, 2, 3, 4), {1, 2, 3, 4}, {1: 1, 2: 2}
print(a, b, c, d, e, f, g, h, i, j)
上述属于最基本的赋值运算符,还有一些结合的运算符,我们来看下:
赋值运算符 | 作用 | 例子 | 等价于 |
---|---|---|---|
= | 基本的赋值运算 | x = y | x = y |
= | 加赋值 | x = y | x = x y |
-= | 减赋值 | x -= y | x = x - y |
*= | 乘赋值 | x *= y | x = x * y |
/= | 除赋值 | x /= y | x = x / y |
%= | 取余数赋值 | x %= y | x = x % y |
**= | 幂赋值 | x **= y | x = x ** y |
//= | 取整数赋值 | x //= y | x = x // y |
我们通过代码来加深下印象
代码语言:javascript复制a, b, c, d, e, f, g = 1, 2, 3, 4, 5, 6, 7
a = 1
b -= 1
c *= 2
d /= 2
e %= 2
f **= 2
g //= 3
print(a, b, c, d, e, f, g)
# 输出结果
2 1 6 2.0 1 36 2
自己动手练习一下吧!
赋值运算符已经掌握,那我们day02-变量中的高级练习题中 a与b的值交换,不用临时变量是不是也可以做了
tips:如果我们变量没有赋值 n = 10 想想这种是否可以参与运算
3、比较运算符
在Python中,比较运算符用于比较两个值之间的关系,并返回一个布尔值(True或False)表示比较结果的真假
支持的比较运算符:
比较运算符 | 作用 |
---|---|
大于,前者大于后者返回True,否则返回False | |
< | 小于,前者小于后者返回True,否则返回False |
== | 等于,如果==两边的值相等,则返回 True,否则返回False |
| 大于等于,如果前面的值大>=后面的值,则返回 True,否则返回 False |
<= | 小于等于,如果前面的值<=等于后面的值,则返回 True,否则返回 False |
!= | 不等于,如果!=两边的值不相等,则返回 True,否则返回 False |
is | 判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False |
is not | 判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False |
练习一下:
tips:那我们用is来比较一下呢
2 is 1
发现报错了
报错信息:语法警告(SyntaxWarning),is
使用了字面值,你是否想用==
分析:is
是用来判断变量引用的对象是否相同,而1和2都是整数,而整数呢,属于不可变数据类型,所以无法判断对象的是否相同,所以我们判断整数得用==
==
和is
的区别
== 是用来判断两边的值是不是相等
is 用来判断两个变量对象是不是相等,也可以说,判断两个对象是否引用同一个内存地址,而在变量中我们学到,查看变量地址用到的是id()
这个函数,所以is也可以当成 id(a) == id(b),如果地址相等,返回True
a = "hello"
b = "hello"
print(id(a))
print(id(b))
print(a is b)
print(a == b)
# 输出结果
# 2682889953328
# 2682889953328
# True
# True
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a))
print(id(b))
print(a is b)
print(a == b)
# 输出结果
# 2581265316736
# 2581266649024
# False
# True
4、逻辑运算符
在我们上学时的数学学习中,学习过"且","或","非",而在我们Python中,也有类似的逻辑运算
逻辑运算符 | 含义 | 格式 | 作用 |
---|---|---|---|
and | 逻辑与运算,等价于"且" | a and b | 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假 |
or | 逻辑或运算,等价于"或" | a or b | 当a和b有一个为真, 则为真,都为假时才为假 |
not | 逻辑非运算,等价于"非" | not a | 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反 |
而逻辑运算符经常与比较运算符结合使用
判断下边代码中返回True还是False
代码语言:javascript复制x = 5
y = 10
# 逻辑与(and)
print(x < 10 and y > 5)
# 逻辑或(or)
print(x < 10 or y < 5)
# 逻辑非(not)
print(not x < 10)
# 输出结果
# True
# True
# False
但是逻辑运算符并不都是会返回布尔类型
print(100 and 200) print(100 or 200) 猜猜会返回什么
运行结果:
代码语言:javascript复制200
100
对于and
运算符如下:
- 如果第一个数为
False
,则直接返回第一个数 - 如果第一个数为
True
,那返回第二个数
对于or
运算符如下:
- 如果第一个数为
True
,则直接返回第一个数 - 如果第一个数为
False
,那返回第二个数
如果还不能太理解,我们可以分析下:
对于and
符号,还是两边都为真,才会返回真;
如果有一个假,则就会返回假;
所以第一个数为假的话,就不用计算第二个数,肯定是假,直接返回第一个数了,而如果第一个数为真的话,还需要计算第二个数的值,所以把第二个数返回
同理or
符号,只要有真就会返回真,第一个数为真那就直接返回,如果第一个数不为真,那值不确定,所以只能返回第二个数了
5、成员运算符
Python还支持成员运算符,具体如下
逻辑运算符 | 含义 | 格式 | 作用 |
---|---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | a in b | 当 a存在于b中,返回真,否则为假 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | a not in b | 当a不在b中, 则为真,否则为假 |
# 判断下边表达式返回True还是False
"hello" in "hello world"
"hello" not in "hello world"
[1, 2] in [1, 2, 3]
[1, 2] not in [1, 2, 3]
(1, 2) in (1, 2, 3)
(1, 2) not in (1, 2, 3)
{1, 2} in {1, 2, 3}
{1: 2} in {1: 2, 2: 3}
# 输出结果
# True
# Flase
# True
# Flase
# True
# Flase
# Flase
# 报错
集合为什么返回False,字典报错了,这个交给大家查询下
6、三元运算符
在Python中,三元运算符又称三目运算符,可以认为是条件判断的一种简单写法;
需要3个组成:1个是判断条件(返回True或者False)、1个是为真时的结果、1个是为假时的结果。
组成:为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
在Python中,三目运算符会返回一个结果
我们用实例来学习下:
代码语言:javascript复制a = 5,b=10,使用三目运算符得出两数中的较大值
a, b = 5, 10
max_num = a if a > b else b
print(max_num)
# 输出结果 10
max_num = a if a > b else b
这个如果a>b 成立就会返回真,那把a放到前边,否则就是假,那就会给到后边,所以把b放到后边,然后赋值给max_num
7、运算符优先级
这个可以看这篇文章Python基础 - 运算符优先级
day03练习
初级:
1.编写一个程序,要求用户输入两个整数,用 ,-,*,/,//,%,**
符号计算并输出结果
2.给定两个变量a和b的初始值为5和3,使用赋值运算符计算并输出以下表达式的结果:
- a = b
- a -= b
- a *= b
- a /= b
- a %=b
- a **=b
- a //=b
3.编写一个程序,接受用户输入的两个数字分别赋值给变量a和b,
- 判断a是否为正数,如果是正数,返回True,否则返回False
- 判断a和b是否相等,如果相等,返回"相等",否则返回"不相等"
- 判断a和b的和是否大于等于18,如果大于等于,返回True,否则返回Flase
4.编写一个程序,接受用户输入的一个数字,并判断它是否大于10且小于20。如果是返回"符合",不是就返回"不符合"
中级:
1.编写一个程序,接受用户输入的两个数字,并使用赋值运算符实现变量交换,然后输出交换后的结果
2.编写一个程序,接受用户输入的一个正整数,并判断它是否为偶数。如是偶数返回True,是奇数返回False
3.编写一个程序,接受用户输入的一个字符串,并判断它是否包含字母 "a" 或 "b"。如果包含返回True,否则返回False
4.编写一个程序,接受用户输入的一个年份,并判断它是否为闰年且大于2000年(闰年条件:能被4整除且不能被100整除,或者能被400整除),如果符合条件,输出"是闰年且大于2000年",不符合条件,输出"不符合条件"
高级:
1.编写一个程序,要求用户输入1个整数,使用三目运算符判断这个整数是奇数还是偶数,如果奇数返回"奇数",如果是偶数,返回"偶数"。
2.编写一个程序,接受用户输入的一个三位数,并计算它的百位、十位和个位数字之和。并打印输出结果
3.编写一个程序,接受用户输入的一个三位数,判断该数是否为水仙花数(水仙花数指一个三位数,其各个位上数字的立方和等于该数本身如153、370)。
4.编写一个程序,有列表1,2,3,4,5,6,7,8,9和一个整数8,并判断该整数是否在列表的前半部分,且列表长度大于5