一、复习昨天所学习的内容
1.字符串(str)
什么是字符串?
通过双引号或者单引号引起来的内容就是字符串
2.Unicode编码
a.python中的字符串中字符采用的是Unicode编码,Unicode编码,是通过两个字节来对一个字符进行编码,他几乎包含了世界上所有的符号。
b.ASCII编码:通过一个字节来对一个字符进行编码
c.Unicode编码表中包含了ASCII编码表
d.chr(数字):获取数字在Unicode编码表中对应的字符,返回的是只有一个字符的字符串。
e.ord(字符):获取字符对应的Unicode编码。
二、字符串中的元素
1.阻止转义
在字符串的最前面可以添加r/R来阻止字符串中的转义字符转义
str1=r’how are you\n fine’
print(str1) 结果为: how are you\n fine
2.python中可以把字符串看成是一个序列(容器),容器中的内容是字符,每一个字符可以称为字符串中的元素
字符串是一个不可变的序列,有序(不可变指的是字符串中的每个字符,以及每个字符的位置不可变)
3.获取字符串中的单个字符
语法:字符串(下标) –> 根据下标获取字符串中的字符
说明:a.字符串:可以是字符串的变量也可以是字符串值
b.[]:固定写法
c.下标:0~字符串长度-1;-1 ~ -长度
注意:下标是整数;并且下标不能越界
python中每个字符串中的字符都会对应一个下标,下标是根据字符在字符串中的位置,从前往后依次增加的(第一个)
str3=’python’
p->0 y->1 t—>2 …..n->5
n->-1 o->-2 h->-3 ……p->-6
print(str3[3]) 获取正数3+1个元素 输出结果为: h
print(str3[-2]) 获取倒数第二个字符(元素) 输出结果为:o
print(‘hello’[-1]) 获取hello倒数第一个字符 输出结果为:o
index=2
print(str3[index]) 输出的结果为:t
print(str3[6//2]) 输出结果为:h
输出结果为:h、o、o、t、h
练习:获取’gond good study\n day day up!’
注意:一个空格算一个字符,一个转义字符算一个字符,一个制表符也是算一个字符
str4=’gond good study\n day day up!’
print(str4[-11],str4[17])
输出的结果为:d、d
4.获取字符串中的部分字符(切片)
a.语法:字符串[起始下标:结束下标] –>获取字符串中从起始下标开始,到结束下标结束下标前的所有的字符(默认步长为1)
注意:起始下标对应的字符要在结束下标对应的字符前面,否取不到值
str5=’同九年,汝何秀!’
print(str5[1:5])
print(str5[5:-1])
输出的结果为:九年,汝
b.语法:字符串[起始下标:结束下标:步长] –>从起始下标开始获取,每步长获取一个获取到结束下标前为止
步长为正:从前往后取(起始下标对应的字符要在结束下标对应的字符前面,否取不到值)
步长为负:从后往前取(起始下标对应的字符要在结束下标对应的字符后面,否取不到值)
str5=’海贼王、一拳超人、一人之下、进击的巨人’
print(str5[1:10:2]) 结果为:贼、拳人一
print(str5[10:1:-2]) 结果为:人、超一王
c.切片时下标可以省略,省略不同的下标有不同意义
省略起始下标:字符串[:结束下标] —>从开头开始取(注意:这儿开头可能是第一个字符也可能是最后一个字符)
str6=’阁下和不同风起,扶摇直上九万里’
print(str6[:4]) 结果为:阁下和不
print(str6[:4:-1]) 结果为:里万九上直摇扶,起风
省略结束下标:字符[起始下标:] –>从开始下标取,取完为止
print(str6[-4:]) 结果为:上九万里
print(str6[-4::-1]) 结果为:上直摇扶,起风同不和下阁
两个下标都省:字符[:] –>全部取完
print(str6[:]) 结果为:阁下和不同风起,扶摇直上九万里
print(str6[::-1]) 结果为:里万九上直摇扶,起风同不和下阁
str7=str6[::-1]
print(str7) 结果为:里万九上直摇扶,起风同不和下阁
注意:切片的时候可以越界
三、字符串运算符 (+、*和比较运算符)
1.字符串的+号运算符
字符串1+字符串2 –>将字符串1和字符串2拼接在一起产生一个新的字符串
注意:如果加好两边要么都是数字,要么都是字符串,不能一样一个
str1=’玉树临风美少男’
str2=’揽镜自顾夜不眠’
print(str1+str2) 输出的结果为:玉树临风美少男揽镜自顾夜不眠
print(str1+’,’+str2+’!’) 输出的结果为:玉树临风美少男,揽镜自顾夜不眠!
2.*
字符串1*n —>字符串1重复出现n次,产生一个新的字符串
n必须是整数
str3=’家有千金,行止由心!’
print(str3*3) 输出的结果为:家有千金,行止由心!家有千金,行止由心!家有千金,行止由心!
先算乘再算加
str4=str1+str3*2
print(str4) 输出的结果为:玉树临风美少男家有千金,行止由心!家有千金,行止由心!
比较运算符
判断相等
print(‘abc’==’abc’) 判断两个字符串的值是否相等
print(‘abc’!=’ab’) 输出的结果为:True
字符串比较大小:比较两个字符串中从前往后每个字符的编码值得大小,比较两个字符不相同为止
print(‘zabc’>’zab’) 输出的结果为:True
判断一个字符是否是数字字符,判断一个字符是否是字母字符
char=’H’
print(‘0’<=char<=’9’) 判断char是否是数字字符 输出的结果为:False
print(‘a’<=char<=’z’ or ‘A’<=char<=’Z’) 判断char是否是字母 输出的结果为:True
4.in和not in
# 字符串1 in 字符串2 —->判断字符串1是否在字符串2中(字符串2中是否包含字符串1),结果是布尔值
print(‘ab’in’aaabc’) 输出的结果:True
print(‘ab’in’acb’) 输出的结果为:False
5.len()函数
len是python内置函数,功能·是用来获取序列的长度(容器中元素的个数)(len(序列))
字符串的长度就是字符串中字符的个数
print(len(‘hello’)) 输出的结果为: 5
str5=’床前明月光\n疑是地上霜!’
print(len(str5)) 输出的结果为:12
print(str5[len(str5)-1]) 输出的结果为:!
print(str5[-len(str5)]) 输出的结果为:床
四、格式字符串
字符串内部,通过格式占位符来表示字符串变化的部分,然后在后面用值来填充变化的部分
语法:带有占位符的字符串%(给占位符赋值的值)
注意:前有多少个占位符,后面()中就必须有多少值。并且值的个数和值的类型要和前面的占位符一一对应
a.%s —>字符串
b.%d —>整数
c.%f —>小数
d.%.nf –>保留小数点后面n位小数(五舍六入)
name=’李四’
age=20
money=10.567
message=’姓名:%s 年龄%d 薪资%.2f’ %(name,age,money)
print(message) 输出的结果为:姓名:李四 年龄20 薪资10.57
print(‘%d:%c’ % (97,97)) 输出的结果为:97:a
五、字符串的内置函数
python内部给我们提供很多字符串相关的方法,使用方式:字符串。方法名(参数名)
1.capitalize():将字符串的第一个字符转换为大写,返回一个新的字符串
注意:如果第一个字符不是字母,就不转换
str1=’love’
new_str=str1.capitalize()
print(new_str) 输出的结果为:Love
2.字符串对齐
a.center(width,fillchar)
b.ljust(with,fillchar)
c.rjust(width,fillchar)
width –> 长度,新字符串的总共的长度 fillchar–>剩下部分字符就是长度是1的字符串长度(只能填单个字符)
str2=’xxx’
new_str=str2.center(7,’0’)
print(new_str) 输出的结果为: 00xxx00
new_str=str2.ljust(7,’0’)
print(new_str) 输出的结果为:xxx0000
new_str=str2.rjust(7,’0’)
print(new_str) 输出的结果为: 0000xxx
练习:根据进班顺序产生对应的学号。学号要求
例如:num=1 —>python18070001 num=11 –>python18070011
num=’11’
new=’python1807’+str(num).rjust(4,’0’)
print(new) 输出的答案为:python18070011
3.字符串1.count(zi字符串2) –>统计字符串1中字符串2的个数
print(‘abcdabcdaaaa’.count(‘ab’)) 输出的结果为: 2
print(‘hello world’.count(‘l’)) 输出的结果为:3
4..字符串1.endswith(字符串2) —>判断字符串1是否以字符串2结尾
字符串1.startswith(字符串2) —>判断字符串1是否以字符串2开头
str1=’when i was’
print(str1.endswith(‘as’)) 输出的结果为:True
print(str1.endswith(‘when’)) 输出的结果为:False
5.字符串1.find(字符串2)–>在字符串1中查找字符串2,返回第一个到的开始下标,如果没有就返回-1
str1=’when i was young,i have a dream’
print(str1.find(‘was’)) 输出的结果为:7
print(str1.find(‘wasaa’)) 输出结果为: -1
6.isnumeric()
数字表示True中文也行,其他表示False
print(‘1234’.isnumeric()) 输出的结果为:True
7.isTitle()
标题化:每个单词首字母大写,其他字母小写
8.字符串1.join(字符串2) –>将字符串1插入到字符串2中每个字符之间,产生一个新的字符串
print(‘aaa’.join(‘xyz’)) 输出的结果为: xaaayaaaz
六、day4作业
1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello Eric, would you like to learn some Python today?”。
name=’Eric’
print(‘hello ‘+name+’,’+’would you like to learn some Python today?’)
\2. 调整名字的大小写: 将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。
name=’tom’
# 首字母大写
new_name=name.capitalize()
print(new_name) 输出为:Tom
# 小写方式
new_name=name.lower()
print(new_name) 输出为:tom
#大写方式
new_name=name.upper()
print(new_name) 输出的为:TOM
\3. 名言: 找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输出应类似于下面这样(包括引号):
celebrity=’邓小平’
str1= ‘“不管黑猫白猫,捉住老鼠就是好猫”’
print(celebrity+’曾说过:’+str1)
# 邓小平曾说过:“ 不管黑猫白猫,捉住老鼠就是好猫 ”
4.名言2: 重复练习3,但将名人的姓名存储在变量famous_person 中,再创建要显示的消息,并将其存储在变量message 中,然后打印这条消息。
famous_person=’邓小平’
str1= ‘“不管黑猫白猫,捉住老鼠就是好猫.”’
message=famous_person+’曾说过:’+str1
print(message)
# 邓小平曾说过:“ 不管黑猫白猫,捉住老鼠就是好猫 ”
\5. 剔除人名中的空白: 存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合”\t” 和”\n” 各一次。 打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函数lstrip() 、rstrip() 和strip() 对人名进行处理,并将结果打印出来。
name = ‘ \n\t 小明 \t\n ‘
print(name)
print(name.lstrip())
print(name.rstrip())
print(name.strip())
结果为:
小明
小明
小明
小明