获取字符
1.获取单个字符
字符串中没一个字符都会对应一个下标(索引),用来表示字符在字符串中的位置
下标是从0开始依次增加 0 对应的是第一个字符 0到字符串长度减一
也可以是从-1开始依次减小 -1 代表最后一个字符 -1到负的字符串长度
例如: 'hello': 'h'-->0 -5
'e'-->1 -4
'l'-->2 -3
'l'-->3 -2
'o'-->4 -1
a.获取单个字符
字符串[下标/索引]---->获取指定下标对应的字符
b.说明
字符串 ---只要结果是字符串都可以
[] --- 固定写法
下标 --- 需要获取的字符的下标,下标不能越界(不能超出字符串下标范围)
IndexError --- 下标错误
result='how are you!'[3]
print(result)
str1 = '你个糟老头子坏得很'
print(str1[4]) # 获取'头'这个字符
2.获取一部分字符
方法一:
a.语法:
字符串[开始下标:结束下标:步长]---从开始下表开始获取到结束下标前为止,
每次下标值加步长
b.说明:
字符串 ---只要结果是字符串都可以
[] --- 固定写法
开始下标 ,结束下标(获取不到的) -- 字符串中字符对应的下标(这儿下标可以越界)
步长 --- 必须是整数。如果步长是整数是从开始下标从前往后获取
如果步长是负数是从开始下标从后往前获取
c.注意:
1.当步长为正,开始下标对应的字符的位置必须在结束下标对应的字符的位置的后面
当步长为负,开始下标对应的字符的位置必须在结束下标对应的字符的位置的前面
否则结果为空
str2='hello python!'
print(str2[0:4:1])
print(str2[0:-1:2])
print(str2[-1:0:-2])
print(str2[-1:-20:-1]) #结束下标越界 !nohtyp olleh
print(str2[100:-100:-1]) #开始下标结束下标都越界 !nohtyp olleh
# 获取一个字符串中所有下标是奇数的字符(顺序)
str3='asdsgudhgioi'
print(str3[1::2])
方法二:
字符串[开始下标:结束下标] -- 步长为1 开始下标到结束下标前为止,一个一个的取
方法三:
字符串[:结束下标:步长] -- 省略开始下标,当步长是正数,从最开始往后面取到结束下标前
当步长是复数,从字符串最后开始取到结束下标前为止
方法四:
字符串[开始下标::步长] -- 省略结束下标,当步长是正数,从开始下标开始取到最后一个字符
当步长是复数,从开始下标取到字符串的第一个字符
str4='asdad914928498'
print(str4[:6:1])
print(str4[1::1])
print(str4[:])
字符串相关运算
1,字符串支持的运算符:+ * 比较运算符
a.加法
字符串1+字符串2 将两个字符串拼在一起产生一个新的字符串
字符串不能和数字混合相加
b.乘法
字符串*n -- 字符串重复n次产生一个新的字符串
str1='123'
str2='asd'
new_str=str1+str2
print(new_str)
new_str1=str1*3
print(new_str1)
c.比较相等
==,!= 判断两个字符串是否相等
print('abc'=='abc')
print('abc'!='abc')
d.比较大小
从第一个字符开始一次往后判断第一个不相同的字符断,然后判断谁的编码值的大小,谁的编码值大,
对应的字符串就大,就不会再往后比较了
print('azc'>'abc') #True
print('bcvfhsijfbskjd'<'ahasgfliavkdlgaelrigw')
2.in 和 not in
a.字符串1 in 字符串2 --> 字符串2中是否包含字符串1,判断字符串1 是否是字符串2 的子串
print('abc' in 'asdasdasabc') # True
print('abc' not in 'asdasdasabc') #False
3.len(序列) --> 获取序列长度(获取序列中元素的个数)
len(字符串)--> 获取字符串的长度,获取字符的个数。结果是整数
注意:一个转义字符和一个编码字符的长度是一
一个空格长度是一,
print(len('ahsflsfliwueiueroiqoiqowieoqweoqhkjskcbzxbc'))
str1=input('请输入:')
print(str1[len(str1)-1])
str1='\tas'
print(len(str1))
print(str1)
格式字符串
1 什么是格式字符串,通过格式占位符来代替字符串中变化部分然后在后面通过数据或者变量确定占位符
语法:
包含占位符的字符串%(值1,值2,值3)
占位符:
%s (字符串占位符)
%d (整数数字占位符)
%f (小数数字占位符) --%.nf(保留小数点后n位小数)
%c (字符占位符) --- 可以传一个编码
% --- 固定写法
() --- 固定写法(字符串中只有一个占位符的时候()可以省略)
值 --- 值和占位符要一一对应,个数、类型、位置都要对应
name = input('请输入名字:')
age = int(input('请输入年龄'))
sex = '男'
money = float(input('请输入月薪:'))
message = '我叫%s,今年%d岁,性别:%s,月薪%.3f万'%(name,age,sex,money)
print(message)
练习:输入一个字符串,输出一串信息,用一个变量保存字符串相关信息,xxx的长度是什么,最后一个字符是什么
str1=input('请输入字符串:')
message='%s的长度是%d,最后一个字符是%s'%(str1,len(str1),str1[-1])
print(message)
类型转换
1、类型转换
a. 语法: 类型名(数据)---> 将指定数据转换成指定类型
b. 类型名: 可以是任何pyhton支持的类型名,或者自己定义的类型
数据 : 需要转换的对象(类型名不同,要求会不一样,具体看是什么类型)
2、转换实例:
int(数据) --> 将数据转换成整形
float(数据)-->将数据转化成浮点型
bool(数据)-->将数据转化成布尔值
str(数据)-->将数据转化成字符串
age = input('输入年龄:')
print(type(age),age) # 字符串
a,转换成整形 int(数据)
a = int(12.8) # 12 直接去掉小数点后面的数
b = int(True) # 1 布尔转换成整形 True --> 1 False --> 0
c = int('23') # 只有去掉引号后本身就是整数的字符串才能转换成整形
print(a,b,c)
b.转换成浮点型 float(数据)
a = float(100) # 所有整数都可以转化成小数
b = float(True) # True -- > 1.0 False -- > 0.0
c = float('12') # 去掉引号后本身就是一个数T字的字符串才能转化成浮点型
print(a,b,c)
c. 转换成布尔 bool(数据) 所有为空为0的值都会转换成
False,其他的全部都是True
python中所有的数据都可以转换成布尔
a = bool(0)
b = bool(12.5)
c = bool('')
print(a,b)
d. 转换成字符串 str(数据) 所有数据都可以转换成字符串,就是在数据外面加引号
a = input('请输入数字1:')
b = input('请输入数字2:')
c = input('请输入数字3:')
result = float(a)+float(b)+float(c)
print('三个数的和为:',result)