Python基础实例教程(微课版)
上QQ阅读APP看书,第一时间看更新

2.2 数与字符串

Python数与字符串

世界上的数据有很多,按照数据的特点不同,可以将它归属到某个或某些类型中。

在Python中,数据的类型基本上可以分为两种,即Python自带数据类型和自定义类型。

数与字符串都是Python非常常见的自带的数据类型,所以可以从数与字符串这两种简单的数据类型开始逐步认识Python的数据类型。

2.2.1 数的概念及应用实例

想必从很小的时候开始,我们的数学课本上就出现了数。在Python中,数指的是一系列的数字。

按照不同数字的特点,可以进一步将数这种数据类型进行细分,分为整数、小数等。当然,在Python中有些细分类型的叫法不同。

Python中数的细分类型主要有4种,分为有符号整型(int)、长整型(long)、浮点型(float)、复数型(complex)。

特别注意:在Python 3.X中,已经取消了长整型这种自带的数据类型,也就是说,在Python 3.X中是没有long型的,long型可以在Python 2.X中使用。

例如:0、1、-1、1009、-290这些都是int型,878871、-909901、2345671这些都是long型(在Python 3.X中没有该自带类型的数据),2.7788、3.277、8.88这些都是float型,4+2j、-9+20j、56+7j这些属于complex型。

如果希望在Python中查看当前的数据类型,可以通过type()函数实现,比如输入以下程序:

>>> a=19
>>> b=19.0
>>> a
19
>>> b
19.0
>>> type(a)
<class 'int'>>>> type(b)
<class 'float'>

在上面的程序中,定义了a、b两个变量,两个变量的值都是数,然后可以通过type()打印(输出)对应数据的类型。

可以看到,输出typea得到的结果为<class 'int'>,可以知道a的数据类型为int,即整型,同样可以知道b的数据类型为float,即浮点型。

如果希望强行地转换数据的数据类型,可以通过以下格式实现:

数据类型名(数据)

所以,如果希望将整型数据a强行转换为浮点型数据,可以接着上面的程序继续输入如下程序:

>>> a=float(a)
>>> type(a)
<class 'float'>

可以看到,此时已经将整型数据a通过a=floata强行转换为了浮点型数据。

2.2.2 字符串的概念及应用实例

字符串也是一种非常常见的Python自带的数据类型。

在Python中用引号引起来的字符集称为字符串,比如,'hello'、"my Python"、"2+3"等都是字符串。

Python中的字符串使用的引号可以是单引号、双引号和三引号。但是它们的使用是不同的,接下来将通过实例为大家介绍。

单引号的使用方法和双引号的使用方法基本上一致,先看以下单引号的使用,输入如下所示的程序:

#单引号 
c1='2height' 
print(c1)

在上面的程序中,通过单引号定义了一个名为c1的字符串变量,对应的值为字符串'2height',此时程序输出结果为:

2height

假如希望定义一个字符串变量,值为“It is a "dog"!”,此时,不能使用双引号定义。因为该字符串中就含有双引号,如果外层再用双引号包含,则会出现冲突,所以如果要定义该字符串变量,可以通过单引号去定义,如下所示:

#单引号 
c2='It is a "dog"!' 
print(c2)

此时的输出结果为:

It is a "dog"!

双引号的使用方法基本上与单引号的使用方法一致,比如,同样可以使用双引号定义一个名为c1、对应的值为字符串2height的字符串变量,如下所示:

#双引号 
c1="2height" 
print(c1)

此时的程序输出结果与上面使用单引号定义时的输出结果一致,为:

2height

如果希望定义一个值为“It's a dog!”的字符串,同样不能使用单引号去定义。因为该字符串中含有单引号,在其外层使用单引号会引发冲突,此时可以使用双引号去定义该字符串,如下所示:

#双引号 
c2="It's a dog!" 
print(c2)

输出结果为:

It's a dog!

可以看到,已经成功将该字符串定义好并赋值给了变量c2。

三引号的使用方法跟单引号、双引号的使用方法略有不同。

三引号的组成方式可以是3个双引号的组合:

"""数据"""

也可以是3个单引号的组合:

'''数据'''

