3-4 字符串数据类型
字符串(string)数据是指两个单引号(')之间或是两个双引号(")之间任意个数字符的数据,它的数据类型标识是str。在英文字符串的使用中常会发生某字中间有单引号,其实这是文字的一部分,如下所示。
This is James’s ball
如果用单引号去处理上述字符串将产生错误,如下所示。
碰到这种情况,可以用双引号解决,如下所示。
程序实例ch3_13.py:使用单引号与双引号设置与输出字符串数据的应用。
执行结果
3-4-1 字符串的连接
数学的运算符“+”,可以执行两个字符串相加,产生新的字符串。
程序实例ch3_14.py:字符串连接的应用。
执行结果
3-4-2 处理多行字符串
程序设计时如果字符串长度多于一行,可以使用三个单引号(或是三个双引号)将字符串包围即可。
程序实例ch3_15.py:使用三个单引号处理多行字符串。
执行结果
读者可以留意第2行Silicon左边的三个单引号和第3行末端的三个单引号。
3-4-3 转义字符
在字符串使用中,如果字符串内有一些特殊字符,例如,单引号、双引号等,必须在此特殊字符前加上“\”(反斜杠),才可正常使用,这种含有“\”符号的字符称为转义字符(Escape Character)。下表中的Hex值是指ASCII值。
字符串使用中特别是碰到字符串含有单引号时,如果是使用单引号定义这个字符串时,必须要使用此转义字符,才可以正解显示,可参考ch3_16.py的第3行。如果是使用双引号定义字符串则可以不必使用转义字符,可参考ch3_16.py的第6行。
程序实例ch3_16.py:转义字符的应用,这个程序第9行增加“\t”字符,所以“can’t”跳到下一个Tab键位置输出。同时有“\n”字符,所以“loving”跳到下一行输出。
执行结果
3-4-4 强制转换为字符串
str()函数可以强制将数值数据转换为字符串数据。
程序实例ch3_17.py:使用str()函数将数值数据强制转换为字符串的应用。
执行结果
上述字符串相加,读者可以想成是字符串连接,执行结果是一个字符串,所以上述执行结果555是数值数据,222333则是一个字符串。
3-4-5 将字符串转换为整数
在以后的程序设计中也常会发生将字符串转换为整数数据,下面将直接以实例说明。
程序实例ch3_18.py:将字符串数据转换为整数数据的应用。
执行结果
上述执行结果55是数值数据,2233则是一个字符串。
3-4-6 字符串数据的转换
如果字符串含一个字符或一个文字时,可以使用下列函数执行数据的转换。
(1)chr(x):可以返回函数x值的字符,x是ASCII码值。
(2)ord(x):可以返回函数字符参数x的Unicode码值,如果是中文也可返回Unicode码值。如果是英文字符,Unicode码值与ASCII码值是一样的。
程序实例ch3_19.py:这个程序首先会将整数97转换成英文字符a,然后将字符a转换成Unicode码值,最后将中文字“魁”转成Unicode码值。
执行结果
3-4-7 字符串与整数相乘产生字符串复制效果
在Python中可以允许将字符串与整数相乘,结果是令字符串重复该整数次数。
程序实例ch3_20.py:字符串与整数相乘的应用。
执行结果
3-4-8 灵活使用字符串加法和换行字符\n
有时在设计程序时,想将字符串分行输出,可以使用字符串加法功能,在加法过程中加上换行字符“\n”即可产生字符串分行输出的结果。
程序实例ch3_21.py:将数据分行输出的应用。
执行结果
3-4-9 字符串前加r
在使用Python时,如果在字符串前加上r,可以防止转义字符(Escape Character)被转义,可参考3-4-3节的转义字符表,相当于可以取消转义字符的功能。
程序实例ch3_22.py:字符串前加上r的应用。
执行结果
习题
一、判断题
1( ).如果有一个变量x,当执行type(x)后得到float,由此可以判断变量x是整数。
2( ).布尔值的可能值有两种,分别是True和False。
3( ).如果布尔值变量是False,经int(x)强制转换,可以得到1。
4( ).如果字符串太长想分行输出,可以使用三个单引号包围此字符串。
5( ).x值是100.5,经过round(x)处理,可以返回101。
6( ).Python允许执行字符串相加,产生新字符串。也允许字符串相减,产生新字符串。
7( ).ord(x)函数,可以返回x的Unicode值。
二、选择题
1( ).如果有一个整型变量x,当执行type(x)后可以得到什么返回值?
A.int
B.float
C.str
D.bool
2( ).如果有一个浮点型变量x,当执行type(x)后可以得到什么返回值?
A.int
B.float
C.str
D.array
3( ).如果有一个布尔型变量x,当执行type(x)后可以得到什么返回值?
A.int
B.float
C.str
D.bool
4( ).如果有一个字符串变量x,当执行type(x)后可以得到什么返回值?
A.int
B.float
C.str
D.array
5( ).0xAA的十进制值是多少?
A.99
B.100
C.170
D.200
6( ).0b1001的十进制值是多少?
A.3
B.5
C.7
D.9
7( ).0o12的十进制值是多少?
A.8
B.10
C.12
D.3
8( ).下列哪一个转义字符可以让下次输出时跳到下一行输出?
A.\n
B.\f
C.\t
D.\b
9( ).下列哪一个转义字符可以让下次输出时跳到下一页输出?
A.\n
B.\f
C.\t
D.\b
三、实操题
本书所有程序题,语句不完整部分是由读者自行发挥创意,例如,输入或输出格式、测试数据、验证程序正确的数据条数等。
1.请列出下列数值的二进制、八进制、十六进制的值。
(a)100
(b)55
(c)299
(d)399
(e)86
2.请将下列数值转成十进制。
(a)0b11110010
(b)0o76543
(c)0xaaabbb
3.假设a是10,b是18,c是5,请计算下列执行结果,取整数结果。
(a)s=a+b–c
(b)s=2 * a+3–c
(c)s=b * c+20 / b
(d)s=a % c * b+10
(e)s=a ** c–a * b * c