python 运算符实例详解(简单又易懂)

python 所有运算符实例详解(简单又易懂)

(一)运算符优先级和结合性
在这里插入图片描述注意:
&优先于|
and优先于or

(二)记住了运算符类型和他们的优先级,我们开始学习他们的运算规则

  • 三目运算符: 表达式1 if 表达式2 else 表达式3
    (表达式1可以是运算表达式,也可以是函数)
    若表达式2为真,则返回表达式1的值 ,反之,则返回表达式3的值。
x=3
y=10
result = x+y if x>y else x-y
print(result)
# -7

还可以利用三目运算符设计简单的匿名函数:

func=lambda x,y:x*y if x>y else x%y # 利用三目运算符构造了一个匿名函数
print(func)
print(type(func)) # 通过lambda 构造了一个简单方便的匿名函数func()
print(func(4,10))
# <function <lambda> at 0x000001B813EECE50>
# <class 'function'>
# 4
  • 逻辑运算符(and和or和not)
    and 逻辑与(一假全假):
    逻辑表达式为x and y。当 x 为 False时,x and y返回 False,否则它返回y 的计算值。

记住:0为假,非0为真

print(0 and 0)
print(0 and 10)
print(90 and 10)
print(-1 and 0)
# 0
# 0
# 10
# 0

or 逻辑或(一真全真):
逻辑表达式为x or y。当x为true、y为false时,得到的结果为true。
只有当x与y都为false时,得到的结果才为false。
如果 x 是非 0,它返回 x 的值,否则它返回y的计算值。

print(0 or 0)
print(0 or 10)
print(10 or 29)
print(10 or 0)
# 0
# 10
# 10
# 10

not 逻辑非:
逻辑表达式为not x。当x为true时,得到的结果为false,当x为false时,得到的结果为true。

print(not 1)
print(not 0)
# False
# True
  • **& 、 | 、^、~、<<、>> **:
    -(1)这里说明一下:&、|和上面的and、or的联系:
 a & b
 a | b
 a and b
 a or b

如果a,b是数值变量, 则&, |表示位运算, and,or则依据是否非0来决定输出。
如果a, b是逻辑变量(比较大小表达式或者True,False), 则两类的用法基本一致
** - (2)这里讲一下python多进制类型及其转换函数**

1、二进制数字由0和1组成,我们使用0b或0B前缀表示二进制数

print(int(0b1010))
#10

2、使用bin()函数将一个数字转换为它的二进制形式

print(bin(0xf))
#0b1111

3、八进制数由数字0-7组成,用前缀0o或0O表示8进制数,
使用oct()函数将一个数字转换为它的八进制形式

print(oct(8))
#0o10

4、十六进数由数字0-15组成,用前缀0x或者0X表示16进制数,
使用hex()函数将一个数字转换为它的十六进制形式

print(hex(16))
#0x10
print(hex(15))
#0xf

- (3) 接下来让我们开始正题

& 按位与:
将两个二进制数按位进行逻辑与,对应位都为1时则结果为1,否则为0,最后得出结果。
例如,a = 10,二进制数为a = 1010,b = 8,二进制数为b = 1000,按位与的结果为a & b = 1000,换成十进制结果为8。

| 按位或:
将两个二进制数按位进行逻辑或,对应位中有一个为1则结果为1,两个都为0则结果为0,最后得出结果。
例如,a = 12,二进制数为a = 1100,b = 8,二进制数为b = 1000,则其按位或的结果为a | b = 1100,换成十进制结果为12。

^ 按位异或:
将两个二进制数按位进行逻辑异或,对应位不同结果为1,相同为0,最后得出结果。
例如,a = 12,二进制数为a = 1100,b = 8,二进制数为b = 1000,则其按位异或的结果为a ^ b = 0100,换成十进制结果为4。

~ 按位取反:
将一个二进制数按位进行取反,当前位为1,则取反为0,当前位为0,则取反为1,最后得出结果。
例如,a = 18,二进制数为a = 10010,则其按位取反的结果为~a = 01101,换成十进制结果为13。

<< 左移动:
将一个二进制数进行左移,就是按二进制形式把所有的数字全部向左移动对应的位数,移动时高位舍弃,低位补零。
例如,a = 3,二进制数为a = 0011,则其向左移动两位的结果为a << 2 = 1100,换成十进制结果为12。

**>>**右移动:
将一个二进制数进行右移,就是按二进制形式把所有的数字全部向右移动对应的位数,移动时低位舍弃,高位补符号位。
例如,a = 4,二进制数为a = 0100,则其向右移动两位的结果为a >> 2 = 0001,换成十进制结果为1。

  • **身份运算符(is、not is) **:

运算符is:
表示判断两个标识符的存储单元是否相同。若相同,则返回true,否则返回false。例如:

a = 10
b = 10
print(a is b)
# True

运算符is not:
表示判断两个标识符的存储单元是否不相同。若不相同,则返回true,否则返回false。例如:

a = 10
b = 10
print(a is not b)
# False

(三)字符串的大小比较
Ascll码大小:
空格 < 数字 < [’ : ’ ’ ; ’ ‘<’ ‘=’ ‘>’ ‘?’ ‘@’]< 大写字母< 小写字母
当字符全部是英文字母的大写(或小写),字符的大小顺序和它们在字典中的顺序相同: A<B<C…<a<b<c…

比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,所以不再继续比较,结果就是后面个串大。
再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。
试着做下面的题:

print('ABC'>'ACDE')
print('9'>'a')
print('ABC1'>'ABC123')
print('1ll'<'1Ll')
# False
# False
# False
# False

由汉字组成的字符串可以参加比较。如李红 < 王军。它们的大小实际是由其拼音构成的字符串的大小来决定的。

print('李红'<'王军')
# True

(四)列表的大小比较

  1. 如果比较的元素是同类型的,则比较其值,返回结果。
    print([1,2,'a','b']<['ab']) # 注意系统会报错:(因为1是数字,‘ab’是字符串,他们不能比较`)
# Traceback (most recent call last):
#   File "D:\Pycharm\Charm1.1.运算符\运算.py", line 182, in <module>
#     print([1,2,'a','b']<['a'])
# TypeError: '<' not supported between instances of 'int' and 'str'
  1. 如果两个元素不是同一种类型,则检查它们是否是数字。
 print([2,3,4,5]>[7,1231,11,1])
# False
  1. 如果是数字,执行必要的数字强制类型转换,然后比较。如果有一方的元素是数字,则另一方的元素"大"(数字Ascll码是"最小的")否则,通过类型名字的字母顺序进行比较。
print(['1',2,'a','b']<['ab'])
# True
  1. 如果有一个列表首先到达末尾,则另一个长一点的列表"大"。
 print(['a','v','m','u']<['a','v','m','u','d'])
# True
  1. 如果我们用尽了两个列表的元素而且所 有元素都是相等的,那么结果就是个平局。
 print(['a','v','m','u']<['a','v','m','u'])
# False

不知道你学会了没有?学会的话,可以再评论区告诉一下我哦,嘻嘻!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白夜的月亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值