day03-运算符
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、赋值运算符
赋值运算符用来把右侧的值传递给左侧的变量(或者常量)
# 将值赋值给变量 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
而我们赋值之前也讲过,还可以对多变量进行同时赋值,我们这里在复习下
# 将值赋值给多个变量 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
|
我们通过代码来加深下印象
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),如果地址相等,返回Truea = "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
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)猜猜会返回什么
运行结果:
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中,三目运算符会返回一个结果
我们用实例来学习下:
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_num7、运算符优先级
这个可以看这篇文章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