一、对于昨天字符串的补充
3.字符串(str)
空串: '' ,"" (没有内容);
空格字符串:' ' ," " (只有空格)
普通字符:'a','1',',','嗯'
编码字符: \uXXXX (XXXX 为十六进制数,每一位为 0 至 9 或者 a 至 f )
4.字符的编码:
a - z :97 - 122;
A - Z :65 - 90;
二、获取字符串的字符
1.获取单个字符
字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
下标是从 0 开始依次增加的,0 对应的是第一个字符;也可以是从 -1 开始,依次减小的,-1代表最后一个字符。
例如:'halo' --> h 对应的下标为:0 ;a 对应的下标为:1 ;l 对应的下标为:2 ;o 对应的下标为:3 ;(从 0 开始)
h 对应的下标为:-4 ;a 对应的下标为:-3 ;l 对应的下标为:-2 ;o 对应的下标为:-1 ;(从 -1 开始)
a.获取单个字符的语法:
字符串[下标] -----获取字符串中指定下标对应的字符
b.说明:
字符串 -----只要结果是字符串的表达式都可以
例如:字符串字面量,字符串变量
[] -----固定写法
下标 -----需要获取的字符对应的下标;注意:这里的下标不能越界。
例如:
result = 'halo 绝世小丑!'[5] # 获取字符串中下标是 0 的字符,并且赋值给变量 result
print(result) # 输出:绝
# print('halo'[10]) # 报错! IndexError: string index out of range
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/02.get char 12.27.py"
绝
Process finished with exit code 0
2.获取部分字符(字符串切片)
a.语法:
方法一:
字符串[ 开始下标 : 结束下标 : 步长 ]
-----规则:从开始下标开始,获取到结束下标 前 为止。每次下标的下标值加上步长去获取下一个。
b.说明:
字符串 -----只要结果是字符串的表达式都可以
开始下标、结束下标 -----是下标值就行(这里的下标越界后,不会报错)
步长 -----必须是整数(正数和负数都行);如果步长是正数,是从开始下标开始,从前往后获取;
如果步长是负数,是从开始下标开始,从后往前获取;
c.注意:不管怎么取,结束下标里的字符是取不到的。
当步长为正,要求开始下标对应字符的位置,必须在结束下标对应字符的位置之前,否则结果为空串。
当步长为负,要求开始下标对应字符的位置,必须在结束下标对应字符的位置之后,否则结果为空串。
例如:
str1 = 'halo 绝世小丑!'
print(str1[0:20:1]) # 结束下标越界,可以取完所有字符。 结果为:halo 绝世小丑!
print(str1[0:7:2]) # 从前往后跳着取。 结果为:hl 世
print(str1[-1:-6:-1]) # 从后往前取。 结果为:!丑小世绝
print(str1[-1:-6:-3]) # 从后往前跳两位取。 结果为:!世
print(str1[0:-2:1]) # 从前取到倒数第二个之前。 结果为:halo 绝世小
print(str1[-1:0:-2]) # 从后往前跳一位取。 结果为:!小绝oa
# 练习:获取一个字符串中,所有下标是奇数的字符(顺序获取)
str2 = str(input('请输入一个字符串(不超过100个字符):'))
print('下标是奇数的字符为:', str2[1:100:2])
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/02.get char 12.27.py"
halo 绝世小丑!
hl 世
!丑小世绝
!世
halo 绝世小
!小绝oa
请输入一个字符串(不超过100个字符):asd
下标是奇数的字符为: s
Process finished with exit code 0
方法二(省略步长):
字符串[ 开始下标 : 结束下标 ] -----默认步长为 1 ,从开始下标到结束下标前为止,一个一个的取。
方法三(省略开始下标和结束下标):
字符串[ : 结束下标 : 步长 ] -----省略开始下标,当步长为正数,从字符串的第一个字符开始,取到结束下标前为止。
当步长为负数,从字符串的最后一个字符开始,取到结束下标前为止。
字符串[ 开始下标 : : 步长 ] -----省略结束下标,当步长为正数,从开始下标开始,取到字符串的最后一个字符为止。
当步长为负数,从开始下标开始,取到字符串的第一个字符为止。
字符串[ : ] -----省略开始和结束下标,输出整个字符串。
字符串[ : : -1] -----使字符串倒序。
例如:
str3 = '012456adc'
print(str3[:5], str3[:5:-1]) # -----省略开始下标,当步长为正数,从字符串的第一个字符开始,取到结束下标前为止。
# 当步长为负数,从字符串的最后一个字符开始,取到结束下标前为止。
print(str3[2:], str3[3::-1]) # -----省略结束下标,当步长为正数,从开始下标开始,取到字符串的最后一个字符为止。
# 当步长为负数,从开始下标开始,取到字符串的第一个字符为止。
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/02.get char 12.27.py"
01245 cda
2456adc 4210
Process finished with exit code 0
三、字符串相关运算符
1.字符串支持的运算符:+、 *、 >、 <、 ==、 !=、 >=、 <=
支持数学运算符中的 + 和 * ,以及所有的比较运算。
a.+: 字符串1 + 字符串2 -----将字符串1与字符串2拼接在一起,产生一个新的字符串。
注意;字符串不能和数字混合相加。
b.*: 字符串 * N -----N是正整数,字符串重复三次,产生一个新的字符串
c.比较是否相等:
==、 != -----可以判断两个字符串是否相等或者不相等,返回值为 True 或 False 。
d.比较大小:
>、 < -----可以比较字符的编码值的大小。
规则:从第一个字符开始,依次往后找,找到第一个不相等的字符对儿,
判断它们的编码值的大小,谁的大,对应的字符串就大,
不会继续往下比了。
应用:判断是否是小写字母:'a' <= char <= 'z'
判断是否是大写字母:'A' <= char <= 'Z'
判断是否是字母:'a' <= char <= 'z' or 'A' <= char <= 'Z'
判断是否是中文:'\u4e00' <= char <= '\u9fa5'
print('adc' > 'abc') -----True
print('aac' > 'abc') -----False
例如:判断一个字符串中第三个字符是否字母
str1 = 'asd123asd456'
char = str1[2]
print('是否是字母:', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否是中文:', '\u4e00' <= char <= '\u9fa5')
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/03.字符串相关运算符 12.27.py"
是否是字母: True
是否是中文: False
Process finished with exit code 0
2.in 和 not in 操作 -----返还值为布尔值(True/False)
运用:字符串1 in 字符串2 -----判断 字符串2 中是否包含 字符串1 (判断 字符串1 是否是 字符串2 的子串)
字符串1 not in 字符串2 -----判断 字符串2 中是否不包含 字符串1 (判断 字符串1 是否不是 字符串2 的子串)
例如:
print('adc' in 'halo adc!') # 结果为:True
print('adc' in 'ahalo dc!') # 结果为:False
print('adc' not in 'halo adc!') # 结果为:False
print('adc' not in 'ahalo dc!') # 结果为:True
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/03.字符串相关运算符 12.27.py"
True
False
False
True
Process finished with exit code 0
3.len函数
len(序列) -----获取序列中元素的个数
len(字符串) -----获取字符串的长度(字符的个数),结果为一个整数
注意:一个转译字符的长度为 1 ,一个编码字符的长度为 1 ,一个空格的长度为 1 ,手动输入的一个Tab键长度为 4 。
例如:
print(len('adc')) # 结果为:3
str2 = input('请输入一个字符串:')
last_char = str2[len(str2) - 1]
print('字符串的最后一个字符为:', last_char)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/03.字符串相关运算符 12.27.py"
请输入一个字符串:asd
字符串的最后一个字符为: d
Process finished with exit code 0
四、格式字符串
1.什么是格式字符串
在字符串中,通过格式站位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化。
语法:
包含占位符的字符串 % (值1, 值2, 值3···)
占位符 -----%s (字符串)
%d (整数)
%f (小数, %.nf -->为保留小数点后 n 为小数)
%c (字符,当输入数字时,可以转换为对应编码值的字符)
% -----为固定写法。
() -----为固定写法,当字符串中只有一个占位符的时候,() 可以省略。
括号中的值 -----值与占位符的个数、类型、位置要一一对应。
例如:
name = input('请输入姓名:')
age = 21
sex = '男'
jieshao = '我叫%s,今年%d岁了,性别为:%s' % (name, age, sex)
print(jieshao)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/04.form String 12.27.py"
请输入姓名:绝世小丑
我叫绝世小丑,今年21岁了,性别为:男
Process finished with exit code 0
练习:输入一个字符串,用一个变量保存输入的字符串的相关信息:
str1 = input('请输入一个字符串:')
message = '%s的长度为:%d,最后一个字符是:%c' % (str1, len(str1), str1[-1])
print(message)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/04.form String 12.27.py"
请输入一个字符串:adc123
adc123的长度为:6,最后一个字符是:3
Process finished with exit code 0
也可以直接在print语句里面用:
print('%s --- %d --- %f --- %c' % ('asasda', 123, 456.789, 'j'))
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/04.form String 12.27.py"
asasda --- 123 --- 456.789000 --- j
Process finished with exit code 0
五、类型转换
语法:
类型名(数据) -----将指定的数据转换成指定的类型
int(数据) -----将其他数据转换成整型
float(数据) -----将其他数据转换成浮点型
bool(数据) -----将其他数据转换成布尔型
str(数据) -----将其他数据转换成字符串型
说明:
类型名 -----任何Python支持的或者自定义的类型都可以
数据 -----需要转换的对象(类型不同,要求可能不一样)
例如:
age = input('请输入年龄:')
print(type(age),age)
print('能否进入网吧:', int(age) >= 18)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
请输入年龄:17
<class 'str'> 17
能否进入网吧: False
Process finished with exit code 0
1.转换成整型
例如:
a = int(12.8) # 所有的浮点数都可以转换成整数,直接保留整数部分
b = int(True) # 所有的布尔值都可以转换成整数,True 化为 1 ;False 化为 0。
c = int('-123') # 只有去掉字符串的引号后,本身就是一个整数的字符串才能转换成一个整数
print(a, b, c)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
12 1 -123
Process finished with exit code 0
2.转换浮点型
例如:
a = float(12.8) # 所有的整数都可以转换成浮点数,在整数后面加 .0
b = float(True) # 所有的布尔值都可以转换成浮点数,True 化为 1.0 ;False 化为 0.0。
c = float('-123.456') # 只有去掉字符串的引号后,本身就是一个数字的字符串才能转换成一个浮点数
print(a, b, c)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
12.8 1.0 -123.456
Process finished with exit code 0
3.转换成布尔类型
Python中所有的数据都可以转换成布尔型
所有为空或零的值都会转换成 False,其他都为 True
例如:
a = bool(0) # 结果为:False
b = bool(-0.0) # 结果为:False
c = bool('False') # 结果为:True
d = bool([]) # 结果为:False
e = bool({}) # 结果为:False
f = bool(None) # 结果为:False
print(a, b, c, d, e, f)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
False False True False False False
Process finished with exit code 0
4.转换成字符串类型
Python中所有的数据都可以转换成字符串类型,而且转换的时候,就是单纯的在最外面加单引号或双引号
例如:
a = str(110)
print(type(a), a)
print('adc' + str(110)) # 把数字转换为字符串类型就可以用 + 进行运算
# 练习:输入三个数字,求三个数字的和
a = input('请输入第一个数:')
b = input('请输入第二个数:')
c = input('请输入第三个数:')
print('这三个数的和为:', float(a) + float(b) + float(c))
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
<class 'str'> 110
adc110
请输入第一个数:10
请输入第二个数:20
请输入第三个数:30
这三个数的和为: 60.0
Process finished with exit code 0
六、字符串使用方式
表中所有的字符串相关方法的使用都是:字符串.方法名()
1.capitalize()
字符串.capitalize() -----将指定的字符串的第一个字符转换成大写字母,并且返回新的字符串
注意:只有第一个字符是字母的时候才有效
例如:
str1 = 'adcsfg'
print(str1.capitalize())
运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
Adcsfg
Process finished with exit code 0
···
2.字符串的对齐方式:
字符串.center(width, fillchar) -----居中
字符串.ljust(width, fillchar) -----左对齐
字符串.rjust(width, fillchar) -----右对齐
width:决定新的字符串的长度;
fillchar:用来填充多出来位置的字符
例如:
str2 = 'adc'
print(str2.center(11, '_'))
print(str2.ljust(11, '_'))
print(str2.rjust(11, '_'))
'''
运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
____adc____
adc________
________adc
Process finished with exit code 0
···
3.count()
字符串1.count(字符串2) -----统计字符串1中,字符串2出现的字数
例如:
print('adcada'.count('a'))
运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
3
Process finished with exit code 0
···
4.isalpha
字符串.isalpha() -----判断字符串中是否全是字母
注意:非ASCII码表中的字符检查不出来。
例如:
print('adcada按时'.isalpha())
运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
True
Process finished with exit code 0
···
5.join
字符串1.join(字符串2) -----在字符串1插入到字符串2的每个字符之间
例如:
str3 = '12'.join('abcd')
print(str3)
运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
a12b12c12d
Process finished with exit code 0
···
6.split
字符串1.split(字符串2) -----以字符串2切割字符串1,返回的是一个列表
例如:
print('123/456/78'.split('/'))
运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
['123', '456', '78']
Process finished with exit code 0
···
====练习====
输入进班顺序,然后自动产生对应的学号,py1809xxxx
例如:输入1,产生学号:py18090001;输入23,产生学号:py18090023;以此类推。
解:
no = input('请输入序号:')
real_no = no.rjust(4, '0')
print('该生的学号为:py1809', real_no)
运行效果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
请输入序号:45
该生的学号为:py1809 0045
Process finished with exit code 0