第二章 基本数据类型、运算符和表达式 -2
字符串类型
字符串
- 存储和处理文本信息在计算机应用中十分常见
- 程序中字符串类型用于表示文本信息,是字符的序列表示
- 在Python中,字符串中的文本要用界限符英文的单引号、双引号或三引号 括起来,如:"Python语言"、"您好"等。
>>> print(“《我和我的祖国》”)
《我和我的祖国》
>>> print(“《平凡的世界》”,”路遥”)
《平凡的世界》 路遥
>>> print(‘[email protected]’)
[email protected]
>>>print('950618',"190123112")
950618 190123112
>>> print("210121197906256510")
210121197906266517
>>> print("'蒹葭苍苍,白露为霜。
所谓伊人,在水一方。
溯洄从之,道阻且长。
溯游从之,宛在水中央。"')
蒹葭苍苍,白露为霜。
所谓伊人,在水一方。
溯洄从之,道阻且长。
溯游从之,宛在水中央。
字符串
- 作为同一字符串中的界限符,单引号和双引号不能混用
- 当使用单引号作为界限符时,双引号可以作为字符串的一部分;当使用双引号作为界限符时,单引号可以作为字符串的一部分
>>> print("abc')
SyntaxError: EOL while
scanning string literal
>>> print("I’m Lily")
I’m Lily
>>> print('She said: “good”')
She said: “good”
字符串操作符
操作符 | 描述 |
---|---|
x+y | 连接两个字符串x与y,如"a"+"b"返回"ab" |
x*n或n*x | 将字符串x复制n次,如"a"*3返回"aaa" |
x in s(或x not in s) | 如果x(不)是s的子串,返回True,否则返回False,如"bc"in"abc"返回True |
x[i] | 索引,返回字串符x中的第i个字符 |
x[start:end:step] | 切片,返回索引从start到end中每step所取的子串,其中不包括end |
in也称为成员运算符,即测试一个对象是否为另一个对象的元素;可进行序列(字符串,列表,元组),字典或集合的成员测试。
强调
- 字符串类型数据是有长度的,其长度由字符串中包含的字符个数决定
- Python中字符采用Unicode编码,每个中英文字符和符号长度都是1
- 字符串正向递增序号(索引):最左侧字符序号为0,向右依次递增
- 字符串索引 格式:
<字符串或字符串变量>[索引]
>>> “温故而知新”[0]
‘温’
>>> s1= “温故而知新”
>>> s1[3]
‘知’
>>> s1[5]
Traceback (most recent call last):
File "", line 1, in
str1[4]
IndexError: string index out of range
字符串切片
格式:
<字符串或字符串变量>[start:end:step]
>>> s1= “温故而知新”
>>> s1[0:4:1]
‘温故而知’
>>> s1[0:4:2]
‘温而’
【例2-4】基本的字符串操作符举例
>>> print(“蒹葭苍苍,”+’白露为霜’ ) #将两个字符串相连,返回一个新的字符串
蒹葭苍苍,白露为霜
>>> n=“加油!”
>>> print(n*3) #将“加油”复制3次,返回一个新的字符串
加油!加油!加油!
>>> “油” in n #判断“油”是否是n的子串
True
>>> name=“王小雷”
>>> print(name[0]) #返回字符串name索引为0的字符
王
>>> sj="蒹葭苍苍,白露为霜"
>>> print(sj[0:4]) #返回字符串sj的切片,从第0个字符到第4个字符,不包括第4 个字符的子串
蒹葭苍苍
布尔类型
布尔类型
- 布尔类型数据只有True和False两个值,用来表示逻辑真和逻辑假
>>> x=True
>>> x
True
>>> 5>3
True
>>> 3<5<2
False
>>> “Mike”<”Tom”
True
逻辑运算符
运算符 | 描述 | 实例 |
---|---|---|
and | 与 | True and False 结果是 Flase |
or | 或 | True or False 结果是 True |
not | 非 | not True 结果是 Flase |
【例2-5】求以下表达式的值
>>> 3<4 and 5<7
True
>>> x=10.2
>>> y=7.8
>>> not x >y
False
>>> 3>5 and a>3 #注意,此时并没有定义变量a
False
>>> 3>5 or a>3 #3>5的值为False,所以需要计算后面表达式
NameError: name 'a' is not defined
>>> 3<5 or a>3 #3<5的值为True,不需要计算后面表达式
True
强调:如右框图内例子,逻辑运算有一个称之为短路逻辑的特性:逻辑运算符右侧的表达式有时会被“短路”,实际是为了避免无用地执行代码
【例2-6】写出下列条件。
(1)判断ch是否为小写字母。
(2)判断ch既不是字母也不是数字字符。
答案:
(1)ch>='a' and ch<='z'
(2)not((ch>='A' and ch<='Z') or (ch>='a' and ch<='z') or (ch>='0' and ch<='9'))
类型转换函数
函数 | 说明 |
---|---|
type(x) | 返回x的数据类型 |
int(x) | 将x表示的浮点数、字符串或布尔型转换为一个整数,若x为字符串,则必须是只包含数字的字符串,如"123"才能转换 |
float(x) | 将x表示的整数、字符串或布尔型转换为一个浮点数 |
str(x) | 将x表示的整数、浮点数或布尔型转换为字符串 |
bool(x) | 将x表示的整数、浮点数或字符串转换为布尔值,当x为0、空字符串、空值(None)时返回False,否则返回True |
【例2-7】type( )函数应用举例
>>> type(100)
#返回整数100的数据类型为int整数
>>> type(20.3*5)
#返回表达式20.3*5的数据类型为float浮点数
>>> type("hello world")
#返回字符串“hello world”的数据类型为字符串str
>>> type(True)
#返回True的数据类型为布尔型bool
【例2-8】常用类型转换函数int( )应用举例
>>> int(5.9) # 将浮点数5.9转换为整数(截断取整) ,不四舍五入
5
>>> int(‘123’) # 将字符串(必须是不包含小数点的数字串)转换为整数
123
>>> int('1.23') # 转换的数字串中不可以包含小数点
Traceback (most recent call last):
File "", line 1, in
ValueError: invalid literal for int( ) with base 10: '1.23‘
>>> int(True) # 将布尔型True转换为整数1
1
>>>int(False) #将布尔型False转换为整数0
0
【例2-9】常用类型转换函数float( )应用举例
>>> float(1) # 将整数1转换为浮点数
1.0
>>> float('123') # 将字符串'123'转换为浮点数
123.0
>>> float(‘a’) # 转换的字符串必须是数字串
Traceback (most recent call last):
File "", line 1, in
ValueError: could not convert string to float: 'a‘
>>> float(True) # 将布尔型True转换为浮点数1.0
1.0
>>>float(False) #将布尔型False转换为浮点数0.0
0.0
【例2-10】常用类型转换函数str( )应用举例
>>> str(520) # 将整数520转换为字符串’520’
'520‘
>>> str(520.6) # 将浮点数520.6转换为字符串’520.6’
'520.6‘
>>> str(123e5) # 将浮点数123e5转换为字符串
'12300000.0‘
>>> str(True) # 将布尔型True转换为字符串’True’
'True‘
>>>str(False) #将布尔型False转换为字符串’False’
'False'
【例2-11】常用类型转换函数bool( )应用举例
>>> bool(0)
False
>>> bool(1)
True
>>> bool(10)
True
>>> bool(0.0)
False
>>> bool(0.1)
True
>>> bool(5.21)
True
>>> bool("")
False
>>> bool("abc")
True
>>> bool()
False
>>> bool(None)
False
当其他类型数据转换为布尔类型时,值为0的整数、浮点数、空字符串、空值(None)等被看作是False,其他值均被看作是True
关系运算符
在解决问题时常常需要比较两个对象的大小,Python中的关系运算符如表所示
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 | 5==4 返回 False |
!= | 不等于 | 5!=4 返回 True |
<> | 不等于 | 5<>4 返回 True |
> | 大于 | 4>5 返回 False |
< | 小于 | 4<5 返回 True |
> | 大于等于 | 9>=10 返回 False |
<= | 小于等于 | 9<=10 返回 True |
【例2-12】求以下表达式的值
>>>"acc"<"b"
True
>>>"sunck"=="sunck"
True
>>>"acc"<"bcc"
True
>>>"zaa">"azz"
True
【例2-13】求以下表达式的值
>>> 1<2<3
True
>>> 1<2>3
False
>>> 1<3>2
True
强调:数值比较时按值的大小进行比较,字符串的比较则按ASCII码值的大小进行比较,按照关系运算符左右两边的字符串从第1个字符开始依次对对应位置的字符进行比较
运算符优先级
- Python语言支持多种类型的运算符:数值(算术)运算符、关系(比较)运算符、逻辑运算符、成员运算符、位运算符、身份运算符等。
- 实际应用中, 多种运算符经常混合使用,表达式也由多种运算混合而成,每种运算符之间有优先级顺序,而不同类型运算符间也存在优先级顺序,总体上的优先级顺序为:
逻辑运算符 → 关系运算符 → 算数运算符
(各种类型运算符优先级 ,由低→高)