字符串知识点补充:
- 字符串又叫字符集。
- 空串:"",''。
- 空格字符串:" ",' '。
- \t: tab键的长度是4,但\t的长度为1。
- 编码字符:十六进制数:1-9和a-f。
1. 获取字符
获取单个字符:
字符串一旦确定,字符串中的每一个字符都会对应唯一的下标(索引)用来表示字符在字符串中的位置。
下标是从0开始依次增加,0对应的是第一个字符,也可以是从-1开始依次减少,-1代表最后一个字符。
例如:
hello -> h->0 e->1 l->2 l->3 o->4
hello -> h->-5 e->-4 l->-3 l->-2 o->-1
(0,-5),(1,-4),(2,-3)(3,-2)(4,-1)
例如: "\tpytho\u4e00n" p->(1,-7)
- 语法:
字符串[下标] -获取字符串中指定下标对应的字符。 - 说明:
字符串 -只要是结果是字符串的表达式都可以,例如:字符串字面量,字符串变量。
[ ] -固定写法。
下标 -需要获取字符对饮的下标。
注意:这里的下标不能越界:IndexError: string index out of range(下标越界报错)
result = 'how are you!'[0]
print(result)
print('how are you!'[4])
print('how are you!'[-12])
str1 = 'china no.1'
print(str1[4])
print(str1[2],str1[-4])
![](https://img.haomeiwen.com/i15578238/bbaaf4cee4b148e2.png)
获取多个字符(字符串切片):
语法:
方法一:
字符串[开始下标,结束下标:步长]
-从开始下标开始,获取到结束下标前为止,每次下标值加上步长去获取下一个。
- 字符串 -只要是结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
- [] -固定写法
- 开始下标和结束下标:下标值(这里的下标可以越界:但一般不要越界)
- 步长:要求必须是整数,正数和负数都行;如果步长是正数,下标是从开始从前往后。如果步长是负数,下标是从开始从后往前。
开始下标和结束下标:
如果步长为正,要求:开始开始下标对应的位置必须结束下标对应的字符的位置的前面,否则结果是空串。
如果步长为负,要求:开始开始下标对应的位置必须结束下标对应的字符的位置的后面,否则结果还是空串。
str2 = 'hello python!'
print(str2[0:4:1])
print(str2[0:7:3])
print(str2[4:0:-1])
print(str2[-6:-2:2])
print(str2[0:-1:2])
print(str2[-1:0:-2])
print(str2[-1:-100:-1]) # 结束下标可越界
print(str2[100:-100:-1])
# 获取一个字符串中所有下标所有的奇数的字符,顺序获取:
str3 = 'w oshi yitia oxianyu'
print(str3[1:100:2])
str4 = "{'姓名:', '小明'}"
print(str4[1:-1:1]) #去掉花括号
![](https://img.haomeiwen.com/i15578238/7ae49c80ab925b5c.png)
方法二(省略步长):
字符串[开始下标:结束下标] ,步长为1,从开始下标到结束下标前为止,一个一个的取。
print('i am'[0:2])
方法三(省略开始下标和结束下标):
- 省略开始下标:
字符串[:结束下标:步长]
当步长是正数时,从字符串的第一个字符开始取到结束下标前为止。
当步长是负数时,从字符串的最后一个字符开始取到结束下标前为止。 - 省略结束下标:
字符串[开始下标::步长]
当步长是正数时,从开始下标开始取到字符串最后一个字符为止。
当步长是负数时,从开始下标开始取到字符串第一个字符为止。
str5 = 'when i was young'
print(str5[:6],str5[:6:-1])
print(str5[2:],str5[2::-1])
print(str5[:]) # 字符串全取
print(str5[::-1]) # 让字符串倒序
![](https://img.haomeiwen.com/i15578238/5962e8ab372e232a.png)
运算符:
- 字符串支持的运算符:
- 数学相关的+和*
- 比较运算符:>,<,==,>=,<=
也就是说字符串支持数学运算符+和*,以及所有比较运算符。
- 数学运算符的应用:
+: 字符串1 + 字符串2
作用:将两个字符串拼接在一起,组成一个新的字符串。
注意:字符串两边必须都是字符串,字符串和数字不能混合相加,会报错。
print('qwe' + 123 ) //TypeError: must be str, not int
*: 字符串 * N -N是正整数,字符串重复N次产生一个新的字符串。
new_str = 'abc' + '123'
print(new_str)
name = '张三'
message = '吃饭了吗?'
print(name + message + '.....')
new_str = 'abc' * 3
print(new_str)
print(('abc' + '123') * 2)
print('abc' + '123' * 2)
![](https://img.haomeiwen.com/i15578238/c150549a57ecbf79.png)
- 比较是否相等
==,!= 可以判定两个字符串是否相等或者不相等。
print('abc' == 'abc')
print('abc' == 'adc')
print('abc' != 'abc')
![](https://img.haomeiwen.com/i15578238/9a377b758ffd484a.png)
- 字符串比较大小:
从第一个字符开始依次往后找,找到第一个不相等的字符开始对比,判断它们的编码值的大小。
谁的编码值大,对应的字符串就大,就不会再往后比较了!
应用:
判断是否是小写字母:'a' <= char <= 'z'
判断是否为中文:'\u4e00' <= char <= '\u9fa5'
print('adc' > 'abcdef')
print('adc' > 'adcer')
print('dab' > 'abcde')
# 判断一个字符串中第三个字符是否是字母:
str1 = '33323.ssy23'
char = str1[2]
print('是否是字母', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
# 判断是否是中文
str2 = '为啥?'
char = str2[1]
print('是否是中文', '\u4e00' <= char <= '\u9fa5')
![](https://img.haomeiwen.com/i15578238/98da52655d16f9fe.png)
in和not in操作
字符串1 in 字符串2 ->判断字符串2中是否包含字符串1(判断字符串1是否是字符串2的子串)。
包含必须完整,字符串1是字符串2的一部分。
字符串1 not in 字符串2 ->判断字符串2中是否不包含字符串1(判断字符串1是否不是字符串2的子串)。
print('abc' in 'hello abc') # True
print('abc' in 'ahello bc') # False
print('abc' not in 'ahello bc') # True
print('abc' not in 'hello abc') # False
print('A' in 'hello Abc')
![](https://img.haomeiwen.com/i15578238/e6237d0210de75c5.png)
len函数:
- len(序列) 获取序列长度,获取序列中元素的个数.
- len(字符串) 获取字符串的长度,获取字符串中字符的个数
- 一个空格字符的长度是1,
手动在键盘上按一个TAB,一般是四个空格
print(len('abc')) # 返回结果是个整数。
str3 = input('请输入字符串')
n = len(str3)
print(str3[n - 1])
# 获取输入字符中的最后一个字符
last_char = str3[len(str3) - 1]
print(last_char)
str4 =' set'
str5 = '\tset'
print(len(str4))
print(len(str5))
print(len(str4),len(str5))
# 手动输入的Tab和\t对应的空格数可能不一样,但\t永远是一个字符。
![](https://img.haomeiwen.com/i15578238/6e55383a598f1b6d.png)
格式字符串:
什么是格式字符串?
在字符串中通过格式占位符来代替字符串中变化额部分,然后在后面通过数据或者变量确定变化。
语法:
包含占位符的字符串 % (值1,值2,值3...)
说明:一种固定的格式
- %d 整数
- %s 字符串
- %f 小数 %.Nf 保留N位小数
- $c 字符
% - 固定写法
()也是固定写法’字符串中只有一个占位符时()可省略。
()里面的值:()里面有什么值,以及值的类型,与前面的占位符个数,类型和位置一一对应。
name = input('姓名:')
message = '你好' + name
print(message)
# 加法解决。。。
name = input('姓名:')
age = 12
sex = '男'
# message = "我叫XXX,今年XX岁,性别:X"
message = '我叫%s,今年% d,性别是%c,月薪%.2f万'%(name, age, sex, 1.89)
print(message)
# 练习:
# 输入一个字符串,用一个变量保存字符串的相关信息,XXX的长度是XX,最后一个字符是X
str_input = input("请输入一个字符串:")
str1 = len(str_input)
str2 = str_input[str1 - 1]
message1 = '%s,的长度是%d,最后一个字符是%c' % (str_input, str1, str2)
print(message1)
![](https://img.haomeiwen.com/i15578238/cf7333ba5897b155.png)
类型转换:
格式:类型名(数据)
作用:将指定数据转换为指定类型。
说明:
类型名:任何python支持的,或者自定义的,都可以。
数据:需要转换的对象(类型不同要求可能不一样)。
转换实例:
int(数据)->将其他的数据转换成整型。
age = input('年龄:')
print(type(age),age)
print('是否能进入网吧',int(age) >= 18)
![](https://img.haomeiwen.com/i15578238/0a082935f7f66130.png)
1. 转换成整型:
a = int(12.34)
print(a)
浮点数可以转换成整型,直接保留整数部分
![](https://img.haomeiwen.com/i15578238/77cc941382a228e2.png)
布尔值转换成整型
b = int(True)
c = int(False)
print(b,c)
# 所有布尔可以转换为整型,True = 1, Flase = 0。
e = int('23')
# e = int('12.0') //不能转换
print(e)
![](https://img.haomeiwen.com/i15578238/ce386c65bb734ef8.png)
注:只有去掉引号之后本身就是整数的字符串才能转换为整型。
2. 转换为浮点数:
所有的整数都能转换为浮点数,在后面加.0。
布尔都可以转换为浮点数,True = 1.0, Flase = 0.0
去掉引号后本身是一个数字的字符串都能转换为浮点型
f = float(100)
g = float(True)
h = float('12')
3. 转换为布尔类型:
python中所有的数据都可以转换为布尔值。
所有为空为零的值都会转换为False,其他都是True。
i = bool(100)
print(i)
j = bool(-123)
print(j)
k = bool(0)
print(k)
l = bool('')
print(l)
m = bool([])
print(m)
n = bool({})
print(n)
o = bool(None)
print(o)
print(i,j,k,l,m,n,o)
![](https://img.haomeiwen.com/i15578238/86a6dfb6c139b9a8.png)
4. 转换从字符串类型:
python中所有的数据类型都可以转换为字符串,而且转换的时候只是单纯的在外面加''或者""。
p = str(100)
print(p)
# 输入三个数字,求三个数字的和。
num4 = input("请s输入第一个数字:")
num5 = input("请s输入第二个数字:")
num6 = input("请s输入第三个数字:")
print( float(num4)+ float(num5) + float(num6))
# inputstr = input("请输入三个数以逗号隔开:")
# print(inputstr)
![](https://img.haomeiwen.com/i15578238/056c4a3843d651a0.png)
网友评论