Python 中的整数类型与数学中的整数概念相对应。整数类型没有大小的限制。
在 Python 中整数可以使用四种进制表示。不做任何标识即为十进制数据,如:1010,-345。如果以 0B
或 0b
开头表示二进制数据:如 0B101110,-0b11100。八进制数据以 0O
或 0o
开头,如 0O345,-0o233。十六进制数据以 0X
或 0x
开头,如 0X56E,0Xbc2。不同进制的整数之间可以直接运算。
浮点数类型与数学中的实数概念一致,它是指带有小数点的数字,小数部分可以是 0。与整数类型不同,浮点数类型在 Python 中有大小及精度限制。但对于高精度科学计算以外的绝大部分运算来说,浮点数类型的数值范围和小数精度都足够 “可靠”。
浮点数有 2 种表示方法:十进制形式的一般表示和科学计数法表示。除十进制外,浮点数没有其他进制表示形式。科学计数法使用字母 e
或者 E
作为幂的符号,以 10 为基数。含义如下:<a>e<b> = a×10b。如 1.01e3 值为 1010.0,1.01E-3 值为 0.00101。
浮点数在计算机内部编码是存在误差的,对很多浮点数来说计算机只能使用二进制编码无限趋近于该数据。因此在进行浮点数计算时可能会存在 “不确定尾数” 问题。
>>> 0.1 + 0.2
0.30000000000000004
>>> 0.1 + 0.2 == 0.3
False
如果想解决这个问题,可以使用 round(x, d) 函数,它可以实现对小数进行四舍五入。参数 x 是被执行四舍五入的小数,参数 d 用来确定保留的小数位数。
>>> round(0.1 + 0.2, 1) == 0.3
True
不确定尾数问题通常发生在 10-16 的位置,也就是在一个十进制数的小数点后 16 位通常才会出现此问题。在进行浮点数的运算和比较时,round() 函数有时将十分有用。
复数类型对应于数学中的复数。在众多编程语言中,Python 对其提供了很好的支持。
Python 语言中,复数可以看作是二元有序实数对 (a, b),表示为:a+bj
,其中,a 是实部,b 是虚部。虚数部分通过后缀 j
或者 J
来表示。需要注意,当 b 为 1 时,1 不能省略,因为 1j 表示复数,而 j 则表示 Python 程序中的一个变量。
下面是在 Python 中表示复数的一些例子:
>>> 34+2.5j
(34+2.5j)
>>> 2e-5+3.2j
(2e-05+3.2j)
如果想获取一个复数 z 的实部和虚部,可以使用 z.real
和 z.imag
,Python 将以浮点数的形式返回复数的实部或虚部。
>>> (1.23e4+5.67e4j).real
12300.0
>>> (1.23e4+5.67e4j).imag
56700.0
>>> 1.23e4 + 5.67e4j.imag
69000.0
书写很大的数时,可以使用下划线将其中的数字分组,使其更清晰易读:
>>> unverse_age = 140_0000_0000
14000000000
当打印使用下划线定义的数时,Python 不会打印其中的下划线。此外,将数字分组时,不管是将几位分成一组,都不会影响最终的值。在 Python 看来,1000 和 1_000、10_00 没什么不同。这种表示方法适用于整数和浮点数,但只有 Python 3.6 和更高的版本支持。
Python 中的运算操作符有:+
、-
、*
、/
、//
、%
、**
。
+
、-
、*
、/
分别用来进行加、减、乘、除运算,其中 +
、-
也可以用来表示正负号。除法运算的结果总是以浮点数形式给出,即便这两个数都是整数且能整除。例如 10 / 2 的结果是 5.0,而不是 5。
//
用来进行整数除运算,该运算将给出除法运算结果的整数部分,但不会进行四舍五入,而是直接给出整数部分。
%
用于取余运算,如 10 % 3 的结果是 1,2 % 5 的结果是 2。
**
用于幂运算,如 3 ** 2 的结果是 9,3 ** 0.5 则相当于是在计算根号 3。
以上的二元操作符还有与之对应的增强型赋值操作符,包括:+=
、-=
、*=
、/=
、//=
、%=
、**=
。
在 Python 中允许不同类型的数据同时运算,运算过程会自动进行类型扩展。具体的扩展原则是:整数和浮点数混合运算,运算结果是浮点数;整数之间运算,产生结果类型与操作符相关,/
运算的结果一定是浮点数;整数或浮点数与复数运算,运算结果是复数。
>>> 1010 / 10
101.0
>>> 1010.0 // 3
336.0
>>> 1010.0 % 3
2.0
>>> 10 - 1 + 1j
(9+2j)
除了使用操作符,还可以使用数值运算函数来完成指定计算。
abs(x):返回 x 的绝对值,如果 x 是复数,则返回复数的模。
divmod(x, y):同时获得商和余数,并以元组的形式返回运算结果。
pow(x, y[, z]):先计算 x 的 y 次幂然后模以 z,并返回最终的运算结果。如果没有参数 z 的话便只进行幂运算,和 ** 运算符的效果一样。
round(x[, d]):按四舍五入规则保留指定的小数位数。如果不加入参数 d 的话便只保留整数位。
max(x1, x2, … xn):返回数字序列中的最大值。
min(x1, x2, … xn):返回数字序列中的最小值。
format() 方法用于解决字符串和变量同时输出时的格式安排问题,其基本使用格式是:
<模板字符串>.format(<逗号分隔的参数>)
其中,模板字符串是一个由字符串和槽组成的字符串,用来控制字符串和变量的显示效果。槽用大括号 {}
表示,对应 format() 方法中逗号分隔的参数。
>>> "{} 曰:学而时习之,不亦说乎。".format("孔子")
'孔子曰:学而时习之,不亦说乎。'
如果模板字符串有多个槽,且槽内没有指定序号,则按照槽出现的顺序分别对应 format() 方法中的不同参数。
>>> "{} 曰:学而时习之,不亦 {}。".format("孔子", "说乎")
'孔子曰:学而时习之,不亦说乎。'
也可以通过 format() 参数的顺序在模板字符串槽中指定序号,序号从 0 开始编号。
>>> "{1} 曰:学而时习之,不亦 {0}。".format("说乎", "孔子")
'孔子曰:学而时习之,不亦说乎。'
如果需要打印花括号 {}
本身,则应该使用双重花括号 {{}}
进行转义,这样解释器才不会将其和作为槽位使用的花括号混淆。
>>> "{1} 曰:{{学而时习之,不亦 {0}}}。".format("说乎", "孔子")
'孔子曰:{学而时习之,不亦说乎}。'
format() 方法中模板字符串的槽除了包括参数序号,还可以包括格式控制信息:{<参数序号>:<格式控制标记>}。
其中,冒号为引导符号,<格式控制标记> 用来控制参数显示时的格式。<格式控制标记> 包括:<填充><对齐><宽度>,
<.精度><类型> 6 个字段,这些字段都是可选的,可以组合使用。
<填充>、<对齐>和 <宽度> 主要用于对显示格式的规范。<填充> 指明了用于填充的单个字符,默认以空格字符填充。对齐字段分别使用 <
、>
和 ^
三个符号表示左对齐、右对齐和居中对齐。如果不指定对齐方式的话,数字将采用右对齐,字符串则采用左对齐。宽度指当前槽设定的输出字符宽度,如果该槽参数的实际值比宽度设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则按照指定的对奇方式在宽度内对齐。
>>> s = "天道酬勤"
>>> "{:25}".format(s)
'天道酬勤 '
>>> "{:^25}".format(s)
' 天道酬勤 '
>>> "{:>25}".format(s)
' 天道酬勤'
>>> "{:*^25}".format(s)
'**********天道酬勤***********'
>>> "{:+^25}".format(s)
'++++++++++天道酬勤+++++++++++'
>>> "{:^1}".format(s)
'天道酬勤'
剩下的三个字段 ,
<.精度><类型> 用于对数值本身的规范。逗号 ,
为数字的千位分隔符,适用于整数和浮点数。<.精度> 由小数点 .
开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。小数点可以理解为对数值的有效截断。
>>> "{:,}".format(1234567)
1,234,567
>>> "{:.2f}".format(12345.67890)
'12345.68'
>>> "{:>25.3f}".format(12345.67890)
' 12345.679'
>>> "{:.5}".format("逝者如斯夫,而未尝往矣。")
'逝者如斯夫'
<类型> 表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括 6 种:b
表示输出整数的二进制方式;c
表示输出整数对应的 Unicode 字符;d
表示输出整数的十进制方式;o
表示输出整数的八进制方式;x
表示输出整数的小写十六进制方式;X
表示输出整数的大写十六进制方式。
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,?,425,651,1a9,1A9'
对于浮点数类型,输出格式包括 4 种:e
表示输出浮点数对应的小写字母 e 的指数形式;E
表示输出浮点数对应的大写字母 E 的指数形式;f
表示输出浮点数的标准浮点形式;%
表示输出浮点数的百分形式。
>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
>>> "{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14)
'3.14e+00,3.14E+00,3.14,314.00%'
Python 3.6 引入了 f 字符串,可以使用 f 或 F 替换 format() 函数。与 format() 方法相比,f 字符串的语法更加简洁明了。示例如下:
first_name = 'ada'
last_name = 'lovelace'
full_name = f'{first_name} {last_name}'
print(f'Hello, {full_name.title()}!')
------------------------------------------------------------------------
Hello, Ada Lovelace!
针对字符串,Python 提供了三个字符串操作符,分别是:+
、*
、in
。
x + y
用于连接 x、y 两个字符串;x * n
或 n * x
将会复制 n 次字符串 x;x in s
将会判断 x 是否是 s 的字串,并返回对应的布尔值。
除了使用操作符来处理字符串,Python 也提供了一些字符串处理函数。
len(x):返回字符串 x 的长度,也可返回其他组合数据类型的元素个数。
str(x):返回任意类型 x 所对应的字符串形式。
chr(x):返回 Unicode 编码 x 对应的单字符。
ord(x):返回单字符 x 对应的 Unicode 编码。
bin(x):返回整数 x 对应的以“0b”为前缀的二进制字符串。
oct(x):返回整数 x 对应的以“0o”为前缀的八进制字符串。
hex(x):返回整数 x 对应的以“0x”为前缀的十六进制字符串。
方法也是一个函数,但调用方式不同。函数采用 func(x)
方式调用,而方法则采用 <a>.func(x)
形式调用。方法仅作用于前导对象 <a>。Python 提供了以下字符串处理方法。
str.lower():返回字符串 str 的副本,全部字符小写。
str.upper():返回字符串 str 的副本,全部字符大写。
str.title():返回字符串 str 的副本,每个单词的首字母大写。
str.split(sep):返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串,省略 sep 时以空格分隔。
>>> "Python is an excellent language.".split()
['Python', 'is', 'an', 'excellent', 'language.']
>>> "Python is an excellent language.".split('a')
['Python is', 'n excellent l', 'ngu', 'ge.']
>>> "Python is an excellent language.".split('an')
['Python is ', ' excellent l', 'guage.']
str.count(sub):返回 sub 子串出现的次数。
>>> "Python is an excellent language.".count('a')
3
str.replace(old, new):返回字符串 str 的副本,所有 old 子串被替换为 new,old 和 new 的长度可以不同。
>>> "Python is an excellent language.".replace('a', '#')
'Python is #n excellent l#ngu#ge.'
>>> "Python is an excellent language.".replace('Python', 'C')
'C is an excellent language.'
str.center(width, fillchar):字符串居中函数,返回长度为 width 的字符串,str 处于新字符串中心位置,两侧新增字符采用单个字符 fillchar 填充。当 width 小于字符串长度时,返回 str。省略 fillchar 时以空格填充。
>>> "Python".center(20, "=")
'=======Python======='
>>> "Python".center(2, "=")
'Python'
str.strip(chars):从字符串 str 中去掉在其左侧和右侧 chars 中列出的字符。chars 是一个字符串,其中列出的每个字符都会被去掉。如果省略 chars,将删除字符串开头和结尾的空白。空白泛指任何非打印字符,如空格、制表符和换行符。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
>>> "==Python==".strip()
'==Python=='
>>> "==Python==".strip('=')
'Python'
>>> "==Python==".strip('=n')
'Pytho'
与 strip() 方法类似,Python 还提供了 lstrip() 和 rstrip()。它们将分别从从字符串 str 中去掉在其左侧和右侧 chars 中列出的字符。
str.join(iter):将 str 字符串插入 iter 变量的元素之间,形成新的字符串副本。其中,iter 是一个具备迭代性质的变量。
>>> "".join('PYTHON')
'P Y T H O N'
>>> ",".join('12345')
'1,2,3,4,5'
>>> ",".join(['1', '2', '3', '4', '5']) # 列表中的元素必须都是字符串类型
'1,2,3,4,5'
上述的字符串方法执行后并不会改变原本的字符串,如果要使用处理后的字符串,可以将操作后的结果关联到新的变量。
Python 语言提供 type(x) 函数对变量 x 进行类型判断,适用于任何数据类型。
>>> type(123)
<class 'int'>
>>> type(1+2j)
<class 'complex'>
数值运算操作符可以隐式地转换输出结果的数字类型。例如,两个整数采用运算符 /
进行除法运算时输出的数字类型是浮点数。
此外,通过内置的数字类型转换函数可以显式地在数字类型之间进行转换。
int(x):将 x 转换为整数,x 可以是浮点数或整数字符串。在将浮点数转换成整数时,不会进行四舍五入,而是直接去除小数部分。
>>> int(34.7)
34
>>> int('123')
123
>>> int('23.0') # 错误的写法,字符串内的数字必须是整数
>>> int(float('23.0')) # 正确的写法
23
float(x):将 x 转换为浮点数,x 可以是整数或字符串。
>>> float(89)
89.0
>>> float('89')
89.0
str(x):将 x 转换为等值的字符串类型。
>>> str(90)
'90'
>>> str(91.0)
'91.0'
>>> str([1, 2, 3])
'[1, 2, 3]'
第一课趣味二进制——修改植物大战僵尸数据 任务介绍 学习目标 知识需求 需求工...
在项目开始之前我们可以先去了解一下IConfiguration接口,.Net Core Web应用程序...
首先插件配备好了,写一个HTML测试一下 首先创建一个文件夹,创建一个HTML 文件...
JSP spring boot / cloud 使用filter防止XSS 一.前言 XSS(跨站脚本攻击) 跨站脚...
文章目录 前言 本周最重要的五件事情 本周搞砸的四件事情 本周的四个启发 前言 ...
一.前言 .NET Core 是一个通用开发平台,由 Microsoft 和 GitHub 上的 .NET 社区...
IT之家2月18日消息外媒 Windows Latest 报道,微软正在与谷歌合作进行一项新的改...
1.ajax跨域传递值是所需要的回传的类型为jsonp $.ajax({url: "http://.......",t...
昨天刚学了html的一些内容,就迫不及待的想做个京东上面的搜索条,结果做是做出...
2 月 18 日消息 据外媒 Windowslatest 报道,在预览版本中发现的参考资料表明,...