Python基础--运算符和表达式
-
表达式:表达式是操作符和值的结合。
如:2+3
,2,3都是值,而+是操作符。-
数字表达式:1,2,3
-
字符表达式:‘a‘,‘aaa‘
-
运算表达式:1+2,1*2
-
print(1)
print(‘aa‘)
print(1+2)
算数运算符
-
+
:-
加法运算。
-
字符串,列表,元组拼接。
print("加法运算:",4+5)
print("字符串连接:","str"+"ing")
print("列表拼接:",[1,2,3]+[4,5,6])
print("元组拼接:",(1,2,3)+(4,5,6)) -
-
-
:减法运算。print("减法运算:",4-6)
-
*
:-
乘法运算。
-
字符串,列表,元组重复。
print("乘法运算:",4*6)
print("字符串重复:","123"*2)
print("列表重复:",[1,2]*2)
print("元组重复:",(1,)*2) -
-
/
:除法运算,得到精确数值。 -
//
:除法运算,向下取整。print("除法运算:",4/6)# 结果为0.6e-16
print("除法运算:",4//6)# 结果为0 -
%
:取模运算,得到余数。print("取模运算:",4%6)
-
**
:乘方运算。print("乘方运算:",3**2)
赋值运算符
-
=
:赋值运算,把=右边的赋给左边。 -
+=
,-=
,*=
,/=
,//=
,%=
,**=
a=2
print(a)
a+=2
print("a=a+2:",a)
a-=2
print("a=a-2:",a)
a*=2
print("a=a*2:",a)
a/=2
print("a=a/2:",a)
a//=2
print("a=a//2:",a)
a%=2
print("a=a%2:",a)
a**=2
print("a=a**2:",a)
比较运算符
-
==
:比较两个变量是否相等,相等为True,不等为Falsea = [1,2,3,4,5,6]
b =list(set(tuple({1,2,3,4,5,6})))
print("a ? b",a==b) -
>
,<
,>=
,<=
,!=
逻辑运算符
-
0,‘ ‘," ",[],(),{},None
:在布尔上下文中为假,其余任何东西都为真。 -
Python逻辑判断,从左往右解析。
-
逻辑运算符作用:用来判断上下文。
a and b
(上文:表列)a and b(下文:表行) | 真(True) | 假(0|False) |
---|---|---|
真(True) | 结果返回b | 结果返回b |
假(0|False) | 结果返回a | 结果返回a |
-
当a为真,b为真,and前后都为真,则返回下文b的值;
-
当a,b中有一个为真,一个为假,则返回为假的值;
-
当a,b都为假,则返回上文a的值。
# 0,False,空格" ",空元组(),空列表[],空集合|字典{},None为假,其他为真
print("a=True,b=True:",True and True,1 and 3)
print("a=True,b=False:",3 and 0)
print("a=False,b=True:",0 and ‘ss‘)
print("a=False,b=False:",False and ())
总结:and:如果a和b都为真,就返回b的值;如果a和b一真一假,返回假的值;都为假,返回a的值。
a or b
(上文:表列)a or b(下文:表行) | 真(True) | 假(0|False) |
---|---|---|
真(True) | 结果返回a | 结果返回a |
假(0|False) | 结果返回b | 结果返回b |
-
当a为真,b为真,or前后都为真,则返回上文a的值;
-
当a,b中有一个为真,一个为假,则返回为真的值;
-
当a,b都为假,则返回下文b的值。
# 0,False,空格" ",空元组(),空列表[],空集合|字典{},None为假,其他为真
print("a=True,b=True:",True or True,1 or 3)
print("a=True,b=False:",3 or 0)
print("a=False,b=True:",0 or ‘ss‘)
print("a=False,b=False:",0 or ())
总结:or:如果a和b都为真,就返回a的值;如果a和b一真一假,返回真的值;都为假,返回b的值。
位运算符
-
位运算:首先把需要位运算的数值---->二进制数值,然后进行位运算。
-
&
:按位与。两个二进制数对应位都为1,结果位才为1;否则为0。 -
|
:按位或。两个二进制数对应位有一个为1,结果位就为1;其余为0。 -
~
:按位非。一个二进制数对应位为0,结果位就为1;对应位为1,结果位为0。 -
^
:按位异或。两个二进制数对应位相同,结果位为0;对应位不同,结果位为1。 -
<<
:按位左移。按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位补0。-
左移:在数字没有溢出的情况下,左移几位就是这个数乘以2的几次方。
-
-
>>
:按位右移。按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补0,负数补1。-
右移:在数字没有溢出的情况下,右移几位就是这个数除以2的几次方。
-
-
进制转换
-
运算:
-
十进制---->二进制:变成2的n次方,2的n次方(10进制)--->1 0000000000000000(2进制),此时n是几,0就有几个。
-
4(10) = 2*2(10) =2**2(10)=100(2)===>即4(10)==100(2)
-
12(10)=8(10)+4(10)=
2**3(10)+2**2(10)
=1100(2)
-
-
二进制---->十进制:
-
1100(2):
-
1100(2)===>n=4;1100(2)=
1000+100
=1*2**3+1*2**2+0*2**1+0*2**0=8+4+0+0=12(10)
-
-
-
n进制----->十进制:
-
1100(n):
-
1100(n)====>n=4;1100(n)=
1000+100
+1*n**3+1*n**2+0*n**1+0*n**0
=n**3+n**2(10)
-
-
-
-
函数:
-
十进制---->二进制:
bin(n)
,去掉0b前缀。 -
十进制---->八进制:
oct(n)
,去掉0o前缀。 -
十进制---->十六进制:
hex(n)
,去掉0x前缀。 -
i进制----->十进制:
int(n,base=i)
-
a = 4
b = 8
print(bin(a),bin(b))
print("&:",a&b)
print("|:",a|b)
print("~:",~a,~b)
print("^:",a^b)
print(">>:",b>>a)
print("<<:",b<<a) -
成员操作符
-
in
:包含于列表,元组,字典等容器。 -
not in
:不包含于列表,元组,字典等容器。
a = [1,2,3,4,5]
b = {"name":"xwg",2:3}
c = (1,)
d = {1,2,3}
print("in:",1 in a,1 in b,1 in c,1 in d)
print("not in:",0 not in a,0 not in b,0 not in c,0 not in d)
条件操作符
-
is
:是。 -
is not
:不是。
a = [1,2,3,4,5]
b = {"name":"xwg",2:3}
c = (1,)
d = {1,2,3}
print("is:",1 is a[0],1 is b[2],1 is c[0],1 is d)
print("is not:",0 is not a,0 is not b,0 is not c,0 is not d)
-
字典只能访问存在的索引。
-
集合不能使用索引访问。
isinstance
-
isinstance(obj, class_or_tuple)
:判断是否是对应类型,是返回True,否则返回False。-
参数1:需要判断类型的对象。
-
参数2:类型:
str,tuple,list,set,dict,object...
print("string is str?",isinstance(‘string ‘,str))
print("tuple is tuple?",isinstance((1,),tuple))
print("list is list?",isinstance([1,3],list))
print("set is set?",isinstance({1},set))
print("dict is dict?",isinstance({1:1},dict))
print("string is object?",isinstance(‘string‘,object)) -
type
-
type(obj)
:查询对象的类
id
-
id(obj)