# 算术运算符 + - * / % **
a = 10
b = 20
# print ( a + b)
# print ( a - b )
# print ( a * b)
# print ( a / b)
# print ( 2 ** 3 )
# print ( 9 % 2 )
# print ( 9
# 字符串运算
'' '
1. 字符串与数字不能直接参与运算
2. 字符串和字符串使用 + 结果是字符串的拼接
3. 字符串如果和数字 使用 * 那么就是重复前面的字符串
'' '
# print ( '1' + 2 ) # X
# print ( '1' + '2' ) # '12'
# print ( '1' * 5 ) # '11111'
# 关于字符串的拼接
l = 'love'
# i = 'i ' + l+ ' you'
# i = f'i {l} you'
# i = 'i {} you' . format ( l)
# i = 'i {l} you' . format ( l= l)
# print ( i)
# 赋值运算 与 比较运算 和 逻辑运算
# 赋值运算
a = 10
a += 20 # a = a+ 20
a -= 30
# print ( a)
# 比较运算
a = 10
b = 20
# print ( a == b)
# print ( a != b)
# print ( a > b)
# print ( a < b)
# print ( a >= b)
# print ( a <= b)
# 逻辑运算 and or not
# and 与 必须都为真,一假则假
# print ( True and True) # True
# print ( True and False) # False
# print ( False and True) # False
# print ( False and False) # False
# print ( 20 and 30 ) # 30
# print ( 40 and 30 ) # 30
# print ( 40 and 0 ) # 0
# print ( 0 and 30 ) # 0
# # or 或 有真则真,全假则假
# print ( True or True) # True
# print ( True or False) # True
# print ( False or True) # True
# print ( False or False) # False
# print ( 10 or 20 ) # 10
# print ( 20 or 10 ) # 20
# print ( 0 or 20 ) # 20
# print ( 30 or 0 ) # 30
# not 非 取反,真变假,假变真
# print ( True) # True
# print ( not True) # False
# print ( False) # False
# print ( not False) # True
# 二进制 与 位运算
# 十进制数 转为 二进制数
a = 125
'' '
125
62
32
15
7
3
1
按照计算的结果,把余数从低位到高位依此排列
1 1 1 1 1 0 1
'' '
# bin ( ) 可以转为 二进制数
# print ( bin ( 125 ) ) # 0b1111101
# 二进制 转 为 十进制
# 按权展开求和
n = 0b1111101
'' '
1111101
1 == > 1 * 2 ** 6 == > 64
1 == > 1 * 2 ** 5 == > 32
1 == > 1 * 2 ** 4 == > 16
1 == > 1 * 2 ** 3 == > 8
1 == > 1 * 2 ** 2 == > 4
0 == > 0 * 2 ** 1 == > 0
1 == > 1 * 2 ** 0 == > 1
'' '
# print ( 64 + 32 + 16 + 8 + 4 + 0 + 1 )
# int ( ) 转为十进制
# print ( int ( 0b1111101 ) )
# 作业 把十进制的数 转为 二进制
# & 按位与运算符:参与运算的两个值, 如果两个相应位都为1 , 则该位的结果为1 , 否则为0
a = 60
b = 13
# print ( bin ( a) , bin ( b) )
# print ( a& b)
'' '
111100
001101
001100
1 1 * 2 ** 3
1 1 * 2 ** 2
0 0 * 2 ** 1
0 0 * 2 ** 0
12
'' '
# | 按位或运算符:只要对应的二个二进位有一个为1 时,结果位就为1 。
'' '
111100
001101
111101
'' '
# print ( int ( 0b111101 ) )
# print ( a| b)
# ^ 按位异或运算符:当两对应的二进位相异时,结果为1
'' '
111100
001101
110001
'' '
# print ( int ( 0b110001 ) )
# print ( a^ b)
# 左移动运算符:运算数的各二进位全部左移若干位,由"<<" 右边的数指定移动的位数,高位丢弃,低位补0 。
print ( a << 2 )
'' '
a
0011 1100
1111 0000
0011 1100
0000 1111
'' '
print ( a >> 2 )
# print ( int ( 0b1111 ) )
# 其它运算符
# in not in 检测成员是否存在
s = 'iloveyoiutosimida'
# s = [ 'love' , 'io' , 'you' ]
# s = ( 'i' , 'love' , 'you' )
# s = { 'i' , 'love' , 'you' }
# s = { 1 : 'i' , 2 : 'love' , 3 : 'you' } # 如果是字典类型 只能检测 键
# print ( 2 in s) # 检查 love 字符串 是否存在与 s变量中
# print ( 'loves' not in s) # 检查 love 字符串 是否 不存在 与 s变量中
# id ( ) 变量的 id属性获取,函数用于获取对象内存地址
a = 10
b = 10
# is is not 检测两个变量是否引用了同一个对象
#is 是判断两个标识符是不是引用自一个对象
print ( id ( a) , id ( b) )
print ( a is b)
# is not 是判断两个标识符是不是引用自不同对象
print ( a is not b)
# Python运算符优先级
a = 10 and ( 30 and 0 ) or 20 and 15 or 35
print ( a)