Python3学习之路(5)运算符

运算符详细分主要有:算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、布尔运算、位运算符、成员运算符、身份运算符、运算符优先级。此处只针对常用运算符进行讲述。

算术运算符

Python支持加(+)、减(-)、乘(*)、除(/)、浮点、幂运算(**)、取余(%)、除后取整(//)、等。
运算符两边无需空格。
Python运算符合数学的运算优先级别一样,使用()表示优先运算。
Python同样支持负数运算如同数学中使用减号-表示负数

#加(+)减(-)
>>> 2+2-1-5
-2
#乘(*)
>>>-4*(2+3)
-20
#除(/),Python中除法会产生一个十进制浮点数
>>>(10+2)/(2-3)
-12.0
#浮点,Python最多只能表示小数点后16位,大于16位的数将被忽略。浮点数可用小数或除法来创建。

#小数点后第二位开始的最右边0将被忽略
>>>0.500000000000000
0.50
>>>3.4
0.75

#浮点数和整数运算中,Python会自动将整数变为浮点数
>>>6*7.0
42.0
>>>4+1.65
5.65
#幂运算
>>>2**5
32
>>>9**(1/2)
3.0
#除后取整
>>>20//6
#取余
>>>1.25%0.5
0.25

字符串运算符

字符串可用加号“+”进行连接,产生新的字符串;也可使用乘(*)表示将指定字符串重复几次(仅限正整数);但字符串与字符串间不能相乘。
另外,将字符串和数字相加会产生错误,因为字符串类型不一样

#字符串与字符串相加
>>> 'a'+'b'
'ab'
>>> print('first'+','+"second")
first,second
#字符串和数字相加会产生错误
>>> 2+'2'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
#字符串重复次数,但字符串不得乘以浮点数,以及负数
>>> print("erbiao "*6)
erbiao erbiao erbiao erbiao erbiao erbiao

比较运算符

以下假设变量a为10,变量b为20:

|运算符|描述|实例|

  • | :-: | -:
    |==|等于 - 比较对象是否相等|(a == b) 返回 False。|
    |!=|不等于 - 比较两个对象是否不相等|(a != b) 返回 True。|
    |>|大于 - 返回x是否大于y|(a > b) 返回 False。|
    |<|小于 - 返回x是否小于y。|(a < b) 返回 True。|
    |>=|大于等于 - 返回x是否大于等于y。 |(a >= b) 返回 False。|
    |<=|小于等于 - 返回x是否小于等于y。 |(a <= b) 返回 True。|
a = 21
b = 10
c = 0
>>> if(a!=b):
		print("a not equl b")

a not equl b

布尔运算

Boolean,包含两个值“True”和“False”。有两种方式可以声明数据类型是布尔型。一种直接声明,一种将值使用比较运算符产生,如使用“==”、“!=”等。

>>> my_boolean=True
>>> my_boolean
True
>>> 2==3
False
>>> "erbiao"=='erbiao'
True
>>> 7>5
True
>>> 4<=3
False
>>> 7<7.0
False
>>> 7<=7.0
True

赋值运算符

|运算符|描述|实例|

  • | :-: | -:
    |=|简单的赋值运算符|c = a + b 将 a + b 的运算结果赋值为 c|
    |+=|加法赋值运算符|c += a 等效于 c = c + a|
    |-=|减法赋值运算符|c -= a 等效于 c = c - a|
    |*=|乘法赋值运算符|c *= a 等效于 c = c * a|
    |/=|除法赋值运算符|c /= a 等效于 c = c / a|
    |%=|取模赋值运算符|c %= a 等效于 c = c % a|
    |**=|幂赋值运算符|c **= a 等效于 c = c ** a|
    |//=|取整除赋值运算符|c //= a 等效于 c = c // a|
>>> x=2
>>> x+=3
>>> print (x)
5
>>> b=2
>>> b*=3
>>> print (b)
6
#也可用来修改字符串
>>> x="erbiao"
>>> x+=" hello"
>>> print (x)
erbiao hello

>>> uc='a'
>>> uc*=3
>>> print (uc)
aaa

逻辑运算符

逻辑运算符主要有三种情况:与(and)、或(or)、非(not)。那么在同时使用很多逻辑运算符时,一般建议使用小括号()明确各小段逻辑间的关系。以下假设变量 a 为 10, b为 20:

|运算符|逻辑表达|描述|实例|

  • | :-: | :-:
    |and(与)|x and y|x和y都为True,结果为True,否则为False|(a and b) 返回 20。|
    |or(或)|x or y|x或y任意一个为True则结果为True|(a or b) 返回 10。|
    |not(非)|not x|反转逻辑状态,即x为True,结果False,反之为True|not(a and b) 返回 False|

例:#提示用户输入用户名密码,在验证阶段,用户名密码输入正确输出登陆成功,否则输出用户名或密码错误

#!/usr/bin/env python

import getpass

name = input("请输入用户名:")
pwd = getpass.getpass("请输入密码:")

if name == "root" and pwd == "root":
        print ("登录成功")
else:
        print ("登录失败")

成员运算符

|运算符|描述|实例|

  • | :-: | :-:
    |in|若在指定的序列中找到值返回 True,否则返回 False。|x 在 y 序列中 , 若 x 在 y 序列中返回 True。|
    |not in|若在指定的序列中没有找到值返回 True,否则返回 False。|x 不在 y 序列中 , 若 x 不在 y 序列中返回 True。|
例:
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
 
if ( a in list ):
   print ("1 - 变量 a 在给定的列表中 list 中")
else:
   print ("1 - 变量 a 不在给定的列表中 list 中")
 
if ( b not in list ):
   print ("2 - 变量 b 不在给定的列表中 list 中")
else:
   print ("2 - 变量 b 在给定的列表中 list 中")
 
# 修改变量 a 的值
a = 2
if ( a in list ):
   print ("3 - 变量 a 在给定的列表中 list 中")
else:
   print ("3 - 变量 a 不在给定的列表中 list 中")

以上实例输出结果:

1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 不在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中

运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

|运算符|描述|

  • | :-: | :-:
    |**|指数(最高优先级)|
    |~ + -|按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)|
    |* / % //|乘,除,取模和取整除|
    |+ -|加法减法|
    |>> <<|右移,左移运算符|
    |&|位 'AND'|
    |^ ||位运算符|
    |<= < > >=|比较运算符|
    |<> == !=|等于运算符|
    |= %= /= //= -= += *= **=|赋值运算符|
    |is,is not|身份运算符|
    |in,not in|成员运算符|
    |and or not|逻辑运算符|

三元运算符

若a>b的结果为真,h="变量1",若为假,h="变量2"

a = 1
b = 2
h = ""

h = a-b if a>b else a+b

print(h)
name='alex'
name='linhaifeng'
res='SB' if name == 'alex' else 'shuai'		#"if name == 'alex'"部分为True则结果为(或执行)'SB',为False则执行"else 'shuai'"
print(res)									#将最终执行的结果保存在res变量,并打印


#另一个例子
>>>l=['鸡蛋%s' %i for i in range(10) if i >5]
>>>print(l)
['鸡蛋6', '鸡蛋7', '鸡蛋8', '鸡蛋9']


posted @ 2018-07-16 17:50  二表  阅读(185)  评论(0)    收藏  举报