Python项目实战从入门到精通
上QQ阅读APP看书,第一时间看更新

2.2 数和字符串

Python可以处理任意大的整数,包括负整数。浮点数也就是小数,之所以称为浮点数,是因为按照科学计数法表示时,一个浮点数的小数点位置是可变的。整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法也是精确的。),而浮点数运算则可能会有四舍五入的误差。字符串就是一系列字符,在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。

阿短的前行目标

● 能描述并解释Python的数据类型。

● 能对Python不同的数据类型进行数据处理。

2.2.1 数据类型

Python中常用的数据类型有整型、浮点型、布尔类型和字符串。我们常常把整型、浮点型和布尔类型归类为简单数据类型。对简单数据类型进行组合,可以得到复合数据类型,列表、元组和字典等复合数据类型不在本节讲述范围内,在后续的教程中会将各复合数据类型进行单独讲解。

1.整型

整数与数学上写法一致,但有时为了表示方便,也用十六进制表示整数。可对整数进行加、减、乘、除四则运算。

2.浮点型

Python将带小数点的数字统称为浮点数。对于浮点数,通常情况下没有什么特别的地方,不过,有时候会遇到非常大或者非常小的浮点数,这时通常会使用“科学计数法”的方式来表示。注意,浮点数与整数不同,它存在上限和下限,如果超出了上下限范围,就会出现溢出问题。

3.字符串

字符串就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。单引号本身也是一个字符,需要用双引号括起来,比如“Iˈm OK”包含的字符是I、ˈ、m、空格、O和K这6个字符。

2.2.2 训练1:初识数字

通过前面的学习,阿短对Python的数据类型有了一定的了解,下面编程猫将带领阿短编写相关的活动案例。

编程猫

“在编程中,我们经常使用数字来记录游戏得分、表示可视化数据、存储Web应用信息等。Python根据数字的用法以不同的方式处理它们。鉴于整数使用起来最简单,下面就先来看看Python是如何管理它们的。”

1.认识整数

在Python中,可对整数做加(+),减(-),乘(∗),除(/)四则运算。在交互模式shell中操作,编码如下。

也可以做乘方运算,用“∗∗”表示。

在Python运算中,可以像数学运算一样用()表示运算的优先级。

2.认识浮点数

浮点数和整数一样,也具有相同的加、减、乘、除四则运算,乘方运算以及算术优先级。

2.2.3 训练2:初识字符串

编程猫

“简单地了解了基本的数的关系之后,接下来就让我们进一步了解关于字符串的知识。”

1.显示字符串

在Python中ˈˈ或""引出的都是字符串。

由此可以看出,字符串可以是一堆乱码、一个英文单词或者是中文字符。但是如何输入Iˈm OK这一句英文呢?

我们可以看出单引号本身也是一个字符,如果Iˈm OK这个字符串还用ˈˈ引出,Python将无法识别,这时我们需要用"" 引出这句英文字符串。

2.去掉字符串两头的空格

有的开发人员习惯输入结果的时候添加空格,或者在输入前添加空格,这其实不是好习惯。当然,也有特殊的情况,比如在使用split()方法的某种情况下,可能会导致某个字符串前后有空格。

这些空格有时候是没用的,Python会帮助程序员把这些空格去掉,方法如下。

● S. strip():去掉字符串的左右空格。

● S. lstrip():去掉字符串的左边空格。

● S. rstrip():去掉字符串的右边空格。

例如:

特别注意,原来的值没有变化,而是返回了一个新的结果。

3.拼接字符串

用“+”能够连接字符串,此外还有其他方法。

“+”不是什么情况下都能够实现的。比如,将列表(关于列表,后续会详细介绍,它是另外一种类型)中的每个字符(串)元素拼接成一个字符串,并且用某个符号连接,如果用“+”,就比较麻烦了。

用字符串的join()方法拼接字符串,是一个好的选择。

这种拼接,是不是很简单呢?