三引号可以实现单引号、双引号的功能,也可以使用三引号定义刚才使用单引号、双引号定义的数据,如下所示:

#三引号 
c1="""2height""" 
print(c1) 
c2='''It is a "dog"!''' 
print(c2) 

此时的输出结果如下:

2height
It is a "dog"!

可以看到,已经成功定义好字符串2height和It is a "dog"!。

除此之外,三引号比单引号、双引号的功能稍强。三引号可以直接定义多行的字符串数据,如下所示:

#三引号
c1="""he
she 
my 
you are 
hello""" 
print(c1)

此时可以输出以下结果:

he 
she 
my 
you are 
hello 

上面的结果为一个字符串而不是多个,只不过该字符串是一个多行字符串。

而如果想使用双引号或者单引号直接定义如上的多行字符串,是不行的。

三引号除了具有定义字符串的功能外,还常常用于注释。在Python中,如果希望注释某些程序代码(即让某些程序代码不起作用,或者让程序的某些片段只起一个对程序解释说明的作用),可以使用#进行。

比如程序有如下代码:

print("abc") 
print("def")

如果只希望让上述程序的第一行不起作用,注释掉第一行即可,写成如下形式:

#print("abc") 
print("def") 

注释后,程序的第一行就不起作用了,此时的输出结果如下(只会执行第二行):

def

由于注释可以让程序里面的某些区域不起作用,所以常常可以使用注释对程序进行解释说明,如上面的单引号使用的相关程序中,就在程序的开始使用“#单引号”说明了该程序的作用,即做了注释。

在Python中,#只能让其注释的当前行中#后面的内容不起作用。如果需要注释掉多行程序,此时就需要在这多行程序的每一行前面均加上#,在程序代码非常多的时候略显麻烦。

所以,如果需要注释多行程序,可以使用三引号进行。

如下所示,以下两段程序的功能是一样的。

程序段1:

#注释多行程序 
a=9 
#b=10 
#c=a+b
#c=c-a+b-a 
#b=1 
print(a) 
#print(b) 
#print(c) 

程序段2:

a=9 
''' 
b=10 
c=a+b 
c=c-a+b-a
b=1 
''' 
print(a) 
#print(b) 
#print(c)

程序执行的结果都是:

9

可以看到,如果希望注释多行程序,使用三引号非常方便。当然三引号也可以注释单行程序。同时,三引号注释法和#注释法可以混合使用,如上面的程序段2中就是这样的。

接下来大家再来思考这样一个问题:假如需要使用双引号或者单引号定义一个在程序里面写成多行的字符串,应该如何实现?

比如需要将一个字符串“Where are you”写成多行,如果写成下面这种形式,程序的执行就会出错,因为单引号和双引号不能直接定义写成多行的字符串。

#错误的写法 
a="Where are
you" 
print(a) 

此时可以在程序的行末使用连接符\实现,如下所示:

#正确的写法 
a="Where are \ 
you" 
print(a) 

此时的程序输出结果:

Where are you

可以看到,此时已经能够正确地输出。在这里,有两点需要注意:第一,如果需要使用单引号和双引号定义写成多行的字符串,可以通过在行末加上连接符实现;第二,这种写法与三引号写法的作用是不一样的,如果上面的多行字符串用三引号定义,则该字符串为多行字符串,而如果使用单引号或双引号加上连接符定义,此时定义的字符串本质上仍然是单行字符串,这一点希望能够区分开来。

接下来继续思考另外一个问题:在Python里面,如果需要输出一个“It's a dog!”这样的字符串,有两种方法。一种方法是用刚才的单引号、双引号间插使用的方法,即print "It's a dog!",用双引号来包含有单引号的字符串。那么还有其他的方法么?

此时,可以使用转义符\解决这个问题。写一个新程序,如下所示:

#转义符 
a='It\'s a dog!'
print(a) 

此时程序的输出结果为:

It's a dog!

可以看到,由于转义符的作用,It\'s里面的单引号可以原样输出了。

在本小节中,主要为大家介绍了字符串的概念与使用实例。而字符串的使用实例中,重点在于各种引号的使用,希望大家能够掌握。