Python之数字字符串类型
内容可能有点多,但需要记忆的不多。
数字类型
查询计算机支持的python浮点数相关信息
import sys
sys. float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
复数类型
在python中形如:1.23+2j
注意:‘12e10+45e+12j’,python认为实部是’12’,虚部是’45e+12’ 取实部:复数.real
取虚部:复数.imag
num1 = 12e10 + 45e + 12j
num2 = 12e10 + 45e - 12j
num3 = 12e10 + 45e12j
print ( "num1.real:" , num1. real)
print ( "num1.imag:" , num1. imag)
print ( "num2.real:" , num2. real)
print ( "num2.imag:" , num2. imag)
print ( "num3.real:" , num3. real)
print ( "num3.imag:" , num3. imag)
print ( '----------------------' )
num4 = 1 + 2j
print ( "num4.real:" , num4. real)
print ( "num4.imag:" , num4. imag)
num1.real: 120000000000.0
num1.imag: 45000000000000.0
num2.real: 120000000000.0
num2.imag: 4.5e-11
num3.real: 120000000000.0
num3.imag: 45000000000000.0
----------------------
num4.real: 1.0
num4.imag: 2.0
内置数值运算符
运算 符号 描述 加法 + 整数相加为整数,一旦有浮点数参与结果就为浮点数 减法 - 整数相减为整数,一旦有浮点数参与结果就为浮点数 乘法 * 整数相加为整数,一旦有浮点数参与结果就为浮点数 除法 / 运算结果必为浮点数 整除 // 运算结果必为整数 取模 % 运算结果必为整数 幂运算 ** x**y,表示求x的y次幂,整数相运算整数,一旦有浮点数参与结果就为浮点数
a = 12
b = 2
print ( "a + b =" , a+ b)
print ( "a - b =" , a- b)
print ( "a * b =" , a* b)
print ( "a / b =" , a/ b)
print ( "a // b =" , a// b)
print ( "a % b =" , a% b)
print ( "a**b =" , a** b)
a + b = 14
a - b = 10
a * b = 24
a / b = 6.0
a // b = 6
a % b = 0
a**b = 144
内置数值运算函数
函数 描述 abs(x) 求x的绝对值 divmod(x, y) 返回元组(x/y, x%y) pow(x, y[, z]) 返回(xy)%z,如果没有传入z则返回x y round(x[,ndigits]) 对x四舍五入,取ndigits位小数 max(x1, x2,…) 返回最大值 min(x1, x2,…) 返回最小值
print ( abs ( - 12 ) )
print ( divmod ( 12 , 4 ) )
12
(3, 0)
内置的数字类型转换函数
函数 描述 int(x) 将x转换为int型,x可以是浮点数或字符串 float(x) 将x转换为浮点数,x可以是整数或字符串 complex(re[, im]) 将数re作为实部,数im作为虚部,不传入im则默认其为0,只传re时可为数或字符串,一旦传入im,两者只能是数
print ( float ( "12" ) )
print ( complex ( '12' ) )
print ( complex ( 10 , 2 ) )
12.0
(12+0j)
(10+2j)
字符串类型
python字符串以Unicode编码存储。
字符串类型的表示
单引号字符串:可以将双引号作为字符串的一部分。 双引号字符串:可以将单引号作为字符串的一部分。 三引号字符串:可以将单引号、双引号作为字符串的一部分,并且可以换行。
s1 = 'hello "abc"'
s2 = "hi l'l"
s3 = '''
line 1
line 2
'''
print ( s1)
print ( s2)
print ( s3)
hello "abc"
hi l'l
line 1
line 2
索引
正索引:从字符串的最左位字符向右,初位为0,向右递增1。 负索引:从字符串最右位开始,初位为-1,向左递减1。 使用:字符串[索引]
,返回字符串对应索引的字符。
切片
形式:字符串[起点索引:终点索引+1:步长]
,不带步长(这时第二个冒号可以省略)则默认为“1“。正负索引都可用,不过顺序始终是从左到右。不带起点索引默认为“0“,不带终点索引默认为“字符串长度+1“。
s = 'Hello world!'
print ( s[ 0 ] , s[ - 1 ] )
print ( s[ 0 : - 1 ] )
print ( s[ 0 : 6 : 2 ] )
H !
Hello world
Hlo
对字符串的其他操作
拼接并生成新字符串:str1 + str2
,将str2拼接在str1后,并以此生成新字符串。 判断是否为子串:ch in str
,如果ch为str的子串,返回True,否则返回False。 重复自我拼接生成新字符串:str * n
或n * str
,n个str字符串拼接,并以此生成一个新字符串。
str1 = 'abc'
str2 = 'def'
print ( str1+ str2)
print ( 'a' in str1)
print ( str2* 3 )
print ( 3 * str1)
abcdef
True
defdefdef
abcabcabc
特殊的格式化控制字符
控制字符串 功能 \a 蜂鸣,响铃 \b 回退一格 \f 换页 \n 换行 \r 回车,光标回到本行行首 \t 水平制表 \v 垂直制表 \0 NULL
import time
print ( type ( hex ( 10 ) ) )
for i in range ( 50 ) :
print ( "\rprocess:[{0}{1}]{2}%" . format ( '*' * ( i+ 1 ) , '-' * ( 49 - i) , i* 2 + 2 ) , end= '' )
time. sleep( 0.1 )
<class 'str'>
process:[**************************************************]100%
format方法格式化字符串
其中“{}”称为槽,完全形式为“{参数序号:格式控制标记}”,参数序号从“0“开始,对应参数列表从左到右的参数。
格式控制标记顺序及其内容如下: 顺序::填充 对齐 宽度 数字千位分隔符 .精度 类型
其中对齐:左对齐<
,右对齐>
,居中对齐^
。 数字千位分隔符只能是,
。
类型:
标记 类型 b 输出整数二进制 c 输出整数对应的Unicod字符 d 输出整数十进制 o 输出整数八进制 x 输出整数小写十六进制 X 输出整数大写十六进制 e 输出科学计数法表示,小写 E 输出科学计数法表示,大写 f 输出浮点数的标准浮点形式 % 输出浮点数的百分形式
print ( 'abs{:+<10,.2f}' . format ( 12100 ) )
abs12,100.00+
内置字符串处理函数方法
求长度、编码转换等,见“附录:内置的字符串处理函数方法“。
char = 'A'
print ( ord ( char) )
65
附录:math库解析p71
常数 数学表示 描述 math.pi
π
\pi
π 圆周率 math.e
e
e
e 自然对数 math.inf
∞
\infty
∞ 正无穷大 math.nan 非浮点数标记
函数 数学表示 描述 math.fabs(x) $ x math.fmod(x, y) x%y 返回x与y的模 math.ceil(x)
⌈
x
⌉
\lceil x \rceil
⌈ x ⌉ 向上取整 math.floor(x)
⌊
x
⌋
\lfloor x \rfloor
⌊ x ⌋ 向下取整 math.factorial(x)
x
!
x !
x ! 返回x的阶乘,如果x是小数或负数,返回ValueError math.gcd(a, b) 返回a与b的最大公约数 math.frexp(x)
x
=
m
×
2
e
x=m\times{2^e}
x = m × 2 e 返回(m, e),当
x
=
0
x=0
x = 0 时返回(0.0, 0) math.ldexp(x, i)
x
×
2
i
x\times{2^i}
x × 2 i 返回
x
×
2
i
x\times{2^i}
x × 2 i 的运算值,math.frexp(x)的反函数 math.modf(x) 返回x的小数和整数部分,(小数, 整数) math.trunc(x) 返回x的整数部分 math.copysign(x, y) $$ x math.isclose(a, b) 比较a,b相似性 math.isfinite(x) 当x不是无穷大或NaN,返回True;否则返回False math.isinf(x) 当x为无穷大,返回True;否则返回False math.isnan(x) 当x是NaN,返回True;否则返回False
函数 数学表示 描述 math.pow(x, y)
x
y
x^y
x y 返回x的y次幂 math.exp(x)
e
x
e^x
e x 返回e的x次幂 math.sqrt(x)
x
\sqrt{x}
x
返回x的平方根 math.log(x[, base])
log
b
a
s
e
x
\log _{base}{x}
log b a s e x 如果没有传入base,则默认base为e math.loglp(x)
l
n
(
1
+
x
)
ln(1+x)
l n ( 1 + x ) math.log2(x)
log
2
x
\log_{2}{x}
log 2 x math.log10(x)
log
10
x
\log_{10}{x}
log 1 0 x
函数 数学表示 描述 math.degrees(x) 角度x的弧度值转换为角度值 math.radians(x) 角度x的角度值转换为弧度值 math.hypot(x, y)
x
2
+
y
2
\sqrt{x^2 + y^2}
x 2 + y 2
返回(x, y)到原点的距离 math.sin(x)
s
i
n
x
sin x
s i n x 返回x的正弦函数值,x是弧度值 math.cos(x)
c
o
s
x
cos x
c o s x 返回x的余弦函数值,x是弧度值 math.tan(x)
t
a
n
x
tan x
t a n x 返回x的正切函数值,x是弧度值 math.asin(x)
a
r
c
s
i
n
x
arcsin x
a r c s i n x 返回x的反正弦函数值,x是弧度值 math.acos(x)
a
r
c
c
o
s
x
arccos x
a r c c o s x 返回x的反余弦函数值,x是弧度值 math.atan(x)
a
r
c
t
a
n
x
arctan x
a r c t a n x 返回x的反正切函数值,x是弧度值 math.atan2(y, x)
a
r
c
t
a
n
y
x
arctan \frac{y}{x}
a r c t a n x y 返回
y
x
\frac{y}{x}
x y 的反正切函数值,x是弧度值 math.sinh(x)
s
i
n
h
x
sinh x
s i n h x 返回x的双曲正弦函数值 math.cosh(x)
c
o
s
h
x
cosh x
c o s h x 返回x的双曲余弦函数值 math.tanh(x)
t
a
n
h
x
tanh x
t a n h x 返回x的双曲正切函数值 math.asinh(x)
a
r
c
s
i
n
h
x
arcsinh x
a r c s i n h x 返回x的反双曲正弦函数值 math.acosh(x)
a
r
c
c
o
s
h
x
arccosh x
a r c c o s h x 返回x的反双曲余弦函数值 math.atanh(x)
a
r
c
t
a
n
h
x
arctanh x
a r c t a n h x 返回x的反双曲正切函数值
函数 数学表示 描述 math.erf(x)
2
π
∫
o
x
e
−
t
2
d
x
\frac{2}{\sqrt\pi}\int_o^x{e^{-t^2}}{\rm d}x
π
2 ∫ o x e − t 2 d x 高斯误差函数,应用于概率统计等领域 math.erfc(x)
2
π
∫
o
∞
e
−
t
2
d
x
\frac{2}{\sqrt\pi}\int_o^\infty{e^{-t^2}}{\rm d}x
π
2 ∫ o ∞ e − t 2 d x 余补高斯误差函数,math.erfc(x)=1 - math.erf(x) math.gamma(x)
∫
o
x
x
t
−
1
e
−
x
d
x
\int_o^x{x^{t-1}}e^{-x}{\rm d}x
∫ o x x t − 1 e − x d x 伽玛函数,即欧拉第二积分函数 math.lgamma(x)
l
n
(
g
a
m
m
a
(
x
)
)
ln(gamma(x))
l n ( g a m m a ( x ) ) 伽玛函数的自然对数
附录:内置的字符串处理函数方法
内置的字符串处理函数
函数 描述 len(s) 返回字符串s的长度,即s所含字符,每个中英字符均占一位 str(x) 返回任类型x所对应的字符串 chr(x) 返回Uncoded编码x对应的单字符 ord(x) 返回单字符x对应的Uncoded编码 hex(x) 返回整数x对应的小写十六进制表示(字符串) oct(x) 返回整数x对应的小写八进制表示(字符串)
内置的字符串处理方法
在下表中,以“str”表示字符串。
方法 描述 str.lower() 返回str的副本,字母全为小写 str.upper() 返回str的副本,字母全为大写 str.islower str的字母全为小写时,返回True;否则返回False。 str.isprintable() str的字符全部可被打印时,返回True;否则返回False。 str.isnumeric() str的字母全为数字时,返回True;否则返回False。 str.isspace() str的字符全为空白时,返回True;否则返回False。 str.endswith(suffix[,start[,end]]) str[start[:end]]以suffix结尾时返回True;否则返回False。 str.startswith(suffix[,start[,end]]) str[start[:end]]以suffix开头时返回T否则返回False。 str.split(sep=None, maxsplit=-1) 返回一个列表,由str以sep为分隔符切割的子串作为元素,maxsplit是最大切割次数 str.count(sub[,start[, end]]) 返回str[start[:end]]中字符串sub出现的次数 str.replace(old, new[, count]) 返回str的副本,所有的子串old都被字符串new 替换,count指定替换次数 str.center(width[, fillchar]) 字符串居中函数,返回str的副本,以str作为居中内容,width是生成的字符串长度,fillchar是生成字符串的填充字符 str.strip([chars]) 返回str的副本,删去str左右侧中出现在chars中的字符 str.zfill(width) 返回str的副本,长度为width,不足部分在左边补“0“ str.format() 常用的字符串格式化 str.join(iterable) 以str作为拼接符,以可第二代对象iterable的元素(这些元素必须是字符串)作为拼接对象,拼接为一个字符串,并返回