字符串的基本操作
索引 index
Python字符串是不可以改变的字符序列
索引取值语法:
字符串[整数表达式]
s = 'ABC'
s[0] # A
s[1] # B
s[2] 或 s[1+1] # B
说明:
Python的序列都可以用索引来访问序列中的对象
Python序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1
Python序列的反向索引是从-1开始的,-1代表最后一个,-2代表倒数第二个,
以此类推。第一个是- len(s)
示例:
s = "ABCDE"
print(s[1]) # B
print(s[4]) # E
print(s[-1]) # E
print(s[-5]) # A
print(s[100]) # IndexError 越界
练习:
写程序输入一个字符串,打印字符串中的如下内容
1、打印这个字符串的第一个字符
2、打印这个字符串的最后字符
3、如果这个字符串的长度是奇数,打印中间这个字符
注:求字符串长度的函数是len(s)
切片 slice
作用:
从字符串序列中取出相应的元素重新组成一个新的字符串
语法
字符串[(开始索引b):(结束索引e)(:(步长s))]
注:
小括号()括起来的部分代表可省略
说明:
开始索引是切片开始切下的位置,0代表第一个元素,1代表第二个元素
,-1代表最后一个元素....
结束索引是切片的终止索引(但不包括终止点)
步长是切片每次获取完当前元素后移动的方向和偏移量
1.没有步长,相当于步长为1(默认为1)
2.当步长为正整数时,取正向切片:
开始索引默认为0,结束索引默认是最后一个元素的下一个位置
3.当步长为负整数时取反向切片:
反向切片时,默认的起始位置为最后一个元素,终止位置是第一个
元素的前一个位置
示例:
s = "ABCDE"
s[1:4] # 'BCD'
s[:] # 'ABCDE'
s[:4] # 'ABCD'
s[1:1] # ''(空)
s[4:2] # ''(空)
s[0:5:2] # 'ACE'
s[4:0:-2] # 'EC'
s[::-2] # 'ECA'
s[::-1] # 'EDCBA'
练习:
1、写一个程序,输入一个字符串,把字符串的第一个字符和最后一个字
符去掉后,打印出处理后的字符串
2、写程序,输入任意一个字符串,判断这个字符串是否是回文,回文是指
中心对称的文字,如:
上海自来水来自海上
ABCCBA
Python3中能用于字符串的函数:
len(x) 返回字符串长度
max(x) 返回字符串编码值最大的字符
min(x) 返回字符串编码值最小的字符
字符串的编码转换函数:
ord(c) 返回一个字符c的unicode编码值
chr(i) 返回i这个值所对应的字符
示例:
x = ord('A') # x = 65(十进制的方式)
c = chr(66) # c = 'B'
练习:
1、写一个程序,输入一个字符串,如果字符串不为空,则把第一个字符的
编码值打印出来
2、写一个程序,输入一个整数(0-65535),打印这个数值所对应的字符
整数转换为字符串的函数:
bin(i) 将整数转换为二进制字符串
oct(i) 将整数转换为八进制字符串
hex(i) 将整数转换为十六进制字符串
字符串构造函数:
str(obj) 将对象转换为字符串
示例:
'123' + 456 # 出错
'123' + str(456) # '123456'
python3中常用的字符串的方法(method)
方法的调用语法:
对象.方法名(方法传参)
示例:
'abc'.isalpha() # 返回True
'123'.isalpha() # 返回False
123.isalpha() # 出错
'hello'.find("he") # 0 代表查找索引的开始位置
s = " ABCD "
s2 = s.strip() # 'ABCD'(去掉空白部分)
s = '\n\t\r a b c d \n\n\n\r'(\n等属于空白字符)
s2 = s.strip() # 'abcd'
s = '#####AB####'
s2 = s.strip("#") # 'AB'
replace方法后面换成空字符可以变成删除的作用
方法见文档:
python_base_docs_html/str.html
练习:
输入一个字符串:
1、判断您输入的字符有几个空格
2、将原字符串的左右空白字符去掉,打印出有效的字符个数
3、判断您输入的是否是数字,如果是数字,判断用户输入的数字
是否大于100
字符串格式化表达式
作用:
生成一定格式的字符串
运算符:
%
语法格式:
格式化字符串 % 参数值
格式化字符串 % (参数值1,参数值2,参数值3,...)
说明:
格式化字符串中以%开头的字符为占位符,占位符的位置将用参数值替换
示例:
fmt = "name: %s,age: %d"
s2 = fmt % ("Tarena",15)
fmt = "age: %d"
s3 = fmt % 18
格式化字符串中的占位符类型码
占位符和类型码 含义
%s 字符串,使用str(x),函数转换
%r 字符串,使用repr(x),函数转换
%c 整数转为单个字符(相当于执行chr函数)
%d 十进制整数
%o 八进制整数
%x 十六进制整数(字符a-f小写)
%X 十六进制整数(字符A-F大写)
%e 指数形浮点数(e小写)如:2.9e8
%E 指数型浮点数(E大写)如:2.9E8
%f,%F 浮点十进制数
%g,%G 十进制形式浮点或指数浮点自动转换
%% 等同于一个字符
占位符和类型码之间的格式语法
% [ - + 0 宽度.精度 ] 类型码
- 左对齐(默认是右对齐)
+ 显示正号
0 左侧空白位置补0
宽度 整个数据输入的宽度
精度 保留小数点后多少位(默认为6位)
示例:
"%10d" % 123 # ' 123'(总共占10个字符,并右对齐)
"%+010d" % 123 # '+000000123'
"%-10d' % 123 # '123 '
"%10s" % "abc" # ' abc'
"%05d" % 123 # '00123'
'%+05d' % 123 # '+0123'
'%7.3f' % 3.1415926535 # ' 3,142'
练习:
输入三行文字,让这三行文字依次以20个字符的宽度右对齐显示
如:
请输入第一行:hello world
请输入第二行:abcd
请输入第三行:aaaaaaa
打印结果如下:
hello world
abcd
aaaaaaa
做完上题后思考:
能否以最长的字符串的长度进行右对齐显示(左侧填充空格)
循环语句:
whille 语句
for 语句
问题:输入一个整数n,写程序打印如下n行文字:
这是第一行
这是第二行
...
这是第n行
while语句:
作用:
根据一定条件,重复执行一条语句或多条语句
语法:
while 真值表达式:
语句块1(此部分语句可能会重复执行多次)
else:
语句块2
说明:
1.先执行真值表达式,得到布尔值True或False
2.如果真值表达式的值为True,则执行语句块1,然后再次返回到
第一步,重复进行测试真值表达式的值
3.如果真值表达式的值为False,则执行else子句部分的语句块2,
然后结束此while语句的执行
注:else子句部分可以省略(同if语句类似)
示例见:
while.py
练习:
1.输入三行文字,让这三行文字在一个方框内居中显示
如输入:
hello!
I'm studing python
I like python!
显示如下:
+------------------+
| hello! |
|I'm studing python|
| I like python! |
+------------------+
2.用while循环语句打印1-20的整数(可以打印多行)
3.用while循环语句打印1-20的整数,打印在一行显示每个数字
之间用一个空格分隔
1 2 3 4 5 6 ... 18 19 20
4.用while循环打印1-20的整数,每行打印5个,打印4行,如:
1 2 3 4 5
6 7 8 9 10
...
5.输入一个整数n,打印一个宽度和高度都为n个字符的长方形
如:
请输入:4
打印:
####
# #
# #
####
如:
请输入:6
打印:
######
# #
# #
# #
# #
######