不过,需要注意的是,join()是字符串的方法,不是哪个列表(如[ˈwwwˈ,ˈitdifferˈ,ˈcomˈ])的方法,具体来说是连接字符串符号(也是字符串)的方法,而列表是它的参数。

字符串的方法还有很多,这里不能把所有方法都介绍,但读者完全可以仿照上述流程研究其他方法。

4.字符编码

字符编码,也称为字集码,是把字集中的字符编码指定为集合中某一对象,以便文本在计算机中存储和通过通信网络传递。常见的例子包括将拉丁字母表编码成莫尔斯电码和ASCII。其中,ASCII将字母、数字和其他符号编号,并使用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式储存。

1)ASCII码。计算机采用二进制,这是毋庸置疑的。20世纪60年代,是计算机发展的早期,那时候美国定制了一套字符编码,解决了英语字符与二进制之间的对应关系,被称为ASCII码。

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套计算机编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。由于万维网使得ASCII广为通用,直到2007年12月,才逐渐被Unicode取代。

英语用128个符号编码就够了,但计算机不仅仅用于英语,如果用来表示其他语言,128个符号是不够的。于是其他一些国家,都在ASCII码的基础上,发明了更多编码,比如汉字里面有了简体中文编码方式GB2312,使用两个字节表示一个汉字。

2)Unicode。在编码方式上由于有很多种,于是就出现了“乱码”。比如在电子邮件中,如果发信人和收信人使用的编码方式不一样,那么收信人就只能看乱码了。于是Unicode应运而生,看它的名字也应该知道,就是要统一符号的编码。

Unicode(译称万国码、国际码、统一码、单一码)是计算机科学领域里面的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得计算机可以用更为简单的方式来呈现和处理文字。

Unicode伴随着通用字符的标准而发展,同时也以书本的形式对外发表。Unicode至今仍不断增修,每个新版本都加入了更多新的字符。Unicode涵盖的数据处理视觉上的字形、编码方法、标准的字符编码,还包含了字符特性,如大小写字母。但Unicode也不是完美的,仍需继续改进,具体请查阅《字符编码笔记:ASCII,Unicode和UTF-8》

3)UTF-8。Unicode的实现方式称为Unicode转换格式——UTF的含义。UTF-8是在互联网上使用最广的一种Unicode的实现方式。虽然它仅仅是Unicode的实现方式之一,但几乎一统江湖了。

UTF-8是一种针对Unicode的可变字符长度编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字符仍与ASCII兼容,这使得原来处理ASCII字符的软件不用或只需做少部分修改即可继续使用。因此,它逐渐成为电子邮件、网页、其他储存或发送文字的应用中优先采用的编码。

所以,我们在以后Python的程序开发中,都要使用UTF-8编码。

除了UTF-8之外,或许还会遇到gbk或gb2312,特别是用Windows的开发人员。

看完了一些关于编码的基本知识,再来看看Python中的编码问题。

5.字符编码

在Python 3中所有字符串都是Unicode字符串,可以用下面的方式来查看当前环境的编码格式。

因为Python 3支持的是Unicode,所以每个汉字都对应一个编码数字。如果在Python 2中,汉字就无法通过ord()得到其编码数字了。

在Python中,字符串有一个encode方法,查看帮助信息如下。

使用encode()方法能够将Unicode编码的字符串转换为其他编码,默认是UTF-8。关于编码问题,就介绍到这里吧。在实际编程中,如果遇到编码问题,可以在网络中搜索解决办法。在以后的编程中,我们通常要先声明coding:utf-8。

2.2.4 训练3:happy birthday

编程猫

“我们经常需要在消息中使用变量的值。例如,庆祝别人的生日,可以在交互模式shell中编写类似于下面的代码。”

这是一个类型问题,意味着Python无法识别你使用的信息,在这个示例中使用了一个整数(int)的变量,但它不知道该如何解读这个值,可能是数值23,也可能字符2和3。

像上面这样在字符中使用整数时,而且希望Python调出这个整数作为字符串。此时可调用函数str(),该函数可以将非字符串转换为字符串。