python的数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算

python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算

一、数学运算符

包括:加(+)、减(-)、乘()、除(/)、取余或者取模(%)、整除(//)、幂运算(**)
1)加(+)、减(-)、乘(
)、除(/)和数学中的加减乘除功能一样

print(5 / 3) # 在C语言中5/3=1
print(5 % 2) # 1
# 获取num的个位数
print(674 % 10) # 4

2)整除(//)
求商,取商的整数部分,它是向下取整 5.76->5、-4.13->-5

print(5//2)   # 2
print(-5//2)  # -3

3)幂运算(**)
M ** N -> 计算M的N次方

print(3 ** 2) # 9

二、比较运算符

比较运算符(关系运算符):> < == >= <= !=
注意:1.所有比较运算的结果都是bool值
           2.数字数据不能和字符串数据进行比较

print(10 > 5)  #True
print(10 < 2)  #false
#print(10 <> 3) #语法错误
print(10 != 3) #True

python中支持比较运算符的连写来表示范围

x = 10
print(0 < x < 100)

三、逻辑运算符

python的逻辑运算符:逻辑与运算(and)、逻辑或运算(or)、逻辑非运算(not)

1.and

1)运算规则:
      操作对象都是布尔值:两个都是True,结果才是True,只要有False,结果就是False
2)应用场景:希望两个或者多个条件同时满足才做什么事情。

#写出学生是否能拿奖学金,绩点大于4,且操行分大于85
grade = int(input('请输入成绩:'))
score = int(input('请输入操行分:'))
if grade > 4 and score >85:
    print('满足条件,能拿奖学金')
else:
    print('不能拿奖学金')

2.or

1)运算规则
      操作对象都是布尔值:只要有一个对象是True结果就是True,所有对象时False,结果才是False
2)应用场景:希望两个或者多个条件只要有一个满足就可以使用逻辑或运算

#写出判断指定的年是否是闰年的条件
year = 2012
result = ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0)
print(year, '年是否是闰年:', result)

3.not

1)运算规则:True变False,False变True
2)应用场景:不满足某个条件就做什么

age = 18
print('是否成年:', age >= 18)
print('是否成年:', not age < 18)
# 写出num是否不能同时被3和7整除
num = int(input('请输入一个数:'))
result = not (num % 3 == 0 and num % 7 == 0)
print(result)

4.操作对象不是布尔的时候

逻辑运算符语法上可以操作任何数据
数据1 and 数据2
数据1的布尔值是true结果是数据2,数据1的布尔值是false结果是数据1

print(1 and 'abc') # 1
print('abc' and 'hello') # abc
print(0 and 'abc') # 0
print(False and 100) # False
print('' and 'abc') # ''

补充:数据的布尔值怎么确定 - 所有为零的值都是False,其他数据的布尔值都是True
数据1 or 数据2
如果数据1的布尔值是True,结果是数据1;如果数据1的布尔值是False,结果是数据2

print(1 or 'abc') # 1
print(7 or 8) # 7
print(0 or 'abc') # abc

print(not 1)  # False
print(not 0)  # True
print(not 'abc') # False

5.短路操作

and 的短路操作:
表达式1 and 表达式2 -> 如果表达式1结果是False,表达式2不会执行

def func1():
    print('函数被执行')
print(False and func1()) # 不被执行
print(True and func1())  # 被执行

or的短路操作:
表达式1 or 表达式2 -> 如果表达式1结果是True,表达式2不会执行

print(True or func1())  # 不被执行
print(False or func1()) # 被执行

四、赋值运算符

1.赋值运算符:=、+=、-=、*=、/=、%=、//=、**=

1)所有的赋值运算符都是用来给变量赋值的
2)所有的赋值运算符左边都必须是变量,复合赋值运算符左边的变量必须是已经赋值过的变量
3)所有赋值运算符的右边都可以是任意有结果的表达式

1.1 =
a = 10
1.2 +=、-=、*=、/=、%=、//=、**=

变量 += 数据 -> 变量 = 变量 + 数据
变量 -= 数据 -> 变量 = 变量 - 数据
变量 /= 数据 -> 变量 = 变量 / 数据
变量 %= 数据 -> 变量 = 变量 % 数据
变量 //= 数据 -> 变量 = 变量 // 数据
变量 **= 数据 -> 变量 = 变量 ** 数据

2.运算符的优先级

a.数学运算符 > 比较运算符 > 赋值运算符(最低)
b.** > *,/,%,// > +,-
c.有括号先算括号

五、位运算

1.位运算

特点:效率高,内存消耗少;所有的位运算都是直接操作数据在***内存中存储的补码***

2.位运算运算符

按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>)

1)按位与(&)

数字1 & 数字2 - 两个都是1,结果才是1,否则结果是0
某一位上的数和1与可以对这一位上的数进行保存,和0与会对这一位进行置0操作
5:00000101(补)
9:00001001(补)
5 & 9: 00000001 -> 1

print(5 & 9)  # 1

-5:10000101 -> 11111011(补)
-9:10001001 -> 11110111(补)
-5 & -9:11110011(补)-> 10001100(反) -> 10001101(原) -> 13
注意:对补码求补就是原码
应用: 判断数字的奇偶性
让被判断的数和1进行按位与运算,结果是0则是偶数,否则是奇数

print(28 & 1)  # 偶数
print(13 & 1)  # 奇数
2)按位或(|)

数字1 | 数字2 - 只要有一个是1,结果就是1;两个都是0结果就是0

print(7 | -16)
3)按位异或(^)

数字1 ^ 数字2 - 不同为1,相同为0;对异或再进行异或就是原值

print(18 ^ 9)
4)按位取反(~)

~ 数字 - 取反

5)<<、>>

应用:快速的,高效率的乘以或者除以2的次方数
数字1 >> 数字2 - 数字1 // 2 ** 数字2
数字1 << 数字2 - 数字1 * 2 ** 数字2

print(6 << 2) # 等于6*2**1   24
print(3 << 2) # 等于3*2**2 12
print(6>>1) # 等于6//2**1  3

猜你喜欢

转载自blog.csdn.net/yang_yang_heng/article/details/106674637