第三章 运算符与表达式
数字对象的运算
“//”代表整除,对int和float都适用,“/”代表正常的除法,有余数
对于复数,区域和截取除法是无效的
>>> 3//2
1
>>> 3/2
1.5
>>> 1.5//0.3
5.0
>>> 1.5/0.3
5.0
>>> 1.5//0.4
3.0
>>> 1.5/0.4
3.75
优先级: 一元运算符 》 乘方 》乘法 》 除法 》加减法
Python的运算符绝大多数都是从左边开始的,只有两个特例,乘方(**)和条件表达式运算符是从右边开始的
>>> 5 or (8 if 5>6 else 0)
5
>>> 5 or 8 if 5>6 else 3
3
// 条件表达式运算符的优先级比逻辑运算符低
关系运算
不允许对复数进行比较
当操作数数同一类型时,比较才有效,如果不相同,会进行强制的进制转换。
逻辑运算
not a:如果a是false,返回1.否则返回0
a and b: 如果a是false,返回a,否则返回b。
a or b: 如果a是false,反馈b,否则反馈a。
总结,逻辑运算就是讲第一个使得该命题最有可能的条件返回出来,同时,逻辑运算的结合性是从左到右的,对于and运算符,只有and左边的值是false的时候,才继续计算右边的数。同理,对于 or 运算符,只有or左边的数是false的时候,才继续计算右边的值。
运算符
左移,右移,按位与(&),按位或(|),按位异或(^)(相同的时候返回0,不同的时候返回1)
~(按位求反)
1.3
>>> 1 if 3 else 4
1
>>> 1 if 0 else 4
4
>>>
运算方式。先计算中间的条件,如果中间的是true,那么计算左边的,否则计算右边的。
条件表达式的结合性
>>> 1 if 3>2 else 2 if 5>6 else 3
1
>>> (1 if 3>2 else 2) if 5>6 else 3
3
从右边开始,到左边结束。
常用函数
input函数
>>> x= input('x= ')
x= 34
>>> x
'34'
>>> x=float(input('x='))
x=34
>>>
>>> x
34.0
print函数
>>> print(1,2,3,sep='%%%',end='\n')// 按照什么分隔开,换行符。
1%%%2%%%3
eval函数
实现从字符串向数字的转换
具体格式 eval(字符串,【字典【,映射】】)
str函数
将数字对象,列表对象,元祖,集合转换为字符串,还可以进行运算。
>>> str(1+2)
'3'
>>> str([1,2,3])
'[1, 2, 3]'
>>> str((1,2,3))
'(1, 2, 3)'
range函数(左闭右开)
>>> x=range(10)
>>> x[2]
2
>>> x[1]
1
>>> x[0]
0
>>> x[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: range object index out of range
enumerate函数
是一个可迭代对象,s返回的是一个迭代器。
数学函数库的函数应用
导入方法:import <库名> 或者 from<库名> import <函数名>
>>> import math
>>> math.sqrt(3)
1.7320508075688772
ceil函数(往上取整)
>>> import math
>>> math.ceil(1.2)
2
>>> math.ceil(-1.2)
-1
trunc函数(往下取整)
>>> math.trunc(1.2)
1
factorial函数
当x是整数的时候,返回x的阶乘,否则返回错误信息
>>> math.factorial(19)
121645100408832000
>>> math.factorial(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: factorial() takes exactly one argument (2 given)
isinf函数,判断是不是超过最大值,如果是,返回true,否则返回false。正常的值的话,-1.7e308~1.7e308。
isnan函数
当x不是数字的时候,返回true,否则返回false(这里的数字指的是在数据范围里面的数,如果超过了这个范围,就不认为是数字了,返回true)。(两个nan之间无法比较)
常用的字符串方法
find函数
>>> s="abcd"
>>> s.find("bc")
1
>>> s.find("bc",2,3)
-1
>>> s.find("bc",1,3)
1
>>> s.find("bc",1,2)
-1
lower函数和islower函数
>>> s="ABCS_12"
>>> s.lower()
'abcs_12'
>>> s.islower()
False
>>> s="avc"
>>> s.islower()
True
split函数
以原字符串s中的分隔符作为拆分依据,拆分字符串s,返回一个列表,当不指定分隔符的时候,说明原字符串中的分隔符是空格。
>>> s="ab,cd,1234,xy"
>>> s.split(sep=',')
['ab', 'cd', '1234', 'xy']
>>> s="ab cd 123 xy"
>>> s.split()
['ab', 'cd', '123', 'xy']
>>>
strip函数
删除字符串两边的空格或者指定的字符
>>> s=" %%123%% "
>>> s.strip()
'%%123%%'
>>> s.strip('%')
' %%123%% '
>>> s
' %%123%% '
>>> s.strip('%')
' %%123%% '
>>> s1=s.strip()
>>> s1
'%%123%%'
>>> s1.strip('%')
'123'
>>> s='%%123%%'
>>> s
'%%123%%'
>>> s.strip('%')
'123'
>>>
fromhex函数,用十六禁止创建一个字节串对象,可以容忍十六禁止数串中的空格。
hex函数,将字节串转换为16进制的数。
decode函数,讲字节串转换为字符串。如果不特指编码参数,就是“UTF-8 ”编码。