#Day2
一、运算符
python中支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算(了解)
1.数学运算符:+(加法运算)、-(减法运算)、(乘法运算)、/(除法运算)、%(取余、取模)、//(整除)、**(幂运算)
+、-、、/和数学中的±×÷的功能一模一样
print(5 + 2) # 7
print(5 - 2) # 3
print(5 * 2) # 10
print(5 / 2) # 2.5
1)% - 取余、取模(数学中的求余数!!!!!!!!!!!!!!!)
x % y - 求 x 除以 y 的余数
print(10 % 3) # 1
应用1:判断一个数是否能够被另外一个数整除
num = int(input('请输入一个整数:'))
print(num % 3)
应用2:取整数的低位数
x % 10 - 获取x的个位数; x % 100 - 获取x后两位数;…
- // - 整除(商取整)
x // y - x除以y的商向小取整!!!得到的数字向小取整数
向小取整!!!:1.9 -> 1 -1.9 -> -2 3.4 -> 3
应用1:去掉低位数
678 // 10 -> 67 678 // 100 -> 6
num = 19971016
print(num // 10000) # 1997
练习:获取任意大于100的数的百位数
num = int(input('请输入一个大于100的数字:'))
print(num % 1000 // 100) # 获取num的百位数
3)** - 幂运算
x ** y -> 求 x 的 y次方
print(2 ** 3) # 8
如果次方数是 1/N 表示开 N 次方
开根号的结果数据都为浮点型
print(4 ** 0.5) # 2.0
print(8 ** (1 / 3)) # 2.0
布尔值参与数学运算的时候0为False,1为True!!!!!!!!!!!!!!!!!
2.比较运算符:>、<、>=、<=、==、!=
所有的比较运算符的运算结果都是布尔值
print(10 > 20)
注意:python中的比较运算符支持连写的方式表示取值范围
age = 19
print(18 <= age <= 19)
3.逻辑运算符:and(逻辑与)、or(逻辑或)、not(逻辑非)
“”"
- and - 逻辑与
应用场景:相当于生活中的’并且’,当需要多个条件同时满足的时候使用
运算规则:都是True结果就是True,只要有一个是False结果就是False
True and True -> True
True and False -> False
False and True -> False
False and False -> False
“”"
练习:写出一个数是否能同时被3和7整除的条件
num = int(input('请输入一个数字:'))
print('是否能同时被3和7整除:', (num % 3 == 0) and (num % 7 == 0))
print('是否能同时被3和7整除:', num % 21 == 0) # 方法二
2)or - 逻辑或运算
‘’’
应用场景:相对于生活中的’或者’,需要多个条件中只要有一个条件满足的时候使用
运算规则:都是False结果就是False,只要有一个True结果就是True
True or True -> True
True or False -> True
False or True ->True
False or False -> False
‘’’
练习:写出判断闰年的条件
闰年 - 能被4整除但是不能被100整除,或者能被400整除
year = 2009
print('是否是闰年:', year % 400 == 0 or year % 4 == 0 and year % 100 != 0)
- not - 逻辑非运算
‘’’
应用场景:对某一个条件进行否定
运算规则:True 变 False,False 变 True
not True -> False
not False -> True
‘’’
age = 20
print(not age > 18)
print(not age % 3 == 0 and age % 7 == 0)
什么时候用not:如果一个条件正向写很麻烦,但是反向写很简单,就反向写条件然后加not
4)短路操作
and 的短路操作:条件1 and 条件2 - 如果条件1是False,那么条件2对应的代码不会执行
or 的短路操作:条件1 or 条件2 - 如果条件1是True,那么条件2对应的代码不会执行
False and print(‘ig’)
True or print(’*****’)
5)运算对象不是布尔值
‘’’
实际开发的时候逻辑运算符的运算对象和运算结果一般都是布尔,但是面试的时候喜欢考运算对象不是布尔的情况
表达式1 and 表达式2 - 如果表达式1的结果是True,那么运算结果就是表达式2的值;
如果表达式1的结果是False,那么运算结果就是表达式1的值
表达式1 or 表达式2 - 如果表达式1的结果是False,那么运算结果就是表达式2的值;
如果表达式1的值是True,那么运算结果就是表达式1的值;
注意:表达式的值不是布尔,就转换成布尔再判断
怎么转:python中任何类型的数据都可以转换成布尔值,所有为0为空的值都会转换成False,
其他的值都是True
‘’’
a.布尔值转换
print(bool(0.0))
print(bool(‘dd’))
print(bool(135135131))
print(bool())
4.赋值运算符:=、+=、-=、=、/=、%=、//=、**=
所有的赋值运算符都是用来给变量赋值,赋值运算符的左边必须是变量;
复合的赋值运算左边的变量必须是已经赋值过的变量。
1) =
a = 10
2)复合的赋值运算符
a += 3 # a = a+3
print(a) # 13
a = 2 # a = a2 = 132
print(a) # 26
a %= 3 # a = a%3 = 26%3
print(a) # 2
5.运算符的优先级
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
数学运算符:** > *、/、%、// > +、-
逻辑运算符:and > or
如果有括号先算括号里面的内容
6.*位运算:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)
位运算的运算效率比一般的运算符都要高(高出几十倍甚至几百倍)
应用1:判断整数的奇偶性 - 数字对1进行按位与运算,如果结果是1就是奇数,结果是0就是偶数
print(10 & 1, 36 & 1, 500 & 1) # 0 0 0 0
print(3 & 1, 99 & 1, 155 & 1) # 1 1 1 1
应用2:
数字 << N - 数字快速乘 2N
数字 >> N - 数字快速整除 2N
数字 << 1 - 数字快速乘2:数字*2
数字 >> 1 - 数字快速整除2:数字//2
print(4 << 1, 5 << 1, 5 << 2) # 8 10 20
print(4 >> 1, 5 >> 1, 5 >> 2) # 2 2 1
print(bool(1 and 2 != 1))