# 注释
print('Hello world')
# Hello world
''' '''或 """ """
'''
多行注释,作用于单引号区间内
'''
"""
多行注释,作用于双引号区间内
"""
print('Hello world')
#Hello world
and(与):只要有一个为假则为假
or(或):只要有一个为真则为真
not(非):not(True)–> False ; not(False)–>True
A : 00 00 11 00
B : 00 00 01 11
A^B : 00 00 10 11
B^A : 00 00 10 11
A^A : 00 00 00 00
A^0 : 00 00 11 00
A^B^A = A^A^B = B = 00 00 01 11
<< (左移动运算符):运算符各二进制位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
num << i 将num的二进制表示向左移动位
11 << 3 ----------> 10 11 -> 10 11 00 0
11 << 3 = 88
>> (右移动运算符):运算符各二进制位全部右移若干位
11 << 3 ----------> 10 11 -> 1
11 << 3 = 1
二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示
x, y = 4, 5
small = x if x < y else y
print(small) # 4
'hello' is 'hello' # True
'hello' is not 'hello' # False
3 is not 5 # True
5 in [1,2,3,4,5] # True
5 not in [1,2,3,4,5] # False
#1. 一元运算符优先于二元运算符
print(-3 ** 2) # -9
print(-3 * 2 + 5 / -2 - 4) # (-6+ (-2.5) - 4) = -12.5
#2. 先算数,后移位,最后位运算
1 << 3 + 2 & 7
""" 3 + 2 = 5
1 << 5 --> 1->100000
1 << 5 = 32
32 & 7 = 0
"""
#3. 逻辑运算最后结合
3 < 4 and 4 < 5
"""
3 < 4 True
4 < 5 True
True and True ---> True
"""
print(type(0), bool(0), bool(1))
# False True
print(type(10.31), bool(0.00), bool(10.31))
# False True
print(type(True), bool(False), bool(True))
# False True
print(type(''), bool(''), bool('python'))
# False True
print(type(()), bool(()), bool((10,)))
# False True
print(type([]), bool([]), bool([1, 2]))
# False True
print(type({}), bool({}), bool({'a': 1, 'b': 2}))
# False True
print(type(set()), bool(set()), bool({1, 2}))
# False True
python中的整型以补码形式存储,不限制长度时不会超范围溢出
print(type(666))
#
print(type(666.66))
#
print(type(True))
#
print(isinstance(1, int))
# True
print(isinstance(True, bool))
# True
# str ---> int
print(int('520')) # 520
# float ---> int
print(int('520.52') # 520
# float ---> str
print(str(10.1 + 5.2), type(str(10.1 + 5.2))) # 15.3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
一个数的二进制表示可以看作一个集合(0表示不在集合中,1表示在集合中)
比如集合{1, 3, 4, 8} 可以表示成 01 00 01 10 10
对应的位运算也可以看作是对集合进行的操作