python学习笔记2补充:运算符与表达式(下)


运算符与表达式(上)【在《python学习笔记:2、print&input与变量和运算符》的第八结】友情链接
python学习笔记:2、print&input与变量和运算符

一、运算符优先级

第一级**
第二级~   +   -(正负号)
第三级*    /    %    //
第四级+   -(加减)
第五级>>    <<
第六级&
第七级^
第八级<=   <    >    >=
第九级==    !=
第十级=   %=    +=    -=    //=
第十一级is    is not
第十二级in    not in
第十三级not    or    and

二、位运算符

问:什么是位运算符?

  答:按位运算符是把数字看作二进制数来进行计算。

1.按位与运算符( & )

  运算方法:相应的位数都为1,则该位的结果是1.否则为0。
  举例:

print(11 & 7)
'''
11的二进制数:1011
7的二进制数:0111
运算过程(相与):
                 1011
                 0111
                 ----
                 0011

0011化为十进制数为3         
所以运算结果为3
'''

2.按位或运算符( | )

  运算方法:两个二进制有一个为1,结果就为1。
  举例:

print(11 | 7)
'''
11的二进制数:1011
7的二进制数:0111
运算过程(相或):
                 1011
                 0111
                 ----
                 1111
         
1111化为十进制数为15
所以运算结果为15
'''

3.按位异或运算符( ^ )

  运算方法:二进制的两位相异时结果为1,相同结果为0。
  举例:

print(11 ^ 7)
'''
11的二进制数:1011
7的二进制数:0111
运算过程(异或):
                 1011
                 0111
                 ----
                 1100
                 
1100化为十进制数为:12         
所以运算结果为12
'''

4.按位取反运算符( ~ )

  运算方法:每个二进制数据位取反,1变0,0变1。
  举例:

print(~10)
'''
10的二进制数:1010
运算结果:-11                
'''
内存中(即计算机中)存储的形式显示为10进制时
100000 101010
~101111 0101最高位为1,故(~10)为负数。因反码=补码-1,得(1111 0101) - 1=1111 0100,取反得1000 1011,即-11。

三、左移运算符和右移运算符

1.左移运算符(<<)

  各二进制位全部左移动若干位,由<<右侧的数字决定,高位丢弃,低位补零。

print(2 << 2)
'''
2的二进制数:0000 0001
向左移动两位:0000 0100
故运算结果为:8
'''

2.右移运算符(>>)

  各二进制位全部右移动若干位,由“>>”右侧的数字决定。

print(13 >> 2)
'''
13的二进制数:0000 1101
向右移动两位:0000 0011
故运算结果为:3
'''

四、关系运算符和关系运算表达式

1.关系运算符

==!=><>=<=

2.关系运算表达式

  关系运算表达式举例:1 + 2 > 3 + 4
  格式: 表达式1 关系运算符 表达式2
  功能:计算“表达式1”和“表达式2”的值。
  :如果关系成立,整个关系运算符表达式的值位真,否则为假。

五、小练习

  输入一个年份判断是否是闰年。
  note:能被4整除但是不能被100整除 或者 能被400整除。

year = int(input())
if (year % 4 == 0 and year % 100 != 0 )or year % 400 == 0:
    print("是闰年")
else:
    print("不是闰年")

六、逻辑运算符

逻辑与and
逻辑或or
逻辑非not

1.逻辑与(and)

  逻辑与运算表达式:表达式1 and 表达式2
  
  如果表达式1的值为真,表达式2的值为真,整体逻辑与运算表达式的值为真。
  如果表达式1的值为真,表达式2的值为假,整体逻辑与运算表达式的值为假。
  如果表达式1的值为假,表达式2的值为真,整体逻辑与运算表达式的值为假。
  如果表达式1的值为假,表达式2的值为假,整体逻辑与运算表达式的值为假。
  即【有一个为假就为假】。

举例:

num1 = 10
num2 = 20
if num1 and num2:
    print("**********")

print(num1, num2)
#编译结果:**********
		   10  20

note:
  短路原则
  表达式1 and 表达式2 and 表达式3 and … and 表达式n
  从左往右如果有一个值为假,则该表达式都为假,后面的都不执行了。

2.逻辑或(or)

  逻辑或运算表达式: 表达式1 or 表达式2
  值:
  表达式1的值为真,表达式2的值为真,逻辑或运算表达式为真。
  表达式1的值为真,表达式2的值为假,逻辑或运算表达式为真。
  表达式1的值为假,表达式2的值为真,逻辑或运算表达式为真。
  表达式1的值为假,表达式2的值为假,逻辑或运算表达式为假。
  即【有一个为真就为真】

举例:

num3 = 0
num4 = 1
if num3 or num4:
    print("|||||||||||")
#编译结果:|||||||||||

note:
  表达式1 or 表达式2 or 表达式3 or … or 表达式n
  有一个为真,表达式为真,后面的都不执行了。

3.逻辑非(not)

  逻辑非运算表达式: not 表达式
  值:
  如果表达式的值为真,整体逻辑非运算表达式为假。
  如果表达式的值为假,整体逻辑非运算表达式为真。
  即【颠倒黑白】

if not 0:
    print("^^^^^^^^^^^^^^^^")
#编译结果:^^^^^^^^^^^^^^^^

七、成员运算符(in 和 not in)

  in: 如果在指定的序列中找到值 返回True,否则返回False。
  not in: 如果在指定的序列中没有找到值 返回True,否则返回False。
  举例:
  假如有一个字符串str1 = "Nice to meet you"要判断“you”是否在这个字符串中的时候我们可以用成员运算符。

str1 = "Nice to meet you"
print("good" in str1)     #输出:True
print("good" not in str1) #输出:False

八、身份运算符(is 和 is not)

is: 判断两个标识符是不是引用同一个对象
is not: 判断两个标识符是不是引用不同的对象

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值