赞
踩
(一)运算符优先级和结合性
注意:
&优先于|
and优先于or
(二)记住了运算符类型和他们的优先级,我们开始学习他们的运算规则
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
记住: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
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:
表示判断两个标识符的存储单元是否相同。若相同,则返回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
(四)列表的大小比较
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'
print([2,3,4,5]>[7,1231,11,1])
# False
print(['1',2,'a','b']<['ab'])
# True
print(['a','v','m','u']<['a','v','m','u','d'])
# True
print(['a','v','m','u']<['a','v','m','u'])
# False
不知道你学会了没有?学会的话,可以再评论区告诉一下我哦,嘻嘻!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。