按位运算符是把数字看成二进制数来进行计算 & 按位与运算符 相应的位数都为1,则该位的结果是1,否则为0
print(5 & 7) """ 101 111 ---- 101 """| 按位或运算符 两个二进制位有一个1时,结果为1
print(5 | 7) """ 101 111 ---- 111 """^ 按位异或运算符 二进制的两位相异时,结果为1
print(5 ^ 7) """ 101 111 ---- 010 """~ 按位取反运算符 每个二进制数据位取反,1变0 ,0变1
print( ~5 )补码 11111111111111111111111111111111 原码 1000000000000000000000000001
<< 左移动运算符 各二进制位全部移动若干位,由<<右侧的数字决定,高位丢弃,低位补零
print(2 <<2) 000000010 000001000>> 右移动运算符 各二进制位全部右移动若干位,由>>右侧的数字决定
print(13 >> 2) 00000001101 00000000011关系运算表达式 1 + 2 > 3 +4 格式: 表达式1 关系运算符 表达式2 功能: 计算“表达式1”和“表达式2”的值 值: 如果关系成立,整个关系运算符表达式的值为真,否则为假
逻辑与 and 逻辑与运算表达式: 表达式1 and 表达式2 值: 如果表达式1的值为真,表达式2的值也为真,整体逻辑与运算表达式的值为真 如果表达式1的值为真,表达式2的值也为假,整体逻辑与运算表达式的值为假 如果表达式1的值为假,表达式2的值也为真,整体逻辑与运算表达式的值为假 如果表达式1的值为假,表达式2的值也为假,整体逻辑与运算表达式的值为假 【有一个为假就为假】
num1 = 10 num2 = 20 if (num1 + 1) and (num2 + 1): print("*******************") print(num1, num2)短路原则 表达式1 and 表达式2 and 表达式3 and ······ 表达式3 and ········ and 表达式n
逻辑或 or 逻辑或运算表达式: 表达式1 or 表达式2 值: 表达式1的值为真,表达式2的值为真,逻辑或运算表达式为真 表达式1的值为真,表达式2的值为假,逻辑或运算表达式为真 表达式1的值为假,表达式2的值为真,逻辑或运算表达式为真 表达式1的值为假,表达式2的值为假,逻辑或运算表达式为假 【有一个为真就为真】 短路原则 表达式1 or 表达式2 or 表达式3 or ······ 表达式3 or ········ or 表达式n
num3 = 0 num4 = 1 if num3 or num4: print("%%%%%%%%%%%%%%%")逻辑非 not 逻辑非运算符表达式: not 表达式 值: 如果表达式的值为真,整体逻辑非运算表达式为假 如果表达式的值为假,整体逻辑非运算表达式为真 【颠倒黑白】
if not 0: print("[==----------")in 如果在指定的序列中找到值返回Ture,否则返回False not in 如果在指定的序列中没有找到值返回Ture,否则返回False
is 判断两个标识符是不是引用同一个对象 is not 判断两个标识符是不是引用不同的对象
最高级1,** 2,~ + - 正负号(一元加减) 3, * / % // 4, + - 5, << >> 6, & 7, - | 8, <= < > >= 9,== != 10,= %= += -= //= 11,is is not 12,in not in 13,not or and
能被4整除但是不能被100整除 或者 能被400整除
year = int(input("请输入年份:")) if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): print("yes") else: print("no")