0
点赞
收藏
分享

微信扫一扫

python基础——运算符

书坊尚 2022-03-27 阅读 24
python

运算符

位运算符

按位运算符是把数字看作是二进制来进行计算的。 下表中变量 a 为 60,b 为 13,二进制格式如下:

a = 0011 1100  # 60的二进制   128 64 32 16 8 4 2 1
b = 0000 1101  # 13的二进制   
--------------------------------------------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001   
~a  = 1100 0011
位运算描述示例
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,其他都为 0(a & b) 输出结果 12 ,二进制解释: 0000 1100
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^按位异或运算符:当两对应的二进位相异时,结果为1a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

算术运算符

  • +加 -减 *乘 /除 **幂运算 // 整除 %取余(取模)
print(1 + 1)  # 2
print(4 - 2)  # 2
print(3 * 2)  # 6
  • 在Python3里,两个整数相除,得到的结果会是一个浮点数
print(6 / 2)  # 3.0
print(9 / 2)  # 4.5
print(10 / 3)  # 3.333333333333333
  • 注意:
print(81 ** (1 / 2))  # 9.0 
print(3 ** 3)  # 27

整取,向下取整(注意不是-2.5)

print(-5 // 2)  # -3  
print(10 // 3)  # 3   整除
print(10 % 3)  # 1  取余,只取余数部分

赋值运算符

  • 单个变量赋值
>>> num = 10
>>> num
10
  • 同时为多个变量赋值(使用等号连接)
>>> a = b = 4
>>> a
4
>>> b
4
>>>
  • 多个变量赋值(使用逗号分隔)
>>> num1, f1, str1 = 100, 3.14, "hello"
>>> num1
100
>>> f1
3.14
>>> str1
"hello"
  • 注意:

#语法错误,值的个数超过变量的个数,赋值失败

>>> num1,num2=(1,2,3)

#语法错误,变量的个数超过值得个数,赋值失败

>>> num1,num2,num3,num4=(1,2,3)
>

比较运算符

运算符说明
==相等
!= <>不相等
>大于
<小于
>=大于等于
<=小于等于
  • #字符串之间使用比较运算符,会根据各个字符的编码值逐一进行比较
print('a' > 'b')  # False   97 > 98
print('abc' > 'b')  # False 97 > 98
  • #ASCII码转换为int: int转为ASCII码:
print(ord('a')) #97
print(chr(97)) #a
  • 数字和字符串之间,只可以做 == 和 !=运算 不支持其他的比较运算
print('a' == 90)  # False
print('a' != 97)  # True

逻辑运算符

and:一false 全false
or:一true 全true

  • 逻辑运算的结果,一定是布尔值吗? 不一定
  • and运算时,都为False取第一个False的值;都是True,取最后一个值
print(3 and 5 and 0 and 'hello')  # 0
print('good' and 'yes' and 'ok' and 100)  # 100
  • 或运算时,都为True取第一个为True的值;都是False,取最后一个值
print(0 or [] or 'lisi' or 5 or 'ok')  # lisi
print(0 or [] or {} or ())  # ()

成员运算符

in:如果在指定的序列中找到值,则返回True,否则返回False

not in:如果在指定的序列中没有找到值,则返回True,否则返回False

#在  或 不在
print("a" in "abc")
print("d" in "abc")
print("w" not in "abc")

三元运算符

1.逻辑运算符方式(不常用)

  • 语法:条件 and a or b
  • 如果条件为真,则整个表达式的值为a,如果条件为假,则整个表达式的值为b
print(3>2 and "大于" or "小于")

print(2>3 and "大于" or "小于")

2.if-else方式(常用)

  • 语法:a if 条件 else b
  • 如果条件为真,则整个表达式的值为a,如果条件为假,则整个表达式的值为b
print(3344 if 2>3 else 1122) #1122

身份运算符

is is not

  • 可以理解为:看地址是否一样的 返回值为 bool类型
x =[1,2,3]  #2596464779912
y =[1,2,3]  #2596464779976
print(x is y)  # False
print(x is not y) #True
  • 查看内存地址
print(id(x))

运算符优先级

运算符描述
**指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //乘,除,取模和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^ |位运算符
<= < > >=比较运算符
<> == !=等于运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
not>and>or逻辑运算符
举报

相关推荐

基础运算符

python基础之运算符(上)

0 条评论