day 总结
什么是字符串(str)
字符串是python内置的一种容器形数据类型,不可变,但是有序
''将单引号或者双引号作为容器,里面可以根据情况放多个字符
不可变:
"asfjlkdfj fcf"
顺序跟字符(内容)都不可变
有序:一旦字符串确定,字符串中的位置就固定(每个字符位置确定)
2. 字符串中的内容- 字符
python中只有字符的概念,没有字符对应的数据类型
字符串的基本单元就是字符,又叫字符串的元素
a 基本字符指的是-数字,字母,常用符号、中文、日语、韩语等
'12'
'sadlkr3'
'shusdk刷销售单位及'
转义字符-通过转义符号\后面跟不通的符号来表示特殊功能或者特殊意义的字符
\n 换行 ' 表示一个单引号, " 一个双引号 , \ 表示一个反斜杠 、\t 制表符
str1 = 'a'bc\nabs'
print(str1)
阻止转义:在字符串的最前面加r\R,可以阻止字符传中的转义字符转义(一般用于正则表达式)
str2 = r'\tabc\n123\tx'"z'
print(str2)
c. 编码字符 - \u后面跟四位的16进制数,来表示一个字符。这个4位的16进制数对应的值是字符的编码值
字符编码
python 中的字符采用的是unicode编码
计算机存储数据的时候只能存储数字,而且存的是数字的补码(是以二进制的格式进行存储的)
bin() # 获取制定数字的二进制 0b
oct() # 获取制定数字的8进制 0o
hex() # 获取制定数字的16进制 0x
print(bin(15))
编码:每个字符在计算机中存储的时候都会对应一个固定且唯一的数字,这个数字就是这个字符的编码
每个字符和数字的一一对应关系就是编码表,常见的编码有:ascii码表和unicode编码表
ascii码表只对数字字符、字母字符、英文符号进行编码
unicode(万国码)编码表是对ascii表的扩充,能够对世界上所有的字符编码:4e00 - 9fa5
chr(编码值) 获取编码值对应的字符
ord(字符) - 获取字符对应的编码值,注意,字符值就是长度是1的字符串
print(ord('杨'), ord('好'))
print(chr(100))
print(chr(0x64))
"""
num = 0
for code in range(0x4e00,0x9fa5):
print(chr(code),end=',')
num += 1
if num % 20 == 0:
print()
print(num)
"""
str3 = "\u4fff\u5faa\u00c8"
print(str3)
print(hex((200)))
print('a'> 'Z')
"""--auhtor--==yanghao"""
1.获取字符 - 取字符串的内容
a 获取单个字符 :
"""
语法: 字符串[下标] 根据下标获取字符串对应的字符
说明:字符串- 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等等都可以
[]--固定写法 ,
下标 --又叫索引,指的是字符串中字符的位置,字符串固定位置就固定,下标的范围是0开始到字符串的长度减一
0 表示第一个字符,1表示第二个。。以此类推(通用的)
下标范围还可以是-1到字符串长度减1,-1 表示倒数第一个。。
"""
注意,获取单个字符的时候下标不能越界
str = 'python' # 'p':0/-6 'y':1/-5
print(str[0])
'python'[3]
result = 'python'[3]
print(result)
print(str(100))
1.2 获取部分字符(字符串切片)
"""
语法:字符串[开始下标:结束下标:步长]--从开始下标开始获取到结束下标前一个为止
说明:字符串--
[:] --固定写法
开始下标、结束下标 --下标值,开始下标值可以取到,结束下标对应的字符取不到
步长:--必须是正整数或者负整数
注意:下标可以越界
如果步长为正,从前往后获取,开始下标对应的字符要在结束下标对应的字符前才能获取到值
如果步长负,从后往前获取,开始下标对应的字符要在结束下标对应的字符的后面才能获取到值
"""
str2 = 'sdjksjfrs1323'
print(str2[0:100:1]) # 下标可以越界
"""
切片的语法可以对步长、开始下标、结束下标进行省略:
1.省略步长
字符串[开始下标:结束下标] == 字符串[开始下标:结束下标:1]
"""
2. 省略开始下标
"""
字符串[:结束下标:步长]
"""
str3 = 'abcef123456'
print(str3[:3:-1])
print(str[:3:1])
print(str3[2:])
print(str3[2::-1])
print(str3[:]) # 复制
print(str3[::-1]) # 倒叙
1.3 遍历字符串 - 一个一个取出所有的字符串
"""
方法1 :直接遍历
for 变量 in 字符串:
循环体
方法二:通过遍历下标来遍历字符串
for 变量 in range(字符串长度):
字符串[下标]
"""
for char in 'hello':
print(char)
str33 = 'when i was young'
len(字符串) - 获取字符串长度,返回一个数字,字符串长度值得是字符串的个数
for index in range(len(str33)):
print(index,str33[index])
index = 0
while index <len (str33):
print(index,str33[index])
index += 1
len()
"""--auhtor--==yanghao"""
字符串相关运算
数学运算:字符串支持加法运算跟乘法运算
语法: 字符串1 + 字符串2 -将两个字符串拼接在一起产生一个新的字符
new_str = 'abc' + '123'
print(new_str)
new_str += '你好!' # new_str = new_str + '你好!'= ’abc123' + '你好'
print(new_str)
注意:加好两边,必须都是字符串,或者都是字符串,数字和字符串不能混合相加!
语法: 字符串* 正整数 / 正整数* 字符串-制定的字符串重复指定次数,产生一个新的字符串
print('abc'3)
print(''*10)
比较运算符: 字符串支持所有的比较运算符
==,!= --判断两个字符串是否相等
print('abc'=='abc')
两个字符串比较大小,让字符串中相同位置的字符--比较(从前往后),找到第一对不相等的字符判断其编码值大小
print('abcde'<'abz')
char = 'a'
应用
判断一个字符是否是字母: a <= char <= 'z' or 'A' <=CHAR <= 'Z '
书否是数字: '0'<= char <=' 9'
判断是否是中文:'\u4e00'<= char<= '\u9fa5' / 0x4e00<= ord(char) <= 0x9fa5
练习:输入任意一个字符串,统计输入内容中字母的个数
例如:输入'abc123你好世界end---'结果是:6
str = input('请输入字符串:')
count = 0
for char in str:
if 'A' <= char <= 'Z' or 'a'<=char<= 'z' :
count += 1
print('字母的个数',count)
3 in 和 not in 操作
字符串1 in 字符串2 --判断字符串1是否在字符串2中
字符串1 not in 字符串2 --判断字符串1是否不在字符串2中
print('abc' in '123abc==') # True
print('abc' not in 'a12bc3==') False
4 常用内置函数
len(字符串) -- 求字符串长度
str(数据) - 将其他数据转换成字符,所有的数据都能转换成字符串,直接在外面加引号
print(int('+23')) # 只有去掉引号后,本身就是一个整数的字符串才能转换成整形
print(bool('')) # 除了空串会转成False ,其他字符串都会转成True
str2 = ''
if not str2 :
print('不是空串')
"""--auhtor--==yanghao"""
5.字符串的对象方法
字符串.方法()
str4 =' hello'
字符串.capitalize() 字符串中首字母大写
字符串.center(width,fillchar)
产生一个长度为width的新字符串,新字符串中元字符串居中,剩余部分用fillchar填充
字符串。ljust (width,fillchar)左对齐,
字符串。rjust (width,fillchar)右对齐
num = 1
study_id = str(num).rjust(3,'0')
print(study_id)
字符串.zfill(width)--产生一个宽度是width的字符串,原字符串在右边,前面用0填充
1.输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符) 例如: 输入'abcd1234 '输出'bd24'
str = input('请输入字符串:')
print(str[1::2])
2.输入用户名,判断用户名是否合法(用户名长度6~10位)
str1 = input('请输入用户名:')
if 6 <= len(str1) <= 10:
print('用户名合法')
else:
print('用户名不合法')
3.输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)例如: 'abc' — 合法'123' — 合法 ‘abc123a’ — 合法
str2 = input('请输入用户名:')
for char in str2:
if '0 '<= char <= '9' and ('a'<= char <= 'z'and 'A'<= char <= 'Z') :
print('用户名合法;')
else:
print('用户名不合法')
print('用户名不合法')
4.输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)例如: 'abc' — 不合法 ** '123' ** — 不合法'abc123' — 不合法'Abc123ahs' — 合法
5.输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串例如:输入'abc1shj23kls99+2kkk'输出:'123992'
str5 = input('请输入用户名:')
for char in str5:
if '0 '<= char <= '9' :
print(char,end = '')
6.输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出例如: 输入'a2h2klm12+'输出'A2H2KLM12+'
str6 = input('请输入一个字符串:')
new_str = str6.upper()
print(new_str)
7.输入一个小于100的数字,产生对应的学号例如: 输入'23',输出'py1901023'输入'9', 输出'py1901009'输入'123',输出'py1901123'
str = input('请输入一个小于100的数字:')
str1 = 'py1901'
str2 = str.rjust(3,'0')
new_str = str1+str2
print(new_str)
8.输入一个字符串,统计字符串中非数字字母的字符的个数例如: 输入'anc2+93-sjd胡说'输出: 4 输入'==='输出: 3
str8 = input('请输入用户名:')
count = 0
count1=int(len(str8)-count)
for char in str8:
if '0 '<= char <= '9' or ('a'<= char <= 'z'or 'A'<= char <= 'Z') :
count += 1
print('数字字母的个数:',count)
count1 = int(len(str8)-count)
print('非数字字母的个数:',count1)
9.输入字符串,将字符串的开头和结尾变成'+',产生一个新的字符串例如: 输入字符串'abc123', 输出'+bc12+'
str9 = input('请输入一个字符串:')
new_str = str9[1:-1].center(len(str9),'+')
print(new_str)
10.输入字符串,获取字符串的中间字符例如: 输入'abc1234'输出: '1'输入'abc123'输出'c1'
str10 = input('请输入字符串:')
num = int(len(str10)/2)
if len(str10) %2 ==0 :
print(str10[num-1],str10[num],end = '')
else:
print(str10[num